Temat: Redirect portow w ramach LAN

Witam,
niby proste a mi nie dziala. Chcialem w ramach lan przekierowac wszystkie wywolania serwera 192.168.1.23:80 na 192.168.1.23:8080.
Juz zglupialem czy robie gdzies szkolny blad czy w ramach LAN po prostu to trzeba konfigurowac inaczej. Moje rozumienie jest takie ze mimo ze to ta sama podsiec to przez prerouting powinno byc mozliwe
Probowalem 2 metod:
1) przy pomocy redirect w konfiguracji FW
2) przy pomocy iptables bezposrednio: iptables -t nat -A PREROUTING -d 192.168.1.23 -p tcp --dport 80 -j DNAT --to 192.168.1.23:8080

konfiguracja (usunalem redirect w pliku, sam iptables) jest standardowa, uzywam wolnego routera na ktorym chce przetestowac ten przypadek:
---- network -----
config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fdf8:c6be:7efe::/48'

config interface 'lan'
    option type 'bridge'
    option ifname 'eth0'
    option proto 'static'
    option ipaddr '192.168.1.20'
    option dns '192.168.1.30'
    option gateway '192.168.1.1'
    option netmask '255.255.255.0'
    option ip6assign '60'

config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'

config interface 'wan6'
    option ifname 'eth1'
    option proto 'dhcpv6'

---- firewall ----

config defaults
    option syn_flood    1
    option input        ACCEPT
    option output        ACCEPT
    option forward        REJECT
# Uncomment this line to disable ipv6 rules
#    option disable_ipv6    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

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
    option name        Allow-DHCP-Renew
    option src        wan
    option proto        udp
    option dest_port    68
    option target        ACCEPT
    option family        ipv4

# Allow IPv4 ping
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

# Allow DHCPv6 replies
# see https://dev.openwrt.org/ticket/10381
config rule
    option name        Allow-DHCPv6
    option src        wan
    option proto        udp
    option src_ip        fc00::/6
    option dest_ip        fc00::/6
    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

# Allow essential incoming IPv6 ICMP traffic
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

# Allow essential forwarded IPv6 ICMP traffic
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 rule
    option name        Allow-IPSec-ESP
    option src        wan
    option dest        lan
    option proto        esp
    option target        ACCEPT

config rule
    option name        Allow-ISAKMP
    option src        wan
    option dest        lan
    option dest_port    500
    option proto        udp
    option target        ACCEPT

#config redirect                                                                                                                                       
#       option src                  lan                                                                                                                     
#       option src_dport            80                                                                                                                     
#       option dest_ip          192.168.1.23                                                                                                                   
#       option dest_port            8080                                                                                                                     
#       option proto            tcp                                 
#       option target        DNAT

# Generated by iptables-save v1.4.21 on Wed Aug 29 22:07:41 2018
*nat
:PREROUTING ACCEPT [172:18783]
:INPUT ACCEPT [4:762]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:postrouting_lan_rule - [0:0]
:postrouting_rule - [0:0]
:postrouting_wan_rule - [0:0]
:prerouting_lan_rule - [0:0]
:prerouting_rule - [0:0]
:prerouting_wan_rule - [0:0]
:zone_lan_postrouting - [0:0]
:zone_lan_prerouting - [0:0]
:zone_wan_postrouting - [0:0]
:zone_wan_prerouting - [0:0]
-A PREROUTING -d 192.168.1.23/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.23:8080
-A PREROUTING -m comment --comment "!fw3: user chain for prerouting" -j prerouting_rule
-A PREROUTING -i br-lan -m comment --comment "!fw3" -j zone_lan_prerouting
-A PREROUTING -i eth1 -m comment --comment "!fw3" -j zone_wan_prerouting
-A POSTROUTING -m comment --comment "!fw3: user chain for postrouting" -j postrouting_rule
-A POSTROUTING -o br-lan -m comment --comment "!fw3" -j zone_lan_postrouting
-A POSTROUTING -o eth1 -m comment --comment "!fw3" -j zone_wan_postrouting
-A zone_lan_postrouting -m comment --comment "!fw3: user chain for postrouting" -j postrouting_lan_rule
-A zone_lan_prerouting -m comment --comment "!fw3: user chain for prerouting" -j prerouting_lan_rule
-A zone_wan_postrouting -m comment --comment "!fw3: user chain for postrouting" -j postrouting_wan_rule
-A zone_wan_postrouting -m comment --comment "!fw3" -j MASQUERADE
-A zone_wan_prerouting -m comment --comment "!fw3: user chain for prerouting" -j prerouting_wan_rule
COMMIT
# Completed on Wed Aug 29 22:07:41 2018
# Generated by iptables-save v1.4.21 on Wed Aug 29 22:07:41 2018
*mangle
:PREROUTING ACCEPT [582:50747]
:INPUT ACCEPT [414:32726]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [273:55684]
:POSTROUTING ACCEPT [273:55684]
-A FORWARD -o eth1 -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "!fw3: wan (mtu_fix)" -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Wed Aug 29 22:07:41 2018
# Generated by iptables-save v1.4.21 on Wed Aug 29 22:07:41 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:forwarding_lan_rule - [0:0]
:forwarding_rule - [0:0]
:forwarding_wan_rule - [0:0]
:input_lan_rule - [0:0]
:input_rule - [0:0]
:input_wan_rule - [0:0]
:output_lan_rule - [0:0]
:output_rule - [0:0]
:output_wan_rule - [0:0]
:reject - [0:0]
:syn_flood - [0:0]
:zone_lan_dest_ACCEPT - [0:0]
:zone_lan_forward - [0:0]
:zone_lan_input - [0:0]
:zone_lan_output - [0:0]
:zone_lan_src_ACCEPT - [0:0]
:zone_wan_dest_ACCEPT - [0:0]
:zone_wan_dest_REJECT - [0:0]
:zone_wan_forward - [0:0]
:zone_wan_input - [0:0]
:zone_wan_output - [0:0]
:zone_wan_src_REJECT - [0:0]
-A INPUT -i lo -m comment --comment "!fw3" -j ACCEPT
-A INPUT -m comment --comment "!fw3: user chain for input" -j input_rule
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "!fw3" -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m comment --comment "!fw3" -j syn_flood
-A INPUT -i br-lan -m comment --comment "!fw3" -j zone_lan_input
-A INPUT -i eth1 -m comment --comment "!fw3" -j zone_wan_input
-A FORWARD -m comment --comment "!fw3: user chain for forwarding" -j forwarding_rule
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "!fw3" -j ACCEPT
-A FORWARD -i br-lan -m comment --comment "!fw3" -j zone_lan_forward
-A FORWARD -i eth1 -m comment --comment "!fw3" -j zone_wan_forward
-A FORWARD -m comment --comment "!fw3" -j reject
-A OUTPUT -o lo -m comment --comment "!fw3" -j ACCEPT
-A OUTPUT -m comment --comment "!fw3: user chain for output" -j output_rule
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "!fw3" -j ACCEPT
-A OUTPUT -o br-lan -m comment --comment "!fw3" -j zone_lan_output
-A OUTPUT -o eth1 -m comment --comment "!fw3" -j zone_wan_output
-A reject -p tcp -m comment --comment "!fw3" -j REJECT --reject-with tcp-reset
-A reject -m comment --comment "!fw3" -j REJECT --reject-with icmp-port-unreachable
-A syn_flood -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 25/sec --limit-burst 50 -m comment --comment "!fw3" -j RETURN
-A syn_flood -m comment --comment "!fw3" -j DROP
-A zone_lan_dest_ACCEPT -o br-lan -m comment --comment "!fw3" -j ACCEPT
-A zone_lan_forward -m comment --comment "!fw3: user chain for forwarding" -j forwarding_lan_rule
-A zone_lan_forward -m comment --comment "!fw3: forwarding lan -> wan" -j zone_wan_dest_ACCEPT
-A zone_lan_forward -m conntrack --ctstate DNAT -m comment --comment "!fw3: Accept port forwards" -j ACCEPT
-A zone_lan_forward -m comment --comment "!fw3" -j zone_lan_dest_ACCEPT
-A zone_lan_input -m comment --comment "!fw3: user chain for input" -j input_lan_rule
-A zone_lan_input -m conntrack --ctstate DNAT -m comment --comment "!fw3: Accept port redirections" -j ACCEPT
-A zone_lan_input -m comment --comment "!fw3" -j zone_lan_src_ACCEPT
-A zone_lan_output -m comment --comment "!fw3: user chain for output" -j output_lan_rule
-A zone_lan_output -m comment --comment "!fw3" -j zone_lan_dest_ACCEPT
-A zone_lan_src_ACCEPT -i br-lan -m conntrack --ctstate NEW,UNTRACKED -m comment --comment "!fw3" -j ACCEPT
-A zone_wan_dest_ACCEPT -o eth1 -m conntrack --ctstate INVALID -m comment --comment "!fw3: Prevent NAT leakage" -j DROP
-A zone_wan_dest_ACCEPT -o eth1 -m comment --comment "!fw3" -j ACCEPT
-A zone_wan_dest_REJECT -o eth1 -m comment --comment "!fw3" -j reject
-A zone_wan_forward -m comment --comment "!fw3: user chain for forwarding" -j forwarding_wan_rule
-A zone_wan_forward -p esp -m comment --comment "!fw3: Allow-IPSec-ESP" -j zone_lan_dest_ACCEPT
-A zone_wan_forward -p udp -m udp --dport 500 -m comment --comment "!fw3: Allow-ISAKMP" -j zone_lan_dest_ACCEPT
-A zone_wan_forward -m conntrack --ctstate DNAT -m comment --comment "!fw3: Accept port forwards" -j ACCEPT
-A zone_wan_forward -m comment --comment "!fw3" -j zone_wan_dest_REJECT
-A zone_wan_input -m comment --comment "!fw3: user chain for input" -j input_wan_rule
-A zone_wan_input -p udp -m udp --dport 68 -m comment --comment "!fw3: Allow-DHCP-Renew" -j ACCEPT
-A zone_wan_input -p icmp -m icmp --icmp-type 8 -m comment --comment "!fw3: Allow-Ping" -j ACCEPT
-A zone_wan_input -p igmp -m comment --comment "!fw3: Allow-IGMP" -j ACCEPT
-A zone_wan_input -m conntrack --ctstate DNAT -m comment --comment "!fw3: Accept port redirections" -j ACCEPT
-A zone_wan_input -m comment --comment "!fw3" -j zone_wan_src_REJECT
-A zone_wan_output -m comment --comment "!fw3: user chain for output" -j output_wan_rule
-A zone_wan_output -m comment --comment "!fw3" -j zone_wan_dest_ACCEPT
-A zone_wan_src_REJECT -i eth1 -m comment --comment "!fw3" -j reject
COMMIT
# Completed on Wed Aug 29 22:07:41 2018


problem rozwiazalem gdzie indziej (na docelowym serwerze robie to mapowanie dla przychodzacych polaczen), teraz juz zwyczajnie nie moge odpuscic bez zrozumienia czemu mi to nie dziala na routerze. Probowalem szukac na sieci i niby jest to mozliwe, nie widzialem jednak pelnych konfiguracji tylko pojedyncze sekcje na redirect wiec moze jakos z reszta ustawic to nie gra.

2

Odp: Redirect portow w ramach LAN

Na porcie 8080 słucha luci (i pamiętaj żeby było redirect na https wyłączone):

config uhttpd 'main'
    list listen_http '0.0.0.0:8080'
    list listen_http '[::]:8080'
    list listen_https '0.0.0.0:443'
    list listen_https '[::]:443'
    option redirect_https '0'
root@OpenWrt:~# netstat -aptn | grep 80
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      2290/uhttpd
tcp        0      0 :::8080                 :::*                    LISTEN      2290/uhttpd

Wpisując w przeglądarkę http://192.168.1.1:8080 mam luci.

Teraz robię przekierowanie:

config redirect
    option src 'lan'
    option proto 'tcp'
    option src_dport '80'
    option dest_port '8080'
    option dest_ip '192.168.1.1'

Restart firewalla i wpisując w przeglądarce http://192.168.1.1 mam normalnie dostęp do gui.

Chcesz ręcznie? Zamiast w/w regułki w firewallu zrób na konsoli:

iptables -t nat -I PREROUTING -p tcp --dport 80 -d 192.168.1.1 -j REDIRECT --to-ports 8080

Z DNAT też zadziała, ale musisz dać "-I" a nie "-A" ze względu na istniejące reguły firewalla:

iptables -t nat -D PREROUTING -p tcp --dport 80 -d 192.168.1.1 -j DNAT --to 192.168.1.1:8080

Ja sprawdzałem. Sprawdź też sam.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Redirect portow w ramach LAN

Dane:

witek_1308 napisał/a:

...
przekierowac wszystkie wywolania serwera 192.168.1.23:80 na 192.168.1.23:8080.
...
###  mój komentarz {konfig routera}
option ipaddr '192.168.1.20'
...

Wydaje mi się, że to nie da rady tak zrobić, ponieważ z konfigów autora tematu wynika że ma taką podsieć w LAN-ie:

komp A [np. 192.168.1.100] -> Router [192.168.1.20] -> serwer [192.168.1.23]

i autor chce wpisać na kompie A w przeglądarce adres 192.168.1.23:80 i żeby mu ten router przekierował port na 8080 ale na adres jakiegoś serwera 192.168.1.23

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

4

Odp: Redirect portow w ramach LAN

Jest dokladnie taki setup jak opisal mar_w, moze ja bylem zbyt malo precyzyjny ale po kilku godzinach sleczenia nad tematem podswiadomie zalozylem ze wszystko jasne.

Niestety zadna z metod podanych przez Cezarego nie dziala (o ile wpis w pliku sam probowalem o tyle mialem nadzieje na te redirecty reczne w iptables). Nie rozumiem jednak dlaczego w prerouting tego sie nie da zrobic bo nawet jesli to ta sama siec i nie ma routingu jako takiego choc decyzja musi byc podjeta to wydaje sie ze przez ten krok przechodzi kazdy pakiet. Chyba ze ta sekcja
config zone
    option name        lan
    list   network        'lan'
    option input        ACCEPT
    option output        ACCEPT
    option forward        ACCEPT

tak naprawde powoduje ze nie wchodzi pakiet do tego lancucha, moze glupoty gadam ale nie moglem nigdzie znalezc dokladnego opisu ktory by pokazywal jak to sie zachowuje w konkretnych sytuacjach a kod pewnie zbyt zagmatwany zeby go szybko zrozumiec

5

Odp: Redirect portow w ramach LAN

Czyli wszystko idzie w obrębie tego samego lanu? No to się nie da, bo  Router [192.168.1.20] nie bierze udziału w takiej transmisji jeżeli jesteś kablem spięty.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Redirect portow w ramach LAN

dzieki, tak podejrzewalem chociaz brzmi to naiwnie i moze sobie niepotrzebnie komplikowalem rozumienie architektury openwrt ale nie widzialem nigdzie schematu, ktory pokazywalby czy to obsluguje switch czy moze jednak trafia w prerouting. Wszystkie obrazki na sieci sugeruja ze wszystko trafia do prerouting po wejsciu z karty, ale teraz rozumiem ze to tylko w kontekscie iptables a nie w kontekscie software'u openwrt.

w takim razie, czy jedyna metoda zrobienia tego co chce jest przypisanie serwera docelowego do innej zony?

7

Odp: Redirect portow w ramach LAN

Tzn - tak w ogóle działa sieć i openwrt nic tu do rzeczy nie ma. Zastąp ten router switchem i też by działało, prawda? Jak byś miał dwa rozdzielone interfejsy i wymusił żeby cały ruch musiał wejść jednym i wyjść drugim - to możesz sobie zrobić co chcesz. A tak po prostu on przechodzi przez switch a system tylko smętne może sobie popatrzeć jakie pakiety lecą.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.