Portál AbcLinuxu, 29. října 2025 21:26
iptables -t nat -A PREROUTING -p tcp --dport 8008 -j DNAT --to 192.168.1.2:8008 iptables -t nat -A POSTROUTING -p tcp --dport 8008 -d 192.168.1.2 -j SNAT --to-source $INET_IPPřipojení z jiného stroje z vnitřní sítě funguje, i připojení z internetu funguje, ale pokud se chci připojit přímo z toho routeru pomocí doménového názvu veřejné IP, tak to nejde, nemůžu použít přímo adresu toho stoje, protože je nutné zadat doménový název kvůli certifikátu.
Řešení dotazu:
iptables -t nat -A POSTROUTING -p tcp --dport 8008 -d 192.168.1.2 -j SNAT --to-source $INET_IPTohle, tam nema co delat.
Má to tam co dělat, jinak odpověď pro klienty ve vnitřní síti půjde přímo a nepřeloží se jak má (pokud se to neobejde tím trikem s DNS, ale to taky není ideální). Problém je ale v tom, že obě ta pravidla jsou příliš obecná. Takže bych navrhoval spíš něco jako
iptables -t nat -A PREROUTING -i $INTIF -d $EXTIP -p tcp --dport 8008 \
-j DNAT --to 192.168.1.2:8008
iptables -t nat -A POSTROUTING -i $INTIF -d 192.168.1.2 -j SNAT --to $INTIP
(INTIF je vnitřní rozhraní, INTIP vnitřní adresa a EXTIP vnější adresa). Kdysi dávno jsem tu na toto téma sepsal celý dokument.
V tom pripade bude potreba jeste znovu pokryt DNAT z venku..
Eh, to byla chyba, v tom prvním pravidle nemělo být "-i $INTIF" (a nebo by bylo potřeba přidat ještě druhé pro $EXTIF).
nat tabulce přes PREROUTING, místo toho jdou přes OUTPUT. Takže pokud chcete, aby vám ten forward fungoval i přímo z toho routeru s veřejnou IP adresou, musíte to DNAT pravidlo zopakovat ještě jednou pro řetězec OUTPUT.
Zda pro lokální síť přepisovat DNS nebo použít SNAT je otázka – když použijete SNAT, zatěžujete tou komunikací router. Řešení s DNS bývalo dříve jednodušší, teď vám to může zkomplikovat DNSSEC – pokud ho máte na doméně nasazený, budete muset podepisovat i ty záznamy pro lokální síť. Ne že by to bylo neřešitelné, ale je to komplikace a nejspíš to bude znamenat, že se musíte vzdát automatické správy klíčů DNS serverem a řešit to ručně.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.