Création
d'entreprise
Posez votre question Signaler

[JAVA] Requêtes HTTP par 2 IPs

bill0ute - Dernière réponse le 19 déc. 2009 à 17:15
Bonjour,
J'ai hébergé une application Java sur un VPS (Debian 5) qui possède 2 IPs fixent.
J'aimerais pouvoir, de mon application, exécuter des requêtes HTTP de l'une et l'autre adresse IPs, totalement dynamiquement : pouvoir jongler entre les deux.
Est ce possible ?
Et si oui, comment ? :)
Merci d'avance
Bill0ute
Lire la suite 

[JAVA] Requêtes HTTP par 2 IPs »

10 réponses
Réponse
+0
moins plus
La seule approche que je vois, c'est de jongler en corrigeant dynamiquement les routes de ton linux si tu as une interface réseau par IP, sinon de changer l'IP de l'interface réseau si tu n'en as qu'une.

Dans les deux cas, il faut bien évidemment des droits root ou utiliser un sudo. Pour ajouter et supprimer une route, regarde le man de la commande route, il y a plein d'exemples :

man route
sudo route add -net 192.168.1.0 netmask 255.255.255.0 eth0
sudo route add default gw eth0


Pour changer d'IP, il faut utiliser la commande ifconfig :

sudo ifconfig eth0 192.168.1.10


Attention

Changer d'IP à l'arrache peut être problématique dans un réseau si cette IP est déjà utilisée par un autre équipement réseau (PC, ...).

Si tu reçois tes IP dynamiquement par DHCP (c'est typiquement le cas dans un réseau local géré par une box, qui utilise un serveur DHCP), il faut veiller à ne pas "squatter" à l'insu de ce serveur une IP qu'il est susceptible d'attribuer à un équipement réseau. Il suffit par exemple de choisir une adresse IP en dehors de la plage d'adresse qu'il maintient.

De manière plus générale, il faut veiller à ce que cette seconde IP ne soit pas déjà utilisée, car sinon le réseau ne sauras pas forcément router correctement le trafic.

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Faire du NAT ce n'est pas possible?
Comme ça il n'y a rien à jongler.
Ajouter un commentaire
Réponse
+0
moins plus
Je ne vois pas trop comment tu t'en sortirais en NAT, si tu peux détailler...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour à vous deux :)

@mamiemando : ta solution me parait très bien. Si je comprend bien, il faudrait exécuter ces requêtes dans mon application Java pour que cela change "dynamiquement" l'ip ?

@lami20j : je ne connais pas du tout le NAT. Comme le dit mamiemando, je veux bien aussi quelques détails pour savoir où chercher :)

Merci :)
Ajouter un commentaire
Réponse
+0
moins plus
@mamiemando : ta solution me parait très bien. Si je comprend bien, il faudrait exécuter ces requêtes dans mon application Java pour que cela change "dynamiquement" l'ip ?

Exactement :-) Ceci dit n'oublions pas que java tourne dans une machine virtuelle. Je ne sais pas dans quelle mesure il est possible d'intéragir avec la machine (notamment exécuter des commandes shell) en Java. En outre je doute qu'il existe des fonctions en java qui permettent directement de manipuler la machine "réelle" autrement que via une commande shell comme un ifconfig.
Ajouter un commentaire
Réponse
+0
moins plus
Re,


Je ne vois pas trop comment tu t'en sortirais en NAT,
Moi non plus, d'ailleurs c'était une question/supposition. ;-)

si tu peux détailler...
Ce n'est pas à moi de détailler mais à bill0ute ;-)

S'il a une seule interface alors oublie le NAT.

Si tu as une interface réseau par IP, alors si je ne me trompe pas, les interfaces peuvent communiquer, par le biais de la chaîne FORWARD de ton firewall, et la table NAT s'occupera de la traduction.
bill0ute - 19 déc. 2009 à 15:37
Ce n'est pas à moi de détailler mais à bill0ute ;-)

Je peux essayé de te détailler si tu veux, même si je suis plutôt noobie en réseau virtuel Linux :)

Dit moi quel point n'est pas clair ? :)

@mamiemando : j'ai trouvé sur un forum ce code, qui permettrait d'exécuter une commande Linux Runtime.getRuntime().exec("Macommande");
Qu'en penses tu ?

(J'ai trouvé ce code ici :http://forum.hardware.fr/...
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Ton serveur a une interface par ip ou pas?
En root que t'affiche la commande (tu peux caché les ip pour l'affichage)
ifconfig -a
bill0ute - 19 déc. 2009 à 16:01
Ton serveur a une interface par ip ou pas ?

Oui. Si j'en crois le fichier /etc/network/interfaces :

auto venet0:0
iface venet0:0 inet static
address 78.xxx.xxx.52
netmask 255.255.255.255
broadcast 0.0.0.0

auto venet0:1
iface venet0:1 inet static
address 78.xxx.xxx.66
netmask 255.255.255.255
broadcast 0.0.0.0
Ajouter un commentaire
Réponse
+0
moins plus
Re,

En fait tu as une seule interface venet0 sur la quelle sont configurées deux interfaces virtuelles.

Cette interface doit être lie un une interface physique (eth0 par exemple), mais tu n'as pas accès à cette interface vu que tu es chez un hébergeur.
Quelque chose de ce genre je suppose

                         Routeur
                            |
                Interface physique - eth0
                            |
                            |
                           vps
                        (venet0)
                      +          +
                      |          |
                   venet0:0   venet0:1

Ce qui m'a fait pensé à NAT.
Je ne connais pas le comportement d'iptables dans le cas des interfaces virtuelles.
Ajouter un commentaire
Ce document intitulé « [JAVA] Requêtes HTTP par 2 IPs » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?