przekierowanie portów w systemie Windows

262

W komputerze mam dwie karty sieciowe:

Główny ma lokalny adres IP -> 192.168.1.111 Drugi ma lokalny adres IP -> 192.168.0.200

Główny ma połączenie z Internetem, a drugi jest podłączony do urządzenia o IP 192.168.0.33, ma serwer HTTP na porcie 80.

Mam serwer Apache w głównym połączeniu (port 4422) i mogę uzyskać dostęp z dowolnego miejsca, teraz chcę po wykryciu połączenia z 4422 chcę przekierować to połączenie na 192.168.2.33:80

Jak mogę to zrobić w systemie Windows?

użytkownik1256477
źródło
Więcej informacji można znaleźć tutaj. technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx
Shankar Damodaran

Odpowiedzi:

507

Rozwiązałem to, można to zrobić wykonując:

netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

Aby usunąć przekazywanie:

netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111

Oficjalne dokumenty

użytkownik1256477
źródło
21
Tylko upewnij się, że masz zainstalowany IPv6. Zgodnie z tym artykułem MS KB , netsh potrzebuje bibliotek IPv6 do skonfigurowania funkcji proxy portu.
Renan Mozone
10
Możesz także wykonać czyszczenie za pomocą netsh interface portproxy resetlub netsh interface portproxy delete
patrikbeno
7
Próbowałem użyć tej techniki i chociaż działała, była bardzo powolna. Zamiast. Znalazłem narzędzie o nazwie PassPort ( sourceforge.net/projects/pjs-passport ), które wykonuje ten sam typ przekierowania portów związany z konkretną kartą sieciową, ale nie ma problemów z wydajnością netsh. Instaluje się i działa dobrze na Win2008SvrR2.
James L.
14
Powyższe polecenie nie działało dla mnie w systemie Windows7 ani Windows Server 2003. Musiałem też podać parametr protokół = tcp . Pełne polecenie:netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33 protocol=tcp
alwi
3
UWAGA: działa to tylko w TCP , więc nie ma szczęścia, jeśli chcesz przekazać ruch UDP.
user276648,
14

nginx jest przydatny do przesyłania HTTP na wiele platform, w tym Windows. Jest bardziej łatwy w konfiguracji i rozszerzaniu dzięki bardziej zaawansowanej konfiguracji. Podstawowa konfiguracja może wyglądać mniej więcej tak:

events {}

http {
     server {

        listen 192.168.1.111:4422;

        location / {
            proxy_pass http://192.168.2.33:80/;
        }
     }
}
Jonas Lundgren
źródło
14
Jest to dobre rozwiązanie dla przekazywania HTTP, ale tylko dla przesyłania HTTP (ze wszystkimi jego zastrzeżeniami, np. Websockets wymagają dodatkowej konfiguracji). W przypadku przekazywania HTTPS lub innych dowolnych protokołów (np. RDP) jest to w większości bezużyteczne.
Uli Köhler,
2
To powiedziawszy, jest to niezwykle dobre rozwiązanie do przesyłania dalej HTTP, więc cieszę się, że tu jest.
Casey
Dlaczego? Możesz przesyłać strumieniowo dalej, co chcesz, w tym https
user1156544
@uli, o których ustawieniach się tolktujesz ... Przydatne będzie udostępnianie
użytkownik3787216,
1
@ UliKöhler Nginx to narzędzie do rozłączania połączeń TCP. Możesz go używać do HTTP, HTTPS, AMQP, WebSockets, cokolwiek. Jest wykorzystywany wewnętrznie przez narzędzia do przekierowywania i zarządzania ogólną łącznością TCP. To jest prawidłowe rozwiązanie. Zobacz także netfxharmonics.com/2016/03/nginx
David Betz
1

Korzystałem z tego małego narzędzia, gdy tylko zajdzie taka potrzeba: http://www.analogx.com/contents/download/network/pmapper/freeware.htm

Ostatnia aktualizacja tego narzędzia miała miejsce w 2009 roku. Zauważyłem, że na moim komputerze z Win10 zawiesza się na kilka sekund, gdy czasami otwierają nowe okna. Poza tym błędem interfejsu użytkownika nadal działa dobrze.

voon
źródło