Iptables MASQUERADE nur ausgewählte Ports

Iptables MASQUERADE nur ausgewählte Ports

Ich habe die Portweiterleitung gemäß diesem Tutorial durchgeführt: http://www.debuntu.org/wie-man-den-Netzwerkverkehr-auf-eine-neue-IP-mit-iptables-umleitet/

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111

iptables -t nat -A POSTROUTING -j MASQUERADE

Ich möchte aber nur die Ports mit den Weiterleitungen MASKERIEREN, da ich auf demselben Server einen Webserver habe und der Webserver nicht mehr funktioniert, wenn ich den gesamten Datenverkehr MASKERIERE.

Irgendeine Idee?

LÖSUNG: iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j SNAT --to-source 2.2.2.1

Antwort1

wenn duWirklichmöchten, MASQUERADEdann ist die korrekte Vorgehensweise wie folgt:

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j MASQUERADE

Diese Methode MASQUERADEwird nur auf DNAT-Pakete angewendet.

Beachten Sie jedoch, dass dies MASQUERADEhauptsächlich für dynamische IP-Fälle (wie DFÜ) vorgesehen ist und im Falle einer statischen IP SNATeher so verwendet werden sollte, wie Sie es vorgeschlagen haben. Aus iptablesder Manpage:

Es sollte nur bei dynamisch zugewiesenen IP-Verbindungen (DFÜ-Verbindungen) verwendet werden: Wenn Sie eine statische IP-Adresse haben, sollten Sie das SNAT-Ziel verwenden. Masquerading entspricht der Angabe einer Zuordnung zur IP-Adresse der Schnittstelle, über die das Paket gesendet wird, hat aber auch zur Folge, dass Verbindungen vergessen werden, wenn die Schnittstelle ausfällt. Dies ist das richtige Verhalten, wenn es unwahrscheinlich ist, dass die nächste DFÜ-Verbindung dieselbe Schnittstellenadresse hat (und daher alle hergestellten Verbindungen ohnehin verloren gehen).

Es gibt jedoch für beide einen Vorbehalt MASQUERADE: SNATEs funktioniert nicht, wenn 2.2.2.2 ein VIP auf derselben Maschine ist.

verwandte Informationen