====== 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