Portál AbcLinuxu, 27. července 2025 17:41


Dotaz: Jednoduché IPTABLES v OpenWRT

Jaja avatar 15.11.2008 09:01 Jaja | skóre: 2
Jednoduché IPTABLES v OpenWRT
Přečteno: 1444×
Odpovědět | Admin
Zdravím,
Mám problém se zdánlivě jednoduchým případem:
Potřebuji z internetu přístup na jeden z lokálních PC, kde mi běží intranetový WWW. Na Routeru mám web na portu :80, proto chci přistupovat na lokální web přes wan na portu :81

Zde je IPTABLES:
/etc/firewall.user

#!/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

Zde je /etc/config/firewall

forward:dport=81:192.168.1.11:80

Server je však na portu :81 z venku nedostupný.

Vidí z vás někdo chybu?

Díky za radu..

Mira
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.11.2008 09:31 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja jsem to vyresil tak, ze jsem kompletne vyhodil sitovaci skripty openwrt a napsal si svoje na miru.
--- vpsFree.cz --- Virtuální servery svobodně
Jaja avatar 15.11.2008 10:03 Jaja | skóre: 2
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
A je to někde publikované, abych se poučil, jak na to??
16.11.2008 20:40 cenda | skóre: 24 | blog: dedalebedanebohurvajs | Planá nad Lužnicí
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Teda mě se nezdá ten chain 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.
17.11.2008 17:24 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mozna hloupy dotaz, ale mas povolene forwardovani? (je to nekde v /proc/sys/net/ tusim, pohledej, tady se to resilo mockrat)

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
Jaja avatar 20.11.2008 16:25 Jaja | skóre: 2
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
V souboru /proc/sys/net/ipv4/ip_forward mám nastavenu hodnotu "1", což by mělo podle dokumentace povolovat forward..
17.11.2008 18:47 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem se na to podival jeste jednou a mam nasledujici pripominky: A taky se pridavam ke snajpovi (nebo snajpe?) - vlastni skript je IMHO srozumitelnejsi ( = prehlednejsi), nez ty "vestavene".

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
Jaja avatar 20.11.2008 16:29 Jaja | skóre: 2
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Na routeru z venku povoluji port 81, abych se pak přes www.mujrouter.cz:81/ dostal na vnitřní adresu 192.168.1.11:80 , teda alespoň tak jsem to plánoval..
21.11.2008 08:43 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Tim, ze mas
iptables -t nat -A prerouting_wan -p tcp --dport 81 -j ACCEPT
iptables        -A input_wan      -p tcp --dport 81 -j ACCEPT
pred
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
ti IMHO pakety na port 81 zustanou na routeru.

Posli vystupy z 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.

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
Jaja avatar 21.11.2008 10:06 Jaja | skóre: 2
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
VYŘEŠENO.
Děkuji Vám za radu, opravdu stačilo přehodit takto:

### 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
24.11.2008 08:14 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT

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.

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
24.11.2008 09:29 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT
Odpovědět | | Sbalit | Link | Blokovat | Admin

pokud pouzivas verzi Kamikaze (7.09), tak mrkni na soubor /etc/config/firewall

never use rm after eight
24.11.2008 11:56 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jednoduché IPTABLES v OpenWRT

Doporucuji pred psanim odpovedi projit komentare, ktere uz u dotazu jsou. Treba bys prisel na to, z problem uz je vyresen.

Dejv

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.