[JAVA] Requêtes HTTP par 2 IPs

Fermé
bill0ute - 19 déc. 2009 à 01:14
 lami20j - 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
A voir également:

8 réponses

mamiemando Messages postés 33616 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 3 avril 2025 7 837
19 déc. 2009 à 13:32
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
0
Salut,

Faire du NAT ce n'est pas possible?
Comme ça il n'y a rien à jongler.
0
mamiemando Messages postés 33616 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 3 avril 2025 7 837
19 déc. 2009 à 14:14
Je ne vois pas trop comment tu t'en sortirais en NAT, si tu peux détailler...
0
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 :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33616 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 3 avril 2025 7 837
19 déc. 2009 à 14:33
@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.
0
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.
0
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 :https://forum.hardware.fr/hfr/Programmation/Java/java-lancer-commande-sujet_68044_1.htm
0
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
0
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
0
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.
0

Discussions similaires