Port forwarding umějí i vaše Windows

Autor: Jiří Brejcha, redaktor NETGURU

Řekne-li se port forwarding, jistě si vybavíte domácí či firemní router, na kterém jste už něco takového dříve nastavovali. Port forwarding zpracovává příchozí TCP nebo UDP provoz a přesměrovává ho, dle vámi zadaného pravidla, na jinou cílovou IP adresu a tentýž nebo rozdílný port. Věděli jste ale, že forwardování portů hravě zvládne i počítač s Windows?

port forwarding

Na obrázku vidíte router, který přesměrovává příchozí internetový TCP provoz z portu 3389 na počítač ve vnitřní síti při zachování čísla portu. Díky tomu se na počítač dostane veškerý TCP provoz, který přichází na router z internetu na portu 3389 a počítač tak bude dostupný přes Vzdálenou plochu.

Port forwarding zvládnou i Windows
Málo kdo to tuší, ale výše popsaný scénář není zdaleka jen výsadou routerů. Naprosto bez problémů můžete router nahradit počítačem s Windows. Nastavení této funkce se provádí příkazem netsh a pro zmatení nepřítele Microsoft vymyslel pro tuto technologii svůj název Port Proxy. Vystačíte si s počítačem s jedním nebo dvěma síťovými rozhraními a nemusíte ani nastavovat žádný speciální routing.

windows port proxy

Místo routeru tedy použijme PC s Windows a dvěma síťovými rozhraními. Jedno může být Ethernet, druhé například WiFi. Notebook z internetu komunikuje s proxy počítačem a ten přepisuje cílovou IP adresu na adresu počítače v LAN síti. Pokud bychom při přesměrování zadali na port proxy počítači jiné číslo portu než bylo původní, přepsal by ho také. Všimněte si, že proxy přepíše také zdrojovou IP adresu paketu a nahradí ho  adresou svého rozhraní, které směřuje do LAN sítě. Na proxy tedy v podstatě běží něco, co bychom nazvali jako statický NAT.  A nyní k samotné konfiguraci port proxy.

Základní přesměrování
Port Proxy na Windows nastavíme pomocí příkazu netsh.  Formát bude následující:

netsh interface portproxy add v4tov4 listenaddress=62.0.3.2 listenport=3389 connectaddress=192.168.1.2 connectport=3389

Poznámka: Pokud byste chtěli port 3389 přesměrovat nezávisle na tom, ze kterého rozhraní provoz přichází, použijte následující příkaz. Windows pak naslouchají na všech aktivních síťových rozhraních.

netsh interface portproxy add v4tov4 listenport=3389 connectaddress=192.168.1.2 connectport=3389

Výpis aktivních záznamů
Ověřte si, že výsledek odpovídá vašim požadavkům a pomocí příkazu show all si vypište všechny aktivní záznamy Port Proxy.

netsh interface portproxy show all

Odstranění záznamu a reset nastavení
Přesměrování portu 3389 zrušíte velmi snadno zavoláním akce delete:

netsh interface portproxy delete v4tov4 listenport=3389

Výmaz všech pravidel provedete zavoláním:

netsh interface portproxy reset

Překlad mezi IPv4 a IPv6
Zajímavý může být i překlad mezi protokoly IPv4 a IPv6. Příchozí spojení na portu 80 přijatá na adresu 10.12.5.3 můžete forwardovat na IPv6 adresu cílového počítače.

add v4tov6 listenport=80 listenaddress=10.12.5.3 connectaddress= connectport=80

Použití v praxi
Mě osobně se tato funkce ověřila při údržbě serveru. Díky ní jsem mohl příchozí provoz na potřebnou dobu přesměrovat na jiný stroj, který obsloužil klienty. Po dokončení všech zásahů na primárním serveru jsem smazal všechna přesměrování a stroj opět převzal svou roli.

Stejně tak můžete využít Port Proxy na notebooku, který má dvě síťová rozhraní (Ethernet a WiFi). Máte-li na WiFi veřejnou IP adresu a přes Ethernet byste rádi připojili webserver, který má být dosažitelný z internetu, pouze přesměrujete na notebooku port 80 na IP adresu serveru. To vše bez routeru.

Konfigurace zůstává
Forwarding zůstává aktivní i po vypnutí počítače, což mě osobně velmi potěšilo. Nemusíte tedy při každém spuštění Windows nastavovat vše od nuly nebo psát skripty.

Omezení
Jedna nevýhoda tohoto řešení se přeci jen najde. Windows totiž pomocí Port Proxy umějí forwardovat pouze TCP provoz. Podpora UDP chybí.