Chcę przekierować cały ruch z portu 443 na port wewnętrzny 8080. Korzystam z tej konfiguracji dla iptables:
iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp \
--dport 443 -j REDIRECT --to-ports 8080
Działa to dla wszystkich klientów zewnętrznych. Ale jeśli próbuję uzyskać dostęp do portu 443 z tej samej maszyny, otrzymam błąd odmowy połączenia.
wget https://localhost
Jak mogę rozszerzyć regułę iptables, aby przekierowywać również ruch lokalny?
Odpowiedzi:
PREROUTING nie jest używany przez interfejs pętli zwrotnej, musisz również dodać regułę OUTPUT:
źródło
Aby przekierować pakiety z hosta lokalnego na inny komputer, reguła:
będzie działać, ALE musisz także włączyć tę opcję w jądrze:
Bez tego ustawienia jądra nie będzie działać.
źródło
Co powiesz na to?
źródło
Powiedziałeś, że otrzymujesz błąd odmowy połączenia . Oznacza to, że nie ma lokalnego procesu nasłuchującego na porcie, z którym próbujesz się połączyć! Aby sprawdzić procesy nasłuchiwania, użyj polecenia:
Po zastosowaniu reguły powinieneś mieć proces nasłuchujący na porcie 8080, aby się połączyć.
Wydaje się, że zamiast tego powinieneś mieć następującą zasadę:
Pamiętaj, że wysyłasz z lokalnego hosta. Musisz przekierować pakiet wyjściowy.
źródło