Проброс портов — одна из часто встречающихся задач для системного администратора. Обычно для её решения используют службы маршрутизации и удалённого доступа (RRAS), но в некоторых случаях это избыточно. В таких ситуациях на помощь приходит встроенная служба Portproxy, управляемая через командную строку утилитой Netsh.
Portproxy позволяет перенаправлять пакеты с IPv4 и IPv6 портов на любые адреса в любых комбинациях, однако работает только с протоколом TCP. Несмотря на это, функциональности Portproxy достаточно для большинства задач.
Основные команды Portproxy
1) Добавление правила
Команда для перенаправления пакетов с одного адреса и порта на другой:
netsh interface portproxy add v4tov4 listenaddress=XXX.XXX.XXX.XXX listenport=NNN connectaddress=YYY.YYY.YYY.YYY connectport=NNN
Параметры:
— listenaddress: локальный адрес, на котором принимаются соединения.
— listenport: локальный порт для входящих соединений.
— connectaddress: адрес назначения, на который перенаправляются соединения.
— connectport: порт назначения, на который перенаправляются соединения.
2) Изменение правила
Для изменения существующего правила используйте:
netsh interface portproxy set v4tov4 listenaddress=XXX.XXX.XXX.XXX listenport=NNN connectaddress=YYY.YYY.YYY.YYY connectport=NNN
3) Удаление правила
Для удаления перенаправления выполните:
netsh interface portproxy delete v4tov4 listenaddress=XXX.XXX.XXX.XXX listenport=NNN
4) Просмотр существующих правил
Для отображения всех правил перенаправления:
netsh interface portproxy show all
5) Сброс всех правил
Чтобы удалить все правила:
netsh interface portproxy reset
Практический пример
Есть две аффилированные организации с разным профилем деятельности. Первая организация имеет качественный доступ в интернет, вторая находится в сельской местности, где выделенный IP недоступен. Требуется обеспечить доступ к RDP и SSH серверам второй компании через ресурсы первой.
Исходные данные:
— Первая организация: сервер SRV-1-1, IP — 192.168.0.200.
— Вторая организация: сервера SRV-2-1 (RDP, порт 3389) и SRV-2-2 (SSH, порт 22).
— VPN-туннель соединяет серверы обеих организаций, доступ осуществляется через VPN-адреса (10.8.0.0).
Решение:
1) Настройка перенаправления RDP:
На сервере SRV-1-1 создаём правило для перенаправления внешнего порта 3390 на порт 3389 сервера SRV-2-1:
netsh interface portproxy add v4tov4 listenport=3390 listenaddress=192.168.0.200 connectport=3389 connectaddress=10.8.0.2
2) Настройка перенаправления SSH:
Создаём правило для перенаправления внешнего порта 22222 на порт 22 сервера SRV-2-2:
netsh interface portproxy add v4tov4 listenport=22222 listenaddress=192.168.0.200 connectport=22222 connectaddress=10.8.0.2
3) Дополнительная настройка на SRV-2-1:
Чтобы пакеты, попадающие на порт 22222, перенаправлялись на SSH сервер SRV-2-2, на SRV-2-1 создаём правило:
netsh interface portproxy add v4tov4 listenport=22222 listenaddress=10.8.0.2 connectport=22 connectaddress=192.168.0.201
Теперь RDP и SSH сервера второй компании доступны через порты 3390 и 22222, проброшенные через SRV-1-1. При этом:
— Внешние порты первой компании используются только для внешнего доступа.
— Сети организаций остаются изолированными.
Использование Portproxy позволяет реализовать сложные схемы перенаправления трафика без настройки маршрутизации и дополнительных инструментов. Это решение подходит для задач любой сложности, сохраняя простоту и эффективность.