Ahoj, mam problem napsat DNAT pravidla.
Pokud delam DNAT na stejny port, funguje mi:
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 51413 -j DNAT --to 10.123.1.11
iptables -A FORWARD -i $WAN -p tcp --dport 51413 -d 10.123.1.11 -j ACCEPT
Nyni ale potrebuji udelat DNAT verejnaIp:1020 -> 10.123.1.12:2030.
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 1020 -j DNAT --to 10.123.1.12:2030
#iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 1020 -j REDIRECT --to-port 2030
iptables -A FORWARD -i $WAN -p tcp --dport 1020 -j ACCEPT
DNAT ani REDIRECT mi nefunguje. Netusite, co delam spatne?
REDIRECT přesměrovává komunikaci na daný port na lokálním počítači, to vám fungovat nebude (předpokládám, že komunikaci chcete přesměrovat jinam, když uvádíte IP adresu a používáte řetězec FORWARD).
U DNATu se cíl uvádí v parametru --to-destination, a ve FORWARD musíte povolit ten změněný port (změna v PERROUTING se udělá před FORWARDem). Takže by to mělo být
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 1020 -j DNAT --to-destination 10.123.1.12:2030
iptables -A FORWARD -i $WAN -p tcp --dport 2030 -j ACCEPT
Ještě bych NAT i firewall omezil na konkrétní IP adresy, to, že paket přišel přes konkrétní rozhraní mi nepřipadá jako dostatečná identifikace.
Diky, funguje.
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 1020 -j DNAT --to-destination 10.123.1.12:2030
iptables -A FORWARD -i $WAN -p tcp --dport 2030 -d 10.123.1.12 -j ACCEPT