Was ist der Unterschied zwischen MASQUERADE, SNAT und DNAT?
Inhalt
MASQUERADE und SNAT
MASQUERADE und SNAT sind im Prinzip, das gleiche, beide ersetzen die Absender-Adresse mit der (öffentlichen) Adresse gateways.
Der Unterschied ist lediglich, dass man bei SNAT die externe IP angeben muss; bei MASQUERADE kann man ein Interface Angeben und es wird automatisch immer die IP dieses Interfaces (Netzwerkkarte) genutzt. Letzteres ist natürlich sehr geeignet wenn man die externe Adresse vom Provider per DHCP bezieht und diese sich von Zeit zu Zeit ändert. 😉
Hat man hingegen eine statische öffentliche IP, sollte man SNAT benutzen: Da es nicht immer erst prüfen muss, was für eine IP das Interface hat, ist SNAT etwas schneller als MASQUERADE.
So kann man entweder:
iptables -A POSTROUTING -o eth0 -j SNAT --to-source $EXT-IP |
oder
iptables -A POSTROUTING -o eth0 -j MASQUERADE |
benutzen um die Internetverbindung eines Gateway mit internen hosts zu teilen.
DNAT
DNAT ersetzt nicht die Absender-, sondern die Empfänger-Adresse und wird üblicherweise für Port-Forwarding verwendet.
Will man beispielsweise im Gateway alle Anfragen auf die öffentliche IP-Adresse (eth0) vom Port 80 zum internen Server mit der IP: 192.168.100.10 weiterleiten, so würde die iptables Regel so aussehen:
iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:80 |
weiter müsste man dann noch eine entsprechende FORWARD Regel machen:
iptables -A FORWARD -i eth0 -p tcp -m state --state NEW --dport 80 -j ACCEPT |