3 votes

Route entre deux interfaces virtuelles sur une NIC Linux

J'ai une machine Ubuntu qui est mon pare-feu.

La machine possède 2 cartes NIC. eth0 et eth1. eth1 est connecté à un modem qui lui donne une IP de 10.10.1.X.

eth1 doit fournir le DHCP sur 192.168.2.X et avoir une autre IP à partir d'un commutateur qui est connecté à un routeur qui fournit le DHCP sur 192.168.1.X.

Actuellement, cette machine a les adresses IP suivantes

eth0 - 10.10.0.4
eth1 - 192.168.2.1 (DHCP Server, Gateway)
eth1:0 - 102.168.1.103

J'essaie d'accomplir ce qui suit

Si une machine est connectée à eth1 par l'intermédiaire d'un commutateur, elle devrait être en mesure d'envoyer un ping à 192.168.1.10 qui

 [Modem+Router 10.1.1.0/24]
   |
   |
   |
 (eth0)                  |----- [ Server 192.168.1.10]
 Ubuntu                  |
Firewall (eth1) ----- [Switch]-----[Modem+Router 192.168.1.0/24]
         (eth1:0)--------| \
                            \
                             \--------[EndPoint 192.168.2.4]   

Mon problème fondamental réside dans le fait que je reçois des paquets provenant de 2.4 qui sont destinés à l'internet et je suis capable de les router correctement en utilisant IpTables. Alors que, si un paquet arrive pour 1.10, je suis censé le renvoyer au commutateur avec les options appropriées définies.

J'ai essayé ce qui suit

  • la passerelle par défaut pour 1.0 est 2.1 à 2.4 et le prochain saut est 1.1. 1.1 qui, je l'espérais, ferait le bon transfert.
  • J'ai également ponté eth1 et eth1:0 en utilisant bridge-utils et ensuite appliquer la redirection iptables pour toute personne dans 2.X voulant sortir sur internet depuis 10.10.0.1

1 votes

1) Devrait-on eth1:0 être *192*.168.1.103 ? 2) Les adresses sont inutiles sans netmasks/préfixes, merci de les ajouter. 3) " Si un paquet arrive pour 1.10... " ; oui, mais d'où ? 4) Vous mentionnez la mise en place d'un itinéraire sur 2.4 pour 1.0/ ?? via 2.1, mais 2.1 n'apparaît pas sur le schéma. Dans l'ensemble, cette question serait améliorée par une grande dose de Montrer, ne pas raconter - montrez-nous des exemples de PING ou de tentatives TCP qui fonctionnent ou non, au lieu de vous contenter de dire ce que vous pensez pouvoir faire ou ne pas faire.

3voto

Martin Broadhurst Points 3777

Votre configuration devrait généralement fonctionner sans problème. Le routage en principe est supporté par le code de routage de Linux et n'a rien à voir avec Netfilter. "iptables" est un utilitaire de l'espace utilisateur pour la configuration du cadre Netfilter du noyau, qui fait du filtrage et de la modification de paquets (manipulation et traduction d'adresses), mais ne fait pas de routage. Il est donc incorrect de dire "Je route en utilisant iptables".

Le pontage est aussi une autre sorte de chose et n'est pas censé vous aider ici. Le pontage d'interfaces aliasées devrait probablement créer une boucle et ainsi briser le réseau dans ce segment Ethernet.

Vous avez besoin de routes des deux côtés, par exemple, ip route add 192.168.2.0/24 via 192.168.1.103 sur les hôtes du réseau 192.168.1.0/24 et configurer 192.168.2.1 comme passerelle par défaut sur les hôtes du réseau 192.168.2.0/24.

Si vous avez configuré le pare-feu de manière stricte, vous devez activer la redirection du trafic de eth1 vers eth1:1 et inversement :

iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth1:0 -j ACCEPT

Ou vous pouvez n'avoir besoin que d'une seule première règle, si vous avez déjà configuré le pare-feu dynamique avec iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT ou avec -m state (obsolète).

Une configuration iptables spéciale n'est nécessaire que si vous voulez masquer ce trafic, pour que les hôtes de 192.168.1.0/24 ne sachent pas que vous vous connectez depuis le réseau 192.168.2.0/24. Dans ce cas, vous n'avez pas besoin de routes supplémentaires du côté .1.0/24, mais vous avez besoin d'une règle NAT et d'une règle forward enable :

iptables -t nat -A POSTROUTING -o eth1:1 -s 192.168.2.0/24 -o 192.168.1.0/24 -j SNAT --to-source 192.168.1.103
iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT

0 votes

Merci @Nikita. Le site iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT iptables -A FORWARD -o eth1 -i eth1:0 -j ACCEPT c'est ce qui me manquait, et tu as raison. Le pontage n'a pas aidé parce qu'il ne devrait pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X