Portál AbcLinuxu, 27. července 2025 17:41
#!/bin/sh # Copyright (C) 2006 OpenWrt.org iptables -F input_rule iptables -F output_rule iptables -F forwarding_rule iptables -t nat -F prerouting_rule iptables -t nat -F postrouting_rule # The following chains are for traffic directed at the IP of the # WAN interface iptables -F input_wan iptables -F forwarding_wan iptables -t nat -F prerouting_wan ### Open port to WAN iptables -t nat -A prerouting_wan -p tcp --dport 22 -j ACCEPT iptables -A input_wan -p tcp --dport 22 -j ACCEPT iptables -t nat -A prerouting_wan -p tcp --dport 80 -j ACCEPT iptables -A input_wan -p tcp --dport 80 -j ACCEPT iptables -t nat -A prerouting_wan -p tcp --dport 81 -j ACCEPT iptables -A input_wan -p tcp --dport 81 -j ACCEPT ### Port forwarding ## -- This forwards port 81 on the WAN to port 80 on 192.168.1.11 iptables -t nat -A prerouting_wan -p tcp --dport 81 -j DNAT --to 192.168.1.11:80 iptables -A forwarding_wan -p tcp --dport 80 -d 192.168.1.11 -j ACCEPT
forward:dport=81:192.168.1.11:80
prerouting_wan
a forwarding_wan
. Jestli tedy nemá OpenWRT nějaký hack, který "normální" netfilter předělává nebo se to v dalších pravidlech usměrňuje do správnýho chainu. Podle mě by to předávání mělo být v PREROUTING
a FORWARD
a ne v prerouting_wan
a forwarding_wan
.
/proc/sys/net/
tusim, pohledej, tady se to resilo mockrat)iptables -t nat -A prerouting_wan -p tcp --dport 81 -j ACCEPT iptables -A input_wan -p tcp --dport 81 -j ACCEPTPodle me totiz povoluji port 81 na tom routeru, coz by patrne byt nemelo (ten web ti bezi uvnitr site)
prerouting_wan
a forwarding_wan
iptables -t nat -A prerouting_wan -p tcp --dport 81 -j ACCEPT iptables -A input_wan -p tcp --dport 81 -j ACCEPTpred
iptables -t nat -A prerouting_wan -p tcp --dport 81 -j DNAT --to 192.168.1.11:80 iptables -A forwarding_wan -p tcp --dport 80 -d 192.168.1.11 -j ACCEPTti IMHO pakety na port 81 zustanou na routeru.
iptables -nvL
a iptables -t nat -nvL
, jak jsem uz zminil, chybi mi tam presmerovani do chainu prerouting_wan
a input_wan
, tak at nevestime z vody.
### Port forwarding
## -- This forwards port 81 on the WAN to port 80 on 192.168.1.11
iptables -t nat -A prerouting_wan -p tcp --dport 81 -j DNAT --to 192.168.1.11:80
iptables -A forwarding_wan -p tcp --dport 80 -d 192.168.1.11 -j ACCEPT
iptables -t nat -A prerouting_wan -p tcp --dport 81 -j ACCEPT
iptables -A input_wan -p tcp --dport 81 -j ACCEPT
Najde o to, ze by ta pravidla byla prehozena, ale o to, ze pokud port 81 ma byt presmerovan "dovnitr", tak nemuzes ty pakety ACCEPTovat. A tim, ze je DNATujes, tak nasledujici pravidlo s ACCEPTem je zbytecne a nadbytecne (mluvim samozrejme o tabulce NAT, ta pravidla musi byt "ve dvojici" tak, jak jsi to mel a mas). Zamysli se nad tim:
iptables -t nat -A prerouting_wan -p tcp --dport 81 -j ACCEPT v tabulce NAT chain prerouting pakety protokolu TCP s cilovym portem 81 povol = nic dalsiho s nima nedelej
Nikde ani slovo o tom, ze by paket mel jit na jiny pocitac.
A nasledujici
iptables -A input_wan -p tcp --dport 81 -j ACCEPT v tabulce filter chain input pakety protokolu TCP s cilovym portem 81 povol = nic dalsiho s nima nedelej
ty pakety taky povoli - ale v INPUTu, takze na lokale.
Pakety prochazi postupne vsemi pravidly a pokud nektere vyhovi natolik, ze je jednoznacne urceno, co se s tim paketem ma udelat, pruchod konci, s paketem se nalozi podle vysledku a vyhodnocuje se dalsi paket. A ty jsi mel napred ACCEPT a az potom DNAT. Takze ten DNAT se nikdy nemohl dostat ke slovu.
Zkus si precist neco o tom, jak se provadi (v jakem poradi a kdy konci) pruchod paketu skrz iptables
. Mozna ti taky pomuze tohle nebo tohle.
pokud pouzivas verzi Kamikaze (7.09), tak mrkni na soubor /etc/config/firewall
Doporucuji pred psanim odpovedi projit komentare, ktere uz u dotazu jsou. Treba bys prisel na to, z problem uz je vyresen.
Dejv
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.