Je fais une expérience de réseau sur le transfert de paquets IP, mais je ne sais pas pourquoi cela fonctionne.
J'ai une machine Linux avec deux interfaces réseau, eth0 et eth1, toutes deux avec une adresse IP statique (eth0: 192.168.100.1, eth1: 192.168.101.2).
Mon objectif est simple: je veux juste transférer les paquets ip de eth1 avec la destination du sous-réseau 192.168.100.0/24 vers eth0, et transférer les paquets ip de eth0 avec la destination du sous-réseau 192.168.101.0/24 vers eth1.
J'ai activé le transfert d'adresse IP avec:
sysctl -w net.ipv4.ip_forward=1
ma table de routage est comme ça:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Mais, lorsque j'essaie de cingler de 192.168.100.25 à 192.168.101.47, cela ne fonctionne pas.
Vous devez ajouter une règle de transfert à l'aide de la commande iptables
name__, à peu près comme ceci:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
voir man iptables
pour plus de détails, ou recherchez sur Internet des articles de howto, par exemple Comment configurer un routeur NAT sur un ordinateur Linux
Voici Linux IP Masquerade HOWTO qui décrit le sujet en détail.
Vous devez également vous assurer qu'aucune autre règle (par exemple, dans la chaîne FORWARD
name__) ne remplace la règle ACCEPT
ci-dessus. S'il y en a, vous voudrez probablement les supprimer.
Vous devez ajouter une route à 192.168.100.25 et 192.168.101.47.
Si les adresses IP 192.168.100.1 et 192.168.101.1 de votre serveur de transfert sont ajoutées au client 192.168.100.25.
ip route 192.168.101.0/24 via 192.1268.100.1
et dans le client 192.168.101.47
ip route 192.168.100.0/24 via 192.168.101.1
(Cela fonctionne avec juste le transfert activé, pas d'iptables).