IPTables-Quell-NAT (SNAT) nach /etc/ufw/before.rules

IPTables-Quell-NAT (SNAT) nach /etc/ufw/before.rules

Ich muss NAT-Datenverkehr (SNAT) zwischen zwei Schnittstellen auf einem Ubuntu 18.04-Server bereitstellen. Ich habe versucht, die Datei „/etc/ufw/before.rules“ zu verwenden, um meine verschiedenen NAT-Anforderungen zu implementieren, und bisher lief alles gut ... bis jetzt.

Der folgende iptables-Befehl scheint genau das zu tun, was ich brauche:

iptables -j SNAT -t nat -I POSTROUTING 1 -o eth0 -d 192.168.1.0/24 -s 172.18.0.0/16 --to-source 10.136.0.2

Kann diese Regel einfach in eine Konfiguration in der Datei „/etc/ufw/before.rules“ übersetzt werden? Die Manpages für UFW-NAT-Konfigurationen scheinen im Vergleich zu den allgemeineren Filterregeln etwas unzureichend zu sein.

Hintergrund: Ich verwende Source-NAT für Docker-/Container-Datenverkehr, um ihn über einen IPSec-Richtlinientunnel mit StrongSwan zu senden. Ohne die zuvor erwähnte iptables-Regel kann ich Datenverkehr vom VPN IN den Container leiten, aber Datenverkehr, der AUS dem Container kommt, kommt nicht an.

eth0 ist meine „öffentliche“ Schnittstellen-IP 1.2.3.4 und eth1 ist meine „private“ Schnittstellen-IP 10.136.0.2

Hier ist die *nat-Konfiguration, die ich bereits in der Datei „/etc/ufw/before.rules“ habe, um den Datenverkehr zum Fließen zu bringen (abzüglich des Datenverkehrs aus Docker):

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24  -d 10.136.0.0/16 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24  -d 172.18.0.0/16 -j MASQUERADE
COMMIT
#

Antwort1

Wenn Sie diese Regel bereits manuell hinzugefügt haben iptables, können Sie das richtige Format und die richtige Position zum Hinzufügen ermitteln, before.rulesindem Sie Folgendes ausführen:

# sudo iptables -t nat -S
...
-A POSTROUTING -s 172.18.0.0/16 -d 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.136.0.2
...

verwandte Informationen