Ich versuche, den Datenverkehr zwischen verschiedenen Netzwerken umzuleiten und bin einer Anleitung gefolgt, die ich hier gefunden habe: https://devconnected.com/how-to-add-route-on-linux/
Hier ist ein Diagramm, das die Anordnung, mit der ich arbeite, hoffentlich angemessen darstellt:
Windows 10 Ubuntu Linux
172.31.0.X <----------> 172.31.0.33 (eno1)
10.0.40.1 (enp2s0f0) <----------> 10.0.40.10
Ich habe auf dem Windows-PC eine dauerhafte Route eingerichtet, um den gesamten Datenverkehr für 10.0.40.0/24 über 172.31.0.33 zu leiten.
Die Ubuntu-Maschine ist so eingerichtet, dass der für 10.0.40.0/24 bestimmte Datenverkehr über 10.0.40.1 weitergeleitet wird.
Das Pingen von 10.0.40.10 vom Ubuntu-Rechner funktioniert wie erwartet.
Wenn ich 10.0.40.10 vom Windows-PC aus anpinge, kann ich sehen, dass die ICMP-Nachrichten mit tcpdump an der Schnittstelle 172.31.0.33 auf dem Ubuntu-Rechner ankommen. Auf der Schnittstelle 10.0.40.1 dieses Rechners sehe ich keinen Verkehr. Es scheint, dass der Ubuntu-Rechner den Verkehr nicht wie erwartet weiterleitet. Kann mir jemand erklären, was ich übersehen habe?
Ausgabe von: hinzufügen
iptables -S
für Ubuntu-Rechner:
sudo iptables -S
# Warning: iptables-legacy tables present, use iptables-legacy to see them
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eno1 -j ACCEPT
-A FORWARD -i enp2s0f0 -j ACCEPT
adi@LabBuildServer:~$ sudo iptables-legacy -S
[sudo] password for adi:
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-e925d11be2da -m conntrack --ctstate RELATED,ESTABLISHED -j ACCE PT
-A FORWARD -o br-e925d11be2da -j DOCKER
-A FORWARD -i br-e925d11be2da ! -o br-e925d11be2da -j ACCEPT
-A FORWARD -i br-e925d11be2da -o br-e925d11be2da -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-e925d11be2da ! -o br-e925d11be2da -j DOCKER-IS OLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-e925d11be2da -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
Ausgabe von:
ip route
auf Linux-Host:
ip route
default via 10.0.40.1 dev br-POE proto static
10.0.40.0/24 dev br-POE proto kernel scope link src 10.0.40.10
Ubuntu-Maschine:
adi@LabBuildServer:~$ sudo iptables -t nat -L
[sudo] password for adi:
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
MASQUERADE all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Antwort1
Die Lösung liegt auf der Hand:
-P FORWARD DROP
In Ihrem iptables-legacy
Regelsatz ist die Standardrichtlinie zum Weiterleiten von Paketen auf DROP eingestellt, und in diesem Regelsatz gibt es keine Regel, die das Weiterleiten von Paketen von eno1
nach zulässt enp2s0f0
, sondern nur das Weiterleiten von/zu einer Bridge-Schnittstelle ...
iptables
Das Mischen verschiedener Iptables ist grundsätzlich keine gute Idee. Sie sollten selbst entscheiden, ob Sie die eine oder die andere verwenden möchten iptables-legacy
. Jedes Netzwerkpaket durchläuft beide Regelsätze, was zu ziemlicher Verwirrung führt.
aktualisieren:
Meine Antwort sollte nicht bedeuten, dass Sie die Standardrichtlinie als Akzeptieren installieren müssen, ich habe nur auf den Grund hingewiesen. Natürlich können Sie Regeln hinzufügen, um die Weiterleitung des Datenverkehrs nur an diese bestimmten IPs zuzulassen, beispielsweise wie folgt:
-A FORWARD -i eno1 -s 172.31.0.0/24 -o enp2s0f0 -d 10.0.40.0/24 -j ACCEPT
-A FORWARD -i enp2s0f0 -s 10.0.40.0/24 -o eno1 -d 172.31.0.0/24 -j ACCEPT