Table of Contents

Netfilter

DNAT do stejné sítě

Komunikace na veřejně publikovaný server ze stejné vnitřní sítě

Pokud provádíme port forwarding zpět do stejné sítě, musíme zajistit, že projde i paket s odpovědí přes NAT box, jinak by nedošlo k dokončení TCP handshake a spojení by se nenavázalo. Server přijímající požadavek je totiž ve stejné síti jako klient, a proto se pokusí poslat odpověď přímo klientovi (odpověď přijde z jiné adresy, než na kterou byl odeslán požadavek).

Pokud máme například DNATovaný webserver:

iptables -t nat -A PREROUTING -d $VEREJNA_IP_SERVERU -p tcp --dport 80 -j DNAT --to $INTERNI_IP_SERVERU

Je nutné pro tato popisovaná spojení přemapovat zdrojové adresy spojení na vnitřní adresu NAT boxu, aby server odpovídal přes tuto adresu.

iptables -t nat -A POSTROUTING -d $INTERNI_IP_SERVERU -s $INTERNI_SUBNET_IP -p tcp --dport 80 -j SNAT --to $INTERNI_GW_IP

V POSTROUTINGu používáme interní adresu serveru, protože PREROUTING pravidla byla aplikována už při příchodu paketu (před routing decision).

Přesměrování portů

Lokální přesměrování portů nástrojem iptables v PREROUTING chain

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.0.1.92 --dport 443 -j REDIRECT --to-port 9091
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.0.1.91 --dport 443 -j REDIRECT --to-port 9081

Lokální přesměrování portů nástrojem iptables-services

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 10.0.1.92/32 -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 9091
-A PREROUTING -d 10.0.1.91/32 -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 9081
COMMIT