Проброс портов в 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 порту на наш компьютер, происходило открытые веб-сайта с адреса 10.0.0.23:

netsh interface portproxy add v4tov4 listenaddress=10.0.0.13 listenport=80 connectaddress=10.0.0.23 connectport=80

А теперь предположим, что все в той же сети есть компьютер с RDP сервером, расположенном на нестандартном для него порту 4200. Сделаем так, чтобы при попытке подключится к удаленному рабочему столу на нашем компьютере с адресом 10.0.0.13 происходило подключение к другому компьютеру.

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 — маленькая программа (полтора мегабайта), автором которой является человек с ником 3APA3A. 3proxy позволяет переадресовывать TCP и UDP трафик, а так же может выступать в роли HTTP, HTTPS, POP3, SOCKS, SMTP прокси. В данном материале мы разберем, как настроить с её помощью портмаппинг TCP или UDP.

Все настройки проброса портов задаются в конфиге который имеет название 3proxy.cfg, и должен находиться в той же директории, что и исполняемый файл программы (по умолчанию, в папке bin).

Синтаксис файла конфига следующий:

[ПРОТОКОЛ TCP или UDP]pm -i[ПРОСЛУШИВАЕМЫЙ ЛОКАЛЬНЫЙ АДРЕС] [ПРОСЛУШИВАЕМЫЙ ЛОКАЛЬНЫЙ ПОРТ] [АДРЕС НАЗНАЧЕНИЯ] [ПОРТ НАЗНАЧЕНИЯ]

То есть, если при использовании протокола TCP нужно выполнить переадресацию с локального порта 80, имеющего адрес 10.0.0.13 на удаленный адрес 10.0.0.23 с портом 8080, нужно написать следующее:

tcppm -i10.0.0.13 80 10.0.0.23 8080

Если речь идет о протоколе UDP, то вместо tcppm будет udppm. В примере ниже, мы переадресуем UDP порт 3389 с локального компьютера с адресом 10.0.0.13 на компьютер с адресом 10.0.0.23.

udppm -i10.0.0.13 3389 10.0.0.23 3389
После каждого изменения файла конфига, программу необходимо перезапускать для применения изменений!

Так же есть возможность запустить программу как службу. Для этого нужно в файле конфига указать параметр service. После этого, нужно запустить программу с параметром --install:

3proxy.exe --install

После чего, произойдет установка программы как службы. Для удаления 3proxy из служб, следует использовать параметр --remove.

Для удобства отслеживания работы портмаппинга, можно включить логирование. Делается это добавлением следующей строчки в файл конфига:

log "C:3proxylogs%Y.%m.%d.log" D

В данной строке «C:3proxylogs%Y.%m.%d.log» — путь к файлу конфига (где %Y обозначает год, %m — месяц, %d — число в имени файла), D — ежедневная ротация лога. Подробнее о настройке логирования можно прочитать на официальном сайте программы.

Пример полноценного работающего конфига для 3proxy:

service  log "C:Program Files3proxylogs%Y.%m.%d.log" D    tcppm -i192.168.240.5 8080 10.10.10.2 80  tcppm -i192.168.240.5 8081 12.0.1.122 443

nginx

Программа nginx известная в первую очередь как веб-сервер, но за счет возможности по балансировке нагрузки, она может выступать и в роли программы для перенаправления и проброса портов. У nginx есть сборка под Windows, которая к сожалению, не позволяет работать программе как службе, но эта проблема решается использованием дополнительных программ.

Для простого перенаправления 3390 порта с локального адреса на удаленный адрес 10.0.0.23 с портом 3389, достаточно привести файл конфигурации nginx.conf к приведенному ниже виду, и после этого, запустить файл nginx.exe из командной строки.

worker_processes 1;    events {  	worker_connections 1024;  }    stream {    	upstream portforward {  		server 10.0.0.23:3389;  	}    	server {  		listen 3390;  		proxy_pass portforward;  	}  }

Для протокола UDP, потребуется дополнительно указать его использование в директиве listen.

worker_processes 1;    events {  	worker_connections 1024;  }    stream {    	upstream portforward {  		server 10.0.0.23:3389;  	}    	server {  		listen 3390 udp;  		proxy_pass portforward;  		proxy_responses 0;  	}  }

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *