Проброс портов в Windows (портмаппинг)
- Recluse
- 20.10.2022
- 7 754
- 0
- 16.07.2023
- 6
- 6
- 0
- Содержание статьи
Портмаппинг, или же, переназначение портов - возможность перенаправить трафик с одного сетевого порта на другой, в том числе, расположенный на другом интерфейсе. Подобный функционал присутствует практически в любом роутере, и используется для возможности доступа из внешней сети к ресурсам локальной сети, расположенной за роутером. Портмаппинг так же можно реализовать и в операционных системах 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:\3proxy\logs\%Y.%m.%d.log" D
В данной строке "C:\3proxy\logs\%Y.%m.%d.log" - путь к файлу конфига (где %Y обозначает год, %m - месяц, %d - число в имени файла), D - ежедневная ротация лога. Подробнее о настройке логирования можно прочитать на официальном сайте программы.
Пример полноценного работающего конфига для 3proxy:
service
log "C:\Program Files\3proxy\logs\%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;
}
}
Добавить комментарий