W systemie Windows, począwszy od Windows XP, jest wbudowana opcja instalacji przekierowanie portów / przekierowanie (port spedycyjny) Dzięki tej funkcji przychodzące połączenie TCP (IPv4 lub IPv6) z dowolnym portem lokalnym) może zostać przekierowane na inny port, a nawet do portu na komputerze zdalnym. Ponadto nie jest konieczne, aby system miał usługę nasłuchującą na tym porcie.
W Linuksie przekierowanie portów jest dość proste przy użyciu iptables. W systemach Windows Server routing portów zwykle korzysta z usługi Routing i dostęp zdalny (RRAS). Istnieje jednak łatwiejszy sposób skonfigurowania portu przekazywania, który działa równie dobrze w każdej wersji systemu Windows..
Przekazywanie portów w systemie Windows jest konfigurowane z wiersza polecenia poprzez tryb Portproxy Zespoły Netsh. Składnia polecenia jest następująca:netsh interface portproxy dodaj v4tov4 listenaddress = adres lokalny listenport = port lokalny connectaddress = adres docelowy connectport = port docelowy
gdzie,
- adres odsłuchu - lokalny adres IP, na którym będzie oczekiwane połączenie
- Listenport - lokalny port TCP do nasłuchiwania (oczekuje się na nim połączenia przychodzącego)
- adres połączenia - lokalny lub zdalny adres IP lub nazwa DNS, na które należy przekierowywać połączenie przychodzące
- Connectport - Port TCP, do którego zostanie przekierowane połączenie z portu nasłuchiwania
Powiedzmy, że naszym zadaniem jest sprawienie, aby usługa RDP odpowiadała na niestandardowym porcie, na przykład 3340 (oczywiście ten port można zmienić w ustawieniach samej usługi, ale używamy RDP w celu uproszczenia demonstracji techniki przekierowania). Aby to zrobić, musimy przekierować ruch przychodzący na port TCP 3340 na inny port lokalny - 3389 (standardowy port rdp).
Uwaga. Port ten nie powinien być odsłuchiwany w systemie przez inną usługę.Uruchom wiersz poleceń z uprawnieniami administratora i uruchom.
netsh interface portproxy add v4tov4 listenport = 3340 listenaddress = 10.10.1.110 connectport = 3389 connectaddress = 10.10.1.110
Gdzie 10.10.1.110 jest bieżącym adresem IP tego komputera
Za pomocą netstat sprawdzamy, czy port 3340 jest nasłuchiwany na komputerze:
netstat -ano | findstr: 3340Uwaga. Jeśli to polecenie nic nie zwraca, a przekierowanie portów przez interfejs netsh portproxy nie działa, upewnij się, że usługa iphlpsvc jest włączona w twoim systemie (IP Helper / IP Helper Service).
W interfejsie sieciowym, dla którego tworzona jest reguła przekierowania portów, musi być włączona obsługa protokołu IPv6.
Są to warunki wstępne prawidłowego działania przekierowania portów. Bez włączonego IP Helper i IPv6 mechanizm przekierowania nie działa.
Możesz określić proces nasłuchujący na tym porcie za pomocą jego PID (w naszym przykładzie PID to 636):
tasklist | findstr 636
Spróbujemy połączyć się z tym komputerem ze zdalnego systemu za pomocą dowolnego klienta rdp. Musisz podać 3340 jako port rdp (port jest określony po dwukropku po adresie serwera rdp), na przykład 10.10.1.110:3340:
Połączenie musi zostać ustanowione pomyślnie.
Jest ważne. Sprawdź, czy w ustawieniach zapory (zapory systemu Windows lub zapory innej firmy, są one często zawarte w oprogramowaniu antywirusowym) dozwolone są połączenia przychodzące do nowego portu. W razie potrzeby możesz dodać nową regułę do zapory systemu Windows za pomocą polecenia:
netsh advfirewall firewall dodaj nazwę reguły = protokół „RDP_3340” = katalog TCP = w localip = 10.10.1.110 localport = 3340 akcja = zezwól
Podczas tworzenia przychodzącej reguły zapory za pomocą interfejsu graficznego dla portu 3340 nie trzeba kojarzyć żadnego programu, ponieważ ten port jest nasłuchiwany wyłącznie przez sterownik sieci.
Możesz utworzyć dowolną liczbę reguł przekierowania portów systemu Windows. Wszystkie reguły portproxy interfejsu netsh są trwałe i pozostają w systemie po ponownym uruchomieniu systemu Windows.
Wyświetlamy listę wszystkich reguł przekierowania portów TCP w systemie:
netsh interface portproxy pokaż wszystko
W naszym przypadku istnieje tylko jedna reguła przekierowania z portu 3340 na 3389:
Słuchaj na ipv4: Połącz z ipv4:
Adres Port Adres Port
--------------- ---------- --------------- ----------
10.10.1.110 3340 10.10.1.110 3389
netsh interface portproxy dump
# ==========================
# Konfiguracja serwera proxy portu
# ==========================
portproxy interfejs pushd
zresetować
dodaj v4tov4 listenport = 3340 connectaddress = 10.10.1.110 connectport = 3389
popd
# Koniec konfiguracji serwera proxy portu
Aby usunąć określoną regułę przekierowania:
netsh interface portproxy delete v4tov4 listenport = 3340 listenaddress = 10.10.1.110
Aby wyczyścić wszystkie dostępne reguły przekierowania:
netsh interface portproxy resetJest ważne. Taki schemat przekierowania działa tylko dla portów TCP ... Ruchu na portach UDP nie można przekierować. Nie można również użyć adresu 127.0.0.1 jako adresu połączenia.
Jeśli musisz przekierować przychodzące połączenie TCP na inny komputer, polecenie może wyglądać następująco:
netsh interface portproxy add v4tov4 listenport = 3389 listenaddress = 0.0.0.0 connectport = 3389 connectaddress = 192.168.1.100
Ta reguła przekieruje wszystkie przychodzące żądania RDP (do portu 3389) z tego komputera na komputer zdalny o adresie IP 192.168.1.100
Inną niejawną funkcją portproxy jest możliwość stworzenia wyglądu lokalnego działania dowolnej zdalnej usługi sieciowej.
Na przykład takie przekierowanie tworzymy z portu lokalnego 8888 na zdalny adres 213.180.204.3:
netsh interface portproxy add v4tov4 listenport = 8888 connectport = 80 connectaddress = 213.180.204.3 protokół = tcp
Teraz, jeśli w przeglądarce przejdziesz na adres http: // localhost: 8888 /, otworzy się strona początkowa Yandex. Tj. pomimo faktu, że przeglądarka uzyskuje dostęp do komputera lokalnego, otwiera zdalną stronę.
Przekierowanie portów można również wykorzystać do przekierowania portu z adresu zewnętrznej karty sieciowej do portu na maszynie wirtualnej działającej na tym samym komputerze.
Zdarzały się również przypadki, w których w systemie Windows Server 2012 R2 reguły przekierowania portów działały tylko do momentu ponownego uruchomienia systemu, a po ponownym uruchomieniu zostały zresetowane. W takim przypadku musisz sprawdzić, czy występują okresowe wyłączenia interfejsu sieciowego i czy adres IP nie zmienia się podczas uruchamiania systemu operacyjnego (lepiej jest użyć statycznego adresu IP). Aby obejść ten problem, musiałem dodać skrypt z regułami portproxy interfejsu netsh do harmonogramu systemu Windows, który jest uruchamiany podczas uruchamiania systemu.
W systemie Windows Server 2003 / XP, aby przekierowanie działało, należy dodatkowo włączyć ustawienie rejestru IPEnableRouter = 1 w oddziale HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services \ Tcpip \ Parameters