Ich verwende es iptables
in Verbindung mit net-filter
einer Warteschlange, um Pakete programmgesteuert zu ändern.
Ich verwende iptables
Regeln über Ubuntu Lab mit 2 Netzwerkkarten, eth0 zum Internet und eth1 zum LAN. Ich habe die bekannten iptables-Regeln für NATing mit Masquerading auf eth0 verwendet.
sudo iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -append FORWARD -i eth1 -j ACCEPT.
sudo iptables -t mangle -A PREROUTING -j NFQUEUE --queue-num 0
sudo iptables -t mangle -A OUTPUT -j NFQUEUE
Mithilfe dieser 4 Regeln kann ich Pakete in meinem Programm erfassen und Pakete ändern oder löschen, was ich möchte nfq_set_verdict
.
Tatsächlich läuft alles wie erwartet, das heißt, die drei Protokolltypen icmp
und Pakete werden geändert und erneut eingespeist. In der Warteschlange verlässt dann eth0 das Internet tcp
und udp
nimmt die eth0-IP-Adresse als Quelladresse (Auswirkung der Verwendung der MASQUERADE-NAT-Regel).
Das gilt für alle Pakete AUSSER: ICMP-PingAntwortoder TCPACKPakete.
Sie verlassen das Internet unter Verwendung der privaten IP des LAN-Geräts – 192.168.xx bei eth1 – und erreichen die andere Seite mit dieser privaten Quell-IP-Adresse.
Irgendwelche Ideen? Danke.