В Windows, започвайки с Windows XP, има вградена опция за инсталиране пренасочване / пренасочване на порт (пристанище за пренасочване). Поради тази функция, входяща TCP връзка (IPv4 или IPv6) към всеки местен порт) може да бъде пренасочена към друг порт или дори към порт на отдалечен компютър. Освен това не е необходимо системата да има услуга за слушане на този порт.
В Linux пренасочването на пристанища е доста просто с помощта на iptables. В системите на Windows Server маршрутизацията на порт обикновено използва услугата за маршрутизиране и отдалечен достъп (RRAS). Съществува обаче по-лесен начин за конфигуриране на порта за пренасочване, който работи еднакво добре във всяка версия на Windows..
Пренасочването на порта на Windows се конфигурира от командния ред през режим Portproxy Netsh екипи. Синтаксисът на командата е следният:netsh интерфейс portproxy добави v4tov4 listenaddress = localaddress listeport = localport connectaddress = destaddress connectport = destport
където,
- listenaddress - локален IP адрес, на който ще се очаква връзката
- listenport - локален TCP порт за слушане (входяща връзка ще се очаква на него)
- connectaddress - локален или отдалечен IP адрес или DNS име, към което трябва да бъде пренасочена входящата връзка
- connectport - TCP порт, към който ще бъде пренасочена връзката от порта за listeport
Да речем, че нашата задача е да накараме RDP услугата да отговори на нестандартен порт, например 3340 (този порт, разбира се, може да бъде променен в настройките на самата услуга, но ние използваме RDP за опростяване на демонстрацията на техниката на пренасочване). За да направите това, трябва да пренасочим входящия трафик към TCP порт 3340 към друг локален порт - 3389 (стандартен rdp порт).
забележка. Този порт не трябва да бъде слушан в системата от друга услуга.Изпълнете командния ред с права на администратор и изпълнете.
netsh интерфейс portproxy добави v4tov4 listeport = 3340 listenaddress = 10.10.1.110 connectport = 3389 connectaddress = 10.10.1.110
Където 10.10.1.110 е текущият IP адрес на този компютър
Използвайки netstat, ние проверяваме, че порт 3340 се слуша на компютъра:
netstat -ano | findstr: 3340забележка. Ако тази команда не върне нищо и пренасочването на порт през мрежовия интерфейс portproxy не работи, уверете се, че услугата iphlpsvc е активирана на вашата система (IP Helper / IP Helper Service).
И на мрежовия интерфейс, за който се създава правилото за пренасочване на портове, трябва да е активирана поддръжката на IPv6.
Това са предпоставки за правилната работа на пренасочване на пристанища. Без активиран IP Helper и IPv6 механизмът за пренасочване не работи.
Можете да определите процеса, който слуша на този порт, като използвате неговия PID (в нашия пример, PID е 636):
списък със задачи | findstr 636
Ще се опитаме да се свържем с този компютър от отдалечена система, използвайки всеки rdp клиент. Трябва да посочите 3340 като порт rdp (портът е посочен след двоеточието след адреса на rdp сървъра), например 10.10.1.110:3340:
Връзката трябва да се установи успешно.
Важно е. Проверете дали в настройките на вашата защитна стена (защитна стена на Windows или защитна стена на трета страна, те често са включени в антивирусен софтуер) са разрешени входящите връзки към новия порт. Ако е необходимо, можете да добавите ново правило към защитната стена на Windows с командата:
netsh advfirewall firewall добавете име на правило = „RDP_3340“ протокол = TCP dir = in localip = 10.10.1.110 localport = 3340 действие = разреши
Когато създавате правило за входяща защитна стена чрез графичен интерфейс за порт 3340, не е необходимо да свързвате никоя програма, тъй като този порт се слуша изключително от мрежовия драйвер.
Можете да създадете произволен брой правила за пренасочване на порта на Windows. Всички правила за портпрокси за интерфейс на мрежата са постоянни и съществуват в системата след рестартиране на Windows.
Показваме списък на всички правила за пренасочване на TCP порта в системата:
netsh интерфейс portproxy покажи всички
В нашия случай има само едно правило за пренасочване от порт 3340 до 3389:
Слушайте в ipv4: Свържете се с ipv4:
Адрес Порт Адрес Порт
--------------- ---------- --------------- ----------
10.10.1.110 3340 10.10.1.110 3389
netsh интерфейс portproxy сметище
# ===========================
# Порт прокси конфигурация
# ===========================
pushd интерфейс portproxy
нулиране
добавете v4tov4 listeport = 3340 connectaddress = 10.10.1.110 connectport = 3389
Превърта стека
# Край на конфигурация Port Proxy
За да премахнете конкретно правило за пренасочване:
netsh интерфейс portproxy изтриване v4tov4 listeport = 3340 listenaddress = 10.10.1.110
За да изчистите всички налични правила за пренасочване:
нулиране на интерфейса на портпрокси интерфейсВажно е. Такава схема за пренасочване работи само за TCP портове ... Трафикът на UDP портове не може да бъде пренасочен. Освен това не можете да използвате адреса 127.0.0.1 като свързващ адрес.
Ако трябва да пренасочите входящата TCP връзка към друг компютър, командата може да изглежда така:
netsh интерфейс portproxy добави v4tov4 listeport = 3389 listenaddress = 0.0.0.0 connectport = 3389 connectaddress = 192.168.1.100
Това правило ще пренасочи всички входящи заявки за RDP (към порт 3389) от този компютър към отдалечения компютър с IP адрес 192.168.1.100
Друга имплицитна характеристика на portproxy е възможността да създава облика на локална работа на всяка отдалечена мрежа.
Например създаваме такова пренасочване от локалния порт 8888 към отдалечения адрес 213.180.204.3:
netsh интерфейс portproxy добави v4tov4 listeport = 8888 connectport = 80 connectaddress = 213.180.204.3 протокол = tcp
Сега, ако в браузъра отидете на адрес http: // localhost: 8888 /, ще се отвори началната страница на Yandex. Т.е. въпреки факта, че браузърът има достъп до локалния компютър, той отваря отдалечена страница.
Пренасочването на портове може да се използва и за пренасочване на порт от външен адрес на мрежова карта към порт на виртуална машина, работещ на същия компютър.
Имало е и случаи, при които в Windows Server 2012 R2 правилата за пренасочване на пристанищата са работили само докато системата не се рестартира и след рестартирането са били нулирани. В този случай трябва да проверите дали има периодични изключения в мрежовия интерфейс и дали IP адресът не се променя, когато OS се стартира (по-добре е да използвате статичен IP). Като решение, трябваше да добавя скрипт с правилата на интерфейса portproxy на netsh към планировчика на Windows, който се изпълнява, когато системата се стартира.
В Windows Server 2003 / XP, за да работи пренасочването, трябва допълнително да активирате настройката на системния регистър IPEnableRouter = 1 в клона HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services \ Tcpip \ Параметри