Portál AbcLinuxu, 6. května 2025 04:29
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.