Nous avons le service Internet AT&T U-Verse, qui a une passerelle DSL extrêmement osée.
Nous avons 5 IP (masque de réseau 248), mais la passerelle est incapable de faire autre chose qu'un seul IP -> un seul mappage d'adresse MAC.
Nous avons une seule machine pare-feu et nous redirigeons différents combos IP / ports vers différents endroits à l'intérieur d'une DMZ.
Notre solution jusqu'à présent est d'avoir une machine virtuelle VMWare sur le pare-feu avec 4 cartes réseau supplémentaires, pour obtenir les 4 autres adresses IP ... mais nous avons un problème.
La passerelle effectue essentiellement un ping ARP pour voir si l'IP répond sur le MAC attendu. Avec 4 cartes réseau sur le même réseau local, Linux répond aux demandes ARP pour TOUTES les IP en utilisant une seule interface. Ce n'est pas ce que la passerelle attend, et cela gâche les 3 autres cartes réseau. La passerelle refuse d'acheminer le trafic entrant pour les adresses IP où les résultats de ping ARP ne sont pas le MAC attendu.
Comment pouvons-nous obtenir les réponses ARP pour que l'IP d'eth0 sorte eth0, que l'IP eth1 sorte eth1, etc.?
ÉDITER
La réponse de Christopher Cashell ne fonctionne pas dans cette situation. J'avais de grands espoirs en le lisant, mais ... non.
EDIT 2
Résolu! Voir ma réponse ci-dessous.
Réponses:
La solution que vous avez choisie fonctionne, mais il existe des alternatives qui n'impliquent pas d'arptables. (Christopher Cashell était sur la bonne voie, à l'origine, mais il était parti d'un smidge.)
En bref, vous souhaitez définir ces paramètres:
Ceux-ci devraient être disponibles lors de l'exécution d'un noyau Linux moderne de la série 2.6. Vérifiez et assurez-vous que «/ proc / sys / net / ipv4 / conf / / arp_announce» et / proc / sys / net / ipv4 / conf / / arp_ignore »existent sur votre système.
Le paramètre 'arp_filter' ne fonctionne que lorsque vos différentes adresses IP partagent un segment LAN mais utilisent un sous-réseau IP différent. S'ils partagent également le sous-réseau IP, vous devez utiliser 'arp_ignore' et 'arp_announce', comme ci-dessus.
(Je pense que vous devrez peut-être également remettre 'arp_filter' à '0'.)
la source
D'accord, voici la solution. Tout d'abord, un récapitulatif:
Voici mon plan de réseau de base:
Toutes les interfaces se chevauchent. C'est techniquement faux, et la source de tous mes malheurs ... mais je dois le faire à cause de cette passerelle résidentielle stupide.
Tout d'abord, les demandes ARP de diffusion vont à tous ces éléments. Étant donné que les 4 IP sont des adresses locales valides, les 4 interfaces vont essayer de répondre.
1) installez des arptables . Ajoutez ceci quelque part pendant le démarrage ( /etc/rc.local ici):
Cela empêchera les émissions de passer dans la mauvaise interface. Ainsi, l'interface correcte sera désormais le seul répondeur.
Cela ne suffit pas en soi. Le bit suivant est un problème de table ARP. Le PC demandeur a probablement déjà une entrée de table ARP, et donc Linux va utiliser l'interface associée à cela. Jusqu'à ce que cette entrée de table ARP expire, il va essayer d'envoyer des réponses ARP en utilisant l'interface de cette entrée, pas celle associée à la demande ARP.
L'option sysctl rp_filter semble rejeter les paquets de réponse ARP sortants s'ils sont sur la mauvaise interface. Donc...
2) Désactivez rp_filter .
Sur Debian / Ubuntu, ce moyen de commenter les deux rp_filter lignes /etc/sysctl.d/10-network-security.conf .
Cette option a été activée pour une raison ... à savoir pour aider à prévenir les attaques d'usurpation cross-interface. J'ai lu qu'il vérifie que le paquet est légal pour l'interface sur laquelle il entre ou sort (en échangeant les MAC et les IP et en voyant s'il continue de circuler sur la même interface). Donc, normalement, ce serait une mauvaise idée de le désactiver. Dans mon cas, toutes les interfaces sont sur le même réseau ... de sorte que la vérification n'a pas vraiment d'importance du tout.
Si j'ajoute une autre interface et que j'ai besoin de la protection contre l'usurpation d' identité, je peux peut-être créer des entrées arptables / iptables pour faire la même chose.
la source
Cela a à voir avec la façon dont Linux gère les IP et les NIC. Fondamentalement, il traite une adresse IP comme si elle appartenait à la boîte, et pas seulement à la carte réseau spécifique. Le résultat est que vous pouvez obtenir des réponses ARP à partir d'adresses IP sur des interfaces auxquelles vous ne vous attendez pas.
La solution est une option sysctl. Si je me souviens bien, ce que vous cherchez, c'est:
Cela résoudra le problème pour vous. Ajoutez-les simplement à /etc/sysctl.conf et exécutez '
sysctl -p
' (ou exécutez chaque ligne comme argument à 'sysctl -w
'.Cela obligera Linux à répondre uniquement aux requêtes ARP sur l'interface à laquelle une adresse IP est réellement attribuée.
la source
La réponse acceptée en combinaison avec ceci: http://www.linuxquestions.org/questions/linux-networking-3/multiple-interfaces-all-traffic-flows-through-just-one-538701/
où les routes statiques sont utilisées pour communiquer avec uniquement les adresses IP souhaitées sur certaines interfaces, a créé une solution puissante et simple à un problème similaire que j'avais.
la source
Pouvez-vous relier la passerelle et demander au pare-feu de gérer les adresses IP?
la source