
Wir haben 3 PCs, zwei davon sind mit dem Internet verbunden (beide haben 2 Netzwerkkarten)
PC1:
eth0 - 1.0.0.1 (external IP)
eth1 - 172.16.0.1 (internal IP)
PC2:
eth0 - 1.0.0.2 (external IP)
eth1 - 172.16.0.2 (internal IP)
PC3:
eth0 - 172.16.0.3 (internal IP)
Nun möchten wir Port 80 von PC1 und PC2 zu PC3 weiterleiten.
Aber hier besteht das Problem: Die Portweiterleitung von iptables funktioniert gut von PC1 oder PC2 aus, aber nur, wenn PC3 PC1 oder PC2 als Gateway hat.
IPtables-Regeln (für PC1):
iptables -t nat -A PREROUTING -p tcp -d 1.0.0.1 --dport 80 -j DNAT --to-destination 172.16.0.3:80
iptables -A FORWARD -p tcp -d 172.16.0.3 --dport 80 -j ACCEPT
Die Frage ist also: Können wir eine Portzuordnung sowohl von PC1 als auch von PC2 unabhängig von den Gateway-Einstellungen auf PC3 durchführen?
Vielen Dank im Voraus.
Antwort1
Sie haben lediglich das Ziel umgeschrieben.
Sie müssen die Quelladresse so ändern, dass sie von PC1 oder PC2 stammt, damit die Antwortpakete auch NAT-fähig sind. Und Sie müssen die Zieladresse so ändern, dass das Paket an PC3 geht. Das Umschreiben sowohl der Quelle als auch des Ziels wird als „Dual-NAT“ bezeichnet.
Sie müssen das DNAT in der PREROUTING-Kette und das SNAT in der POSTROUTING-Kette durchführen. So (für PC1):
iptables -t nat -A PREROUTING -p tcp -m tcp -d 1.0.0.1 --dport 80 -j DNAT \
--to-destination 172.16.0.3:80
iptables -t nat -A POSTROUTING -p tcp -m tcp -d 172.16.0.3 --dport 80 \
-j SNAT --to-source 172.16.0.1
Antwort2
Geben Sie PC3 eine andere IP-Adresse und wenden Sie in PC1 und PC2 DNAT-Regeln auf die unterschiedlichen IP-Adressen von PC3 an.
Verwenden Sie auf PC3 „IP-Regel“, um nach Quell-IP-Adresse zu routen, wie gezeigt durch:http://lartc.org/howto/lartc.rpdb.multiple-links.html