Портмаппинг или переназначение портов — это процесс, позволяющий направить сетевой трафик с одного порта на другой, в том числе расположенный на другом интерфейсе. Данный функционал широко используется в маршрутизаторах для доступа из внешней сети к устройствам в локальной сети, находящейся за маршрутизатором. В Windows также можно реализовать портмаппинг, применяя встроенные функции фаервола или сторонние утилиты.
Настройка проброса портов через брандмауэр Windows
Несмотря на отсутствие явных настроек портмаппинга в интерфейсе брандмауэра Windows, такая возможность всё же существует — но она доступна только через командную строку и работает исключительно с протоколом TCP.
Синтаксис команды для портмаппинга выглядит следующим образом:
netsh interface portproxy add v4tov4 listenaddress=[ПРОСЛУШИВАЕМЫЙ_ЛОКАЛЬНЫЙ_АДРЕС] listenport=[ПРОСЛУШИВАЕМЫЙ_ЛОКАЛЬНЫЙ_ПОРТ] connectaddress=[АДРЕС_НАЗНАЧЕНИЯ] connectport=[ПОРТ_НАЗНАЧЕНИЯ]
Значение параметров команды:
— listenaddress — локальный адрес, с которого перенаправляется трафик.
— listenport — локальный порт, с которого перенаправляется трафик.
— connectaddress — адрес назначения для перенаправленного соединения.
— connectport — порт назначения для перенаправленного соединения.
Примеры:
Если у нас есть компьютер с адресом 10.0.0.13, и в сети с адресом 10.0.0.23 расположен веб-сервер, то для перенаправления запросов с порта 80 нашего компьютера на этот веб-сервер используем команду:
netsh interface portproxy add v4tov4 listenaddress=10.0.0.13 listenport=80 connectaddress=10.0.0.23 connectport=80
Для перенаправления подключения к RDP с нашего компьютера на другой, находящийся в сети, где сервер RDP слушает нестандартный порт 4200:
netsh interface portproxy add v4tov4 listenaddress=10.0.0.13 listenport=3389 connectaddress=10.0.0.23 connectport=4200
Чтобы просмотреть все настроенные правила переадресации, используйте команду:
netsh interface portproxy show all
Для удаления всех правил портмаппинга:
netsh interface portproxy reset
Проброс портов с помощью утилиты 3proxy
3proxy — это небольшая утилита, разработанная для перенаправления TCP и UDP трафика. Она также может выступать в роли различных прокси-серверов (HTTP, HTTPS, SOCKS и т.д.). Конфигурация проброса портов задается в файле 3proxy.cfg, который должен находиться в директории с утилитой.
Пример синтаксиса файла конфигурации:
[ПРОТОКОЛ TCP или UDP]pm -i[ПРОСЛУШИВАЕМЫЙ_ЛОКАЛЬНЫЙ_АДРЕС] [ПРОСЛУШИВАЕМЫЙ_ЛОКАЛЬНЫЙ_ПОРТ] [АДРЕС_НАЗНАЧЕНИЯ] [ПОРТ_НАЗНАЧЕНИЯ]
Например, чтобы перенаправить TCP трафик с локального адреса 10.0.0.13 и порта 80 на удаленный сервер с адресом 10.0.0.23 и портом 8080, используйте строку:
tcppm -i10.0.0.13 80 10.0.0.23 8080
Для перенаправления UDP порта 3389:
udppm -i10.0.0.13 3389 10.0.0.23 3389
Чтобы утилита начала работать как служба, добавьте параметр service в конфиг и запустите 3proxy.exe с параметром —install.
Проброс портов с помощью nginx
nginx — популярный веб-сервер, который также может использоваться для проброса портов и перенаправления трафика. В Windows существует версия nginx, позволяющая перенаправлять соединения, однако она не может работать как служба без дополнительного ПО.
Пример файла конфигурации для проброса порта 3390 на удаленный сервер с адресом 10.0.0.23 и портом 3389:
worker_processes 1;
events {
worker_connections 1024;
}stream {
upstream portforward {
server 10.0.0.23:3389;
}server {
listen 3390;
proxy_pass portforward;
}
}
Для проброса UDP трафика потребуется указать udp в директиве listen:
server {
listen 3390 udp;
proxy_pass portforward;
proxy_responses 0;
}
Проброс портов в Windows может быть реализован разными способами, как с использованием встроенных средств (через командную строку и брандмауэр), так и с помощью сторонних утилит, таких как 3proxy или nginx. Выбор метода зависит от ваших потребностей и уровня сложности задачи. Все указанные инструменты позволяют настроить портмаппинг, чтобы обеспечить доступ к локальным ресурсам через внешний интерфейс.