J'ai un système qui a deux interfaces réseau avec des adresses IP différentes, qui sont toutes deux dans la plage d'adresses publiques (bien que via NAT dans le cas de la première) et qui ont toutes deux des passerelles différentes. (Longue histoire, c'est à des fins de test)
Le problème est qu'en ce moment, si j'essaie d'envoyer une requête ping à l'adresse sur la deuxième interface, l'itinéraire par défaut indique via la première interface - et n'arrive jamais correctement.
Est-il possible de s’assurer que les réponses sortent toujours sur la même interface réseau (et avec la même IP source) qu’elles sont entrées? Et si oui, comment?
debian
networking
ipv4
Shadur
la source
la source
Réponses:
Vous comprenez mal le problème. Tous les paquets ne sont pas une réponse et tous les paquets ne peuvent pas être mis en correspondance avec un autre paquet, de sorte que "la même interface réseau que celle sur laquelle ils sont entrés" est logique. Ce que vous voulez faire, c'est sélectionner la passerelle pour un paquet en fonction de son adresse IP source.
C'est ce qu'on appelle le routage basé sur la source ou le routage de stratégie. Vous pouvez le faire avec une règle simple
iptables
, mais la meilleure façon est de configurer deux tables de routage, une pour chaque adresse source publique:Créez d'abord deux tables (remplacez <NAME1> et <NAME2> par des noms raisonnables pour vos deux fournisseurs, de même avec IP1, DEV1, etc.):
Ajoutez une passerelle à chaque table de routage (si nécessaire):
Puis un itinéraire par défaut:
Ensuite, les règles pour sélectionner la table de routage en fonction de l'adresse source:
Voir Routage pour plusieurs liaisons montantes / fournisseurs pour plus de détails.
la source
La réponse de David Schwartz est excellente, mais vous pouvez simplifier un peu les règles de routage en ayant une seule table supplémentaire et en utilisant votre route par défaut pour l'autre. J'ai un serveur derrière deux passerelles NAT, et j'ai récemment suivi le processus de recréation de ce scénario entre un tas de machines virtuelles. Mon
/etc/network/interfaces
ressemble à ceci:(c'est pour une configuration où les deux FAI sont Optus et iiNet, d'où le nom de table de 'optus')
Cela, plus la ligne de
/etc/iproute2/rt_tables
création de la table, devrait être tout ce dont vous avez besoin. Vous aurez deux adresses IP; le trafic de 192.168.13.13 sortira via 192.168.13.11, et le trafic de 192.168.13.213 sortira via 192.168.13.10. Configurez ces deux passerelles pour effectuer leur redirection de port de manière appropriée (192.168.13.11 transfère les éléments vers 192.168.13.13 et 192.168.13.10 transfère les éléments vers 192.168.13.213), et le reste devrait prendre soin de lui-même.Vous devrez peut-être modifier un peu les choses pour votre situation, car vous utilisez directement des adresses IP publiques, mais quelque chose comme ça devrait toujours fonctionner. De plus, il est beaucoup plus facile de faire ces choses dans
/etc/network/interfaces
puis de gérer ce fichier, plutôt que d'essayer de se rappeler comment vous l'avez configuré, deux ans plus tard, lorsque le système doit être redémarré!la source
Exemple de double réseau
Cet exemple montre comment un complément
eth1
avec10.130.0.2
masque de réseau255.255.255.255
et la passerelle10.130.0.1
peuvent être mis à la disposition des services qui s'y lient commeping -I eth1 8.8.8.8
Techniquement, nous sommes:
la source