Spécification d'une adresse IP pour les connexions sortantes sur un hôte multi IP

15

un de mes serveurs (Debian 5.0.6) a deux adresses IP publiques sur la même interface. Cela fonctionnait bien pendant des mois, mais tout à coup, il utilise "les mauvaises" adresses IP pour les connexions sortantes. C'est un problème car la recherche inversée ne correspondra pas et les e-mails obtiennent donc des points de spam.

eth0      Link encap:Ethernet  Hardware Adresse 00:1b:21:14:8e:9c  
          inet Adresse:81.169.180.51  Bcast:81.169.180.51  Maske:255.255.255.255
          inet6-Adresse: fe80::21b:21ff:fe14:8e9c/64 Gültigkeitsbereich:Verbindung

eth0:0    Link encap:Ethernet  Hardware Adresse 00:1b:21:14:8e:9c  
          inet Adresse:85.214.157.120  Bcast:85.214.157.120  Maske:255.255.255.255


Kernel-IP-Routentabelle
Destination     Router          Genmask         Flags Metric Ref    Use Iface
81.169.180.1    0.0.0.0         255.255.255.255 UH    0      0        0 eth0
0.0.0.0         81.169.180.1    0.0.0.0         UG    0      0        0 eth0

Actuellement, il utilise 85.214.157.120 pour les connexions sortantes. Comment puis-je le faire utiliser 81.169.180.51?

Edit : Le masque de réseau de 255.255.255.255 est cohérent avec la documentation et la réponse DHCP de la société d'hébergement. Appeler /etc/init.d/networking redémarrer plusieurs fois finira par se retrouver avec la bonne adresse IP pour les connexions sortantes. Mais ce n'est évidemment pas une solution stable. /Éditer

Edit 2 : Pour m'assurer que la route hôte n'est pas liée à mon problème, j'ai configuré un réseau de test local:

eth0      inet Adresse:192.168.0.2  Bcast:192.168.0.255  Maske:255.255.255.0
eth0:0    inet Adresse:192.168.0.3  Bcast:192.168.0.255  Maske:255.255.255.0

192.168.0.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0        192.168.0.1     0.0.0.0         UG    0      0        0 eth0

Si quelqu'un a une idée comment s'assurer que l'adresse IP source 192.168.0.2 est utilisée sur les connexions TCP sortantes, je serais reconnaissant. / Modifier 2

Hendrik Brummermann
la source

Réponses:

24

Mettre à jour par défaut:

ip route change default via 81.169.180.1 src 81.169.180.51

Vérifiez la configuration:

ip route list
bindbn
la source
1
Comment rendre cela permanent après le redémarrage?
dezhi
3

La réponse de bindbn est bonne, mais j'ai trouvé quelques complications.

1) Vous devriez vérifier la "liste des routes ip" comme le dit bindbn. Une autre règle de la liste peut avoir la priorité sur l'itinéraire par défaut. Vous devrez peut-être supprimer cette règle ou créer une règle légèrement différente.

2) Toutes les modifications effectuées via la commande ip ne fonctionnent que jusqu'au prochain redémarrage. Cette réponse L'ajout permanent de règles de routage de stratégie source explique comment le rendre persistant.

En résumé, vous pouvez ajouter la commande ip route dont vous avez besoin pour exécuter une ligne "up" ou "post-up" dans / etc / network / interfaces. Vous pouvez ajouter une ligne "descendante" correspondante pour supprimer l'itinéraire.

AdamS
la source
1

Essayez de changer

 allow-hotplug eth0

à

 auto eth0

Cela devrait forcer votre interface physique à apparaître en premier. Vous devrez peut-être également modifier l'entrée allow-hotplug pour eth0: 0.

Bill B
la source
1

Par curiosité, pourquoi vos adresses IP ont-elles un masque de réseau de 255.255.255.255? Ce n'est vraiment pas faisable, car cela signifierait que l'adresse entière est le réseau. Pas de place pour les hôtes. Le fait que votre adresse de diffusion soit la même que votre adresse IP hôte est également inquiétant, mais probablement en raison du problème de masque de réseau. Il semble plutôt que votre masque de réseau devrait être 255.255.255.0.

Cela a-t-il été fait pour vous donner deux hôtes sur le même sous-réseau? Il peut être préférable d'effectuer simplement une modification de sorte que chaque interface se trouve sur un sous-réseau différent. 255.255.255.128 mettrait eth0 et votre passerelle (de 81.169.180.1) sur le même sous-réseau, avec eth0: 0 sur un sous-réseau séparé. Cependant, cela signifierait que eth0 ne pourrait communiquer qu'avec 81.169.180.1-81.169.180.127. Et eth0: 0 allant de 129-254. Mais cela étant dit, je ne vois pas vraiment pourquoi votre configuration actuelle fonctionne.

Maintenant, cela causera-t-il les problèmes que vous voyez ci-dessus? Je ne vois pas de lien direct, mais c'est possible.
C'est certainement quelque chose que je modifierais. Si cela ne vous aide pas, vous pouvez peut-être expliquer pourquoi vous avez configuré les choses de cette façon.


Edit: Est-ce que cela fonctionnait bien sur cet hôte, ou était-ce une machine / OS différente? Une idée de ce qui aurait pu changer? La raison pour laquelle je pose la question est que Linux n'aime vraiment pas avoir deux interfaces sur le même sous-réseau. Cela m'a rendu fou en essayant de faire fonctionner cela sur mon propre réseau. Il semble tout à fait possible que cela fonctionne sur la bonne IP, jusqu'à ce que vous ayez redémarré / redémarré les services réseau. Ensuite, il est apparu en utilisant la mauvaise interface. Référence: http://anders.com/cms/258

Vous pouvez également essayer ifdowneth0: 0, puis ajouter l'itinéraire, puis ifuple récupérer. Cela pourrait garantir que l'IP correcte est utilisée.

L'ajout manuel de dev eth0 peut aider, mais il semble que l'itinéraire ait été effectué correctement.


De plus Edit: Vous pouvez essayer d' utiliser les nouveaux outils de gestion de la propriété intellectuelle dans Debian, iproute 2. ( Lien secondaire ) Cela ressemble à quelque chose dans le sens de
Bringin up the interface: ip link set eth0 up

ip addr add 192.168.0.2/24 dev ethe0
ip addr add 192.168.0.3/24 dev eth0

Puis mise en place de la table de routage avec
ip route add 10.0.0.0/16 via 192.168.0.2


--Christopher Karel

Christopher Karel
la source
Un masque de réseau de 255.255.255.255 est cohérent avec la documentation de la société d'hébergement et la réponse DHCP. Selon Google, il est normal d'avoir 255.255.255.255 sur des réseaux point à point. Pour autant que je sache, il serait plutôt stupide de la part de la société d'hébergement d'utiliser un réseau point à point étant donné le risque de sécurité d'avoir des hôtes non fiables dans le même domaine de diffusion de couche 2.
Hendrik Brummermann
Comme Wolfgangsz le disait plus haut, un / 32 n'est pas une norme pour un lien point à point. Je sais qu'un / 31 peut être fait, mais évidemment, tue les identifiants de diffusion et de réseau. La «route hôte» que vous avez mentionnée fait référence à son utilisation dans les tables de routage. par exemple: c'est une route vers un hôte spécifique, pas vers un réseau. D'où son occurrence dans le RFC que vous avez lié sur OSPF, un protocole de routage. Cela étant dit, si vous êtes sûr que votre FAI vous demande de le faire avec votre système d'exploitation, vous pouvez tout aussi bien continuer.
Christopher Karel
OK, quelques modifications ont été apportées, cela pourrait aider votre problème d'origine.
Christopher Karel
-1

Votre configuration actuelle ne devrait pas fonctionner du tout. Étant donné que le masque de réseau pour les deux interfaces est 255.255.255.255, il n'y a pas de place pour une passerelle. Cependant, afin de fournir un trafic significatif, votre serveur a besoin d'une passerelle. Le FAI fournissant les deux adresses IP publiques devrait également vous fournir des paramètres de masque de réseau et de passerelle pour les deux adresses IP.

Exemple (c'est mon serveur privé et les adresses IP sont réelles):

Table de routage IP du noyau
Destination Gateway Genmask Flags Metric Ref Use Iface
217.10.144.208 0.0.0.0 255.255.255.248 U 0 0 0 eth0
0.0.0.0 217.10.144.209 0.0.0.0 UG 0 0 0 eth0

Le serveur lui-même est sur 217.10.144.210, qui se trouve dans le même sous-réseau que la passerelle (doit, sinon aucun trafic ne peut être routé). On peut supposer que le FAI fournit également le même sous-réseau à certains autres clients.

Si vous êtes sur ce serveur et que vous effectuez un ping vers votre passerelle, vous devriez recevoir un message "aucun itinéraire vers l'hôte".

Parlez au FAI et obtenez les paramètres corrects, puis mettez à jour la configuration de votre interface, redémarrez la mise en réseau et vérifiez-la à nouveau.

Wolfgangsz
la source
2
Un masque de réseau de 255.255.255.255 est cohérent avec la documentation de la société d'hébergement et la réponse DHCP. Selon Google, il est normal d'avoir 255.255.255.255 sur des réseaux point à point. Pour autant que je sache, il serait plutôt stupide de la part de la société d'hébergement d'utiliser un réseau point à point étant donné le risque de sécurité d'avoir des hôtes non fiables dans le même domaine de diffusion de couche 2.
Hendrik Brummermann
Si vous avez un réseau point à point, votre masque de réseau serait 255.255.255.252. Cela permettrait aux deux hôtes qui composent les deux points d'extrémité, une adresse réseau et une adresse de diffusion. Il s'agit du scénario normal pour ce type de connexions. Dans votre cas, l'autre hôte serait alors votre passerelle vers le reste du monde. Je ne me soucie pas vraiment de ce que vous creusez sur Google, mais c'est ainsi que fonctionne le réseau TCP / IP. Et très clairement, cela ne fonctionne pas pour vous. Je vous laisse les conclusions.
wolfgangsz
Merci, mais cette partie fonctionne parfaitement bien pour moi. Soit dit en passant, il est appelé «route hôte» dans la norme Internet officielle: rfc-editor.org/rfc/rfc2328.txt
Hendrik Brummermann
Mon problème est également reproductible sur un réseau local: ifconfig eth0 192.168.0.2 mask 255.255.255.0 / ifconfig eth0: 1 192.168.0.3 mask 255.255.255.0 / route add default gw 192.168.0.1
Hendrik Brummermann