Obecnie mam urządzenie NAS działające pod portem 80. Aby uzyskać dostęp do NAS z zewnątrz, zamapowałem port 8080 na port 80 na serwerze NAS w następujący sposób:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80
To działa jak urok. Działa to jednak tylko wtedy, gdy uzyskuję dostęp do strony internetowej z zewnątrz sieci (w pracy, w innym domu itp.). Więc kiedy piszę mywebsite.com:8080
, IPTables wykonują zadanie poprawnie i wszystko działa dobrze.
Problem polega na tym, jak mogę przekierować ten port z wnętrza sieci? Moja nazwa domeny mywebsite.com
wskazuje na mój router (mój serwer linux) od wewnątrz (10.32.25.1), ale chcę przekierować port 8080 do portu 80 na 10.32.25.2 od wewnątrz.
Jakieś wskazówki?
Edytuj nr 1
Próbując pomóc w rozwiązaniu tego problemu, zestawiłem ten schemat. Zaktualizuj, jeśli jest to niepoprawne lub wprowadzające w błąd to, czego szukasz.
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 8080________ | |
( internet )------------>[_...__...°]------------->| NAS |
'-( ).-' 10.32.25.2 ^ 10.32.25.1 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|
10.32.25.1:8080
przekierowanie do10.32.25.2:80
. Moja powyższa reguła działa z zewnątrz, ale nie z wnętrza mojej sieci. Więc jeśli jestem w biurze, mogę uzyskać dostęp do mojego serwera NAS ze strony internetowej.com:8080 i jest on całkowicie przejrzysty. Z mojego domu website.com:8080 wskazuje na 10.32.25.1, ponieważ jest to mój router aka serwer Linux. Chcę przekierować port 8080 do NAS również na porcie 80, ale znowu w przejrzysty sposób.eth0 10.32.25.2
tak”, abyśmy mogli napisać użycie iptables na podstawie interfejsu przychodzącegoOdpowiedzi:
W końcu znalazłem instrukcje. Najpierw musiałem dodać
-i eth1
do mojej reguły „na zewnątrz” (eth1 to moje połączenie WAN). Musiałem także dodać dwie inne reguły. Tutaj w końcu to, co przyszedłem:źródło
Zapomniałeś również wspomnieć, że przekazywanie pakietów powinno być włączone, aby móc wykonywać docelowy NAT. Domyślnie jest zwykle wyłączony, więc reguły iptables nie będą działać. Można to włączyć, wydając:
źródło
Najpierw zezwól na przekazywanie za pomocą
Następnie ustaw reguły iptable za pomocą
Możesz
/etc/rc.local
na przykład wstawić te linie . Uwaga: ponieważ Debian jessie sprawia, że jest wykonywalny i włącza usługę rc.local poprzezźródło
Najpierw musisz sprawdzić, czy masz włączone przekazywanie:
cat /proc/sys/net/ipv4/ip_forward
Jeśli nie
1
, uruchomecho 1 > /proc/sys/net/ipv4/ip_forward
.Jeśli chcesz, aby ruch uderzający w 10.32.25.1 na porcie 80 i 443 był przekierowywany do portu 80.32.25.2, powinieneś użyć poniższej reguły:
źródło