Ich mache ein Netzwerkexperiment über die Weiterleitung von IP-Paketen, aber ich weiß nicht, warum es funktioniert.
Ich habe einen Linux-Rechner mit zwei Netzwerkschnittstellen, eth0 und eth1, beide mit statischer IP-Adresse (eth0: 192.168.100.1, eth1: 192.168.101.2).
Mein Ziel ist einfach: Ich möchte nur IP-Pakete von eth1 mit dem Ziel im Subnetz 192.168.100.0/24 an eth0 und IP-Pakete von eth0 mit dem Ziel im Subnetz 192.168.101.0/24 an eth1 weiterleiten.
Ich habe die IP-Weiterleitung aktiviert mit:
sysctl -w net.ipv4.ip_forward=1
meine routing tabelle sieht so aus:
# 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
Aber wenn ich versuche, von 192.168.100.25 zu 192.168.101.47 zu pingen, funktioniert es nicht.
quelle
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
undiptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
zu meinen Tabellen hinzugefügt . Und meine INPUT-, OUTPUT- und FORWARD-Richtlinien sind alleACCEPT
.traceroute
auf meinem Host verwende, wird angezeigt, dass das Paket an den "Router" (192.168.100.1) gesendet wird, aber nicht weiter.Sie müssen eine Route zu 192.168.100.25 und 192.168.101.47 hinzufügen.
Wenn Ihr Weiterleitungsserver die IP-Adressen 192.168.100.1 und 192.168.101.1 hat, fügen Sie dies im Client 192.168.100.25 hinzu
und im Client 192.168.101.47
(Dies funktioniert nur mit aktivierter Weiterleitung, keine Iptables).
quelle