1 (edytowany przez Bieniu 2015-10-21 22:12:30)

Temat: Przekierowania portów pod OpenWrt - co robię źle?

Na routerze OpenWrt CC w najnowszej wersji od Cezarego. Otwarty port 1212, przez który z zewnątrz chcę mieć dostęp do panelu WWW routera. W konfiguracji uhhtpd poza standardowym 80 i 443 dodany port 1212. W sieci lokalnej serwer NAS, którego port 5001 przekierowuję do dostępu na zewnątrz na port 443. I teraz jak w sieci lokalnej chcę otworzyć stronę z serwera nas ale wpisując publiczny adres to otwiera mi się strona routera by po chwili wyświetlić błąd. Co robię źle?

/etc/config/uhttpd

config uhttpd 'main'
        list listen_http '0.0.0.0:80'
        list listen_http '[::]:80'
        list listen_https '0.0.0.0:443'
        list listen_https '[::]:443'
        list listen_https '0.0.0.0:1212'
        list listen_https '[::]:1212'
        option redirect_https '1'
        option home '/www'
        option rfc1918_filter '0'
        option max_requests '3'
        option max_connections '100'
        option cert '/etc/uhttpd.crt'
        option key '/etc/uhttpd.key'
        option cgi_prefix '/cgi-bin'
        option script_timeout '60'
        option network_timeout '30'
        option http_keepalive '20'
        option tcp_keepalive '1'
        option ubus_prefix '/ubus'
        option interpreter '.php=/usr/bin/php-cgi'
        option index_file 'index.html, index.htm, index.php'
        option index_page 'index.html index.php'

/etc/config/firewall

config defaults
        option syn_flood '1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option drop_invalid '1'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option src_ip 'fe80::/10'
        option src_port '547'
        option dest_ip 'fe80::/10'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config include
        option path '/etc/firewall.user'

config redirect
        option target 'DNAT'
        option src 'wan'
        option dest 'lan'
        option proto 'tcp'
        option dest_ip '192.168.1.50'
        option dest_port '5001'
        option name 'Synology'
        option src_dport '443'

config zone
        option name 'guest'
        option network 'guest'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'

config forwarding
        option src 'guest'
        option dest 'wan'

config rule
        option src 'guest'
        option proto 'udp'
        option src_port '67-68'
        option dest_port '67-68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option src 'guest'
        option dest_port '53'
        option target 'ACCEPT'
        option family 'ipv4'
        option proto 'tcpudp'

config include 'miniupnpd'
        option type 'script'
        option path '/usr/share/miniupnpd/firewall.include'
        option family 'any'
        option reload '1'

config rule
        option target 'ACCEPT'
        option src 'wan'
        option proto 'tcp'
        option dest_port '1212'
        option name 'Allow-HTTPS'

2 (edytowany przez build000 2015-10-22 00:26:19)

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Więc na początek po prostu zahaszuj w /etc/config/uhttpd następujące linie:

(...)
# list listen_https '0.0.0.0:443'
# list listen_https '[::]:443'
(...)

W końcu chcesz używać dostępu do panelu openwrt (czy to z zewnątrz czyli WAN, czy to z LAN - tak jest defaultowo - możesz to zmienić w zakładce LuCI "System/Zarządzanie") w routerze na porcie 1212.
Dlaczego tak, to Ci może wyjaśnią inni.
Poza tym port 80 też warto użyć dla innych usług/serwerów w routerze od strony WAN/lub w LAN, i też go zahaszować w tym samym pliku i do panelu mieć dostęp tylko z LAN, i tylko po https, i tylko po ipv4, i tylko na tym danym porcie, czyli:

config uhttpd 'main'
        #list listen_http '0.0.0.0:80'
        #list listen_http '[::]:80'
        #list listen_https '0.0.0.0:443'
        #list listen_https '[::]:443'
        list listen_https '192.168.1.1:1212'
        #list listen_https '[::]:1212'
(...)

Tak jest najbezpieczniej...
Jak już koniecznie chcesz mieć dostęp od strony WAN do routera, wtedy:

config uhttpd 'main'
        #list listen_http '0.0.0.0:80'
        #list listen_http '[::]:80'
        #list listen_https '0.0.0.0:443'
        #list listen_https '[::]:443'
        list listen_https '0.0.0.0:1212'
        list listen_https '[::]:1212'
(...)

Wracając do dostępu NAS w LAN od strony WAN - musisz przekierować jakiś port na domyślny zazwyczaj port 443 w NAS do połączeń https (wtedy haszujesz go w konfigu uhttpd - to dlatego, że masz włączoną opcję: option redirect_https '1') - wtedy nie musisz blokować dla openwrt dostępu na porcie 443 (ale jak chcesz go używać w NAS, musisz jawnie go przekierować na ip-lan NAS, i jednocześnie zahaszować go konfigu uhttpd) - wtedy wołasz NAS z zewnątrz https://<ip_publiczne.twojego routera,czyli_po_prostu_Twój_adres internetowy_po_którym_inni_widzą_Cię_w_sieci-warunek_to_usługodawca,który_nie_blokuje_portów>:<ten wspomniany port>

Podsumowując - urządzeń, które w danej chwili słuchają na domyślnych portach 80 i 443 od strony WAN, może być tylko 1.
A z domyślnego konfigu uhttpd/firewall wynika, że jest to tylko router...po to ta zabawa z przekierowaniami, haszowaniem.
Jakoś myślę w miarę jest to zrozumiałe (albo jeszcze bardziej zawiłe...hehe) - starałem się łopatologicznie to wyjaśnić...
wink

3 (edytowany przez Bieniu 2015-10-22 11:47:59)

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Chyba jednak nie do końca jest tak jak mi napisałeś. Wg http://wiki.openwrt.org/doc/uci/uhttpd

[::]:80

odnosi się do IPv6. Czyli, żeby mieć dostęp do routera z WAN na porcie 1212, a od strony LAN na 443 konfiguracja powinna wyglądać tak:

        list listen_https '192.168.1.1:443'
        list listen_https '0.0.0.0:1212'

Plus do tego otwarty port 1212.

4 (edytowany przez build000 2015-10-22 12:16:53)

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Wiedziałem, że chyba "niezbyt jasno" to napisałem...fakt...do wykładania kawy na ławę trzeba mieć talent, ma być:

list listen_https '0.0.0.0:1212'
list listen_https '[::]:1212'

Wtedy serwer uhttpd będzie słuchał i w LAN i w WAN na porcie 1212 po https zarówno dla protokołu ipv4, jak i ipv6. Zamieniasz domyślny port 443 na 1212, i tym samym odzyskujesz go od strony WAN dla innych usług na routerze i w niektórych NAS-ach również w LAN. Chcąc dostać się do NAS z zewnątrz po https, musisz najpierw przekierować jakiś port po stronie WAN do (jak zrozumiałem to masz ustawione domyślnie) 443 w LAN - ale tylko NAS wtedy ma prawo słuchać na tym porcie w LAN, coś tak mniej więcej jak, np. https://twojadomena.pl:43217 lub po ip jak nie masz wykupionej domeny/ustawionego ddns, np. https://11.22.33.44:43217
Teoretycznie możesz się też dostać do tego NAS z zewnątrz wpisując po prostu https://twojadomena.pl, gdy przekierujesz port w WAN 443 do LAN 443 (ip-lan tego NAS). Oczywiście tu musi być zahaszowany w konfigu port 443 dla uhttpd. (domyślnie nawet chyba nie trzeba przekierowywać portu 443)
Porty od strony WAN będziesz miał wolne, pod warunkiem, że je zaahaszujesz w konfigu uhttpd - domyślnie to ten serwer na Twoim publicznym ip (czyli od strony WAN - zakładam, że na WAN masz po prostu ip z internetu, czyli publiczne) słucha na tych portach.

'[::]:1212

Ten zapis tylko traktuje o porcie dla protokołu ipv6 (tu podobnie jak dla ipv4, możesz na sztywno wklepać adres ipv6 z LAN) i powinien być identyczny dla ipv4 (przetranslowany na notację ipv6), czyli jak w Twoim przykładzie:

list listen_https '192.168.1.1:1212'

Zapis 192.168.1.1:1212 w ostatnim przypadku na sztywno i dodatkowo (to też ustawia się gdzie indziej) ustawia adres ip dla routera, jako dodatkowe zabezpieczenie przed pewnego typu atakami - jest to w pewnym sensie rozwinięciem tej opcji" "option rfc1918_filter '0'"i spowoduje, że na pewno to tylko dostaniesz się do panelu routera jedynie z LAN.

Bieniu napisał/a:

(...)
odnosi się do IPv6. Czyli, żeby mieć dostęp do routera z WAN na porcie 1212, a od strony LAN na 443 konfiguracja powinna wyglądać tak:

        list listen_https '192.168.1.1:443'
        list listen_https '0.0.0.0:1212'

Plus do tego otwarty port 1212.

A co z NAS...hmm ?...jak się do niego dostaniesz po https, jak w LAN port 443 jest już zajęty przez router ?
Poza tym ten zapis jest chyba błędny - jak ma się zgłaszać https jednocześnie na 2 portach na tym samym ip ? przecież zapis 0.0.0.0:1212 obejmuje również adres 192.168.1.1 w kontekście uhttpd/openwrt, ale jednocześnie dowolne adresy publiczne w WAN.

5

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Chyba błądzimy i nie możemy się dogadać (albo ja jakiś dziś ułomny jestem). NAS słucha na portach 5000 (HTTP) i 5001 (HTTPS). Chcę osiągnąć następującą konfigurację:
1. w LAN dostęp do routera na porcie 443 oraz dostęp do NASa na portach 5000 i 5001
2. z WAN dostęp do routera na porcie 1212 (HTTPS) oraz do NAS na porcie 443
3. dostęp do NASa z LANu poprzez domenę publiczną na porcie 443 (aplikacje w telefanie do obsługi NAS)

Przekierowanie portu 443 na 5001 NASu działa z WAN ale nie działa w LAN (próba otwarcia https://moja_domena_publiczna/ wyświetla przez moment ekran LUCI, a później błąd). Rozumiem, że jest to związane z konfiguracją uhttpd. Pytanie jak ją zmienić?

6

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Fakt - chyba Cezary, lub ktoś inny musi Ci to objaśnić bardziej zrozumiale - ja za słabo sobie radzę z wyjaśnianiem: po prostu ustawiam i używam jak potrzebuję w danej chwili/miejscu/sytuacji.
smile

7

Odp: Przekierowania portów pod OpenWrt - co robię źle?

@build000
Myślę że autorowi @Bieniu chodzi o taką konfigurację:
1. w sieci LAN (bez przekierowania):

wpisujesz adres routera 192.168.1.1:443 -> otrzymujesz 192.168.1.1:443 (router)
wpisujesz adres NAS-a: 192.168.1.2:5000 -> otrzymujesz 192.168.1.2:5000
wpisujesz adres NAS-a: 192.168.1.2:5001 -> otrzymujesz 192.168.1.2:5001

2. Ze świata (przekierowania):

 wpisujesz ip.publiczne:1212 -> otrzymujesz 192.168.1.1:443 (router)
wpisujesz ip.publiczne:443 -> otrzymujesz 192.168.1.2:5001 (NAS)

I myślę że to jest do zrealizowania.
3. Autor będąc we własnej sieci LAN chce wpisać sobie swój własny adres publiczny i żeby go przekierowało przez własny WAN do NAS-a, ale będąc we własnej sieci, chce wyjść na świat, żeby potem zawrócić do własnej sieci?

telefon o adresie LAN 192.168.1.3 wpisuje sobie ip.publiczne_które_ma_na_WAN:443 -> i zostaje przekierowany na adres LAN 192.168.1.2:5001

I ten punkt staje mi również jak ość w gardle i nie mogę tego zrozumieć...

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

8

Odp: Przekierowania portów pod OpenWrt - co robię źle?

@mar_w dokładnie rozpisał o co mi chodzi. I dokładnie z 3cim punktem mam problem bo po wpisaniu ip.publiczne_które_ma_na_WAN:443 ładuje się LUCI z routera i wywala błąd.

9 (edytowany przez build000 2015-10-22 15:02:07)

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Skorelujcie 3-y sytuacje:

wpisujesz adres routera 192.168.1.1:443 -> otrzymujesz 192.168.1.1:443 (router)

I dokładnie z 3cim punktem mam problem bo po wpisaniu ip.publiczne_które_ma_na_WAN:443 ładuje się LUCI z routera i wywala błąd.

list listen_https '192.168.1.1:443'

Oraz fakt, że wpis" ## list listen_https '192.168.1.1:443' ## nie służy temu co zakładacie, biorąc pod uwagę:

list listen_https '0.0.0.0:1212'
option redirect_https '1'
option rfc1918_filter '0'

10

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Szczerze mówiąc, to ja bym to zrobił inaczej.
a) Router niech tylko nasłuchuje na adresie LAN np. 192.168.1.1 na porcie 443 i koniec + reguła do firewalla na przekierowanie portu 1212 z WAN-u do LAN-u. 192.168.1.1:443.
b) Reguła na firewallu przekierowania portu z WAN 443 na LAN np 192.168.1.2:5001 (NAS)
c) otwarcie portów na WAN 443 i 1212.

Jeśli chodzi o punkt 3 czyli przejście z LAN -> WAN -> LAN to nie mam pomysłu....

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

11

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Ogólnie to tak:
Jeżeli

option redirect_https '1'
option rfc1918_filter '0'

to nie jednocześnie

list listen_https '192.168.1.1:443'
list listen_https '0.0.0.0:1212'

Albo jedno, albo drugie.

12

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Chodziło mi o to, że takie linijki jak:

list listen_https '0.0.0.0:1212'

w konfigu uhttpd są zbyteczne ponieważ odpowiednie przekierowanie zrobi firewall. Z własnej sieci dostanie się po adresie 192.168.1.1:443 a ze świata po adresie PUBLIC:1212 i nie ma sensu angażować serwer uhhtpd do słuchania na wielu portach i wszystkich adresach (0.0.0.0)

Tylko czy da się zrobić pętlę LAN -> WAN -> LAN ? bo to jest teraz najistotniejsze dla autora...

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

13 (edytowany przez build000 2015-10-22 15:53:20)

Odp: Przekierowania portów pod OpenWrt - co robię źle?

Niech mnie ktoś poprawi, jeśli się mylę, ale żeby uzyskać to co chcesz trzeba wykonać typowo uszkodzony routing przy pomocy ip.
Takie patenty właśnie się stosuje jak agresor dostanie się do routera (ale nie do końca) i zaczyna "rozglądać się" po LAN.