Настройка порт форвардинга в Windows | Windows для системных администраторов

Настройка порт форвардинга в Windows

В ОС Windows, начиная с Windows XP, существует встроенная возможность установки перенаправления сетевых портов (порт форвардинга).  Благодаря этой возможности входящее TCP соединение на любой порт) можно перенаправить на другой порт или даже на другой компьютер. Причем не обязательно, чтобы в системе был сервис, слушающий данный порт.

Функционал настройки порт-форвардинга в Windows реализуется через режим Portproxy команды  Netsh. Синтаксис команды следующий:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
где,

  • listenaddress – локальный  адрес, на котором будет ожидаться соединение
  • listenport – локальный порт, который должен слушаться (на него ожидается соединение)
  • connectaddress – ip-адрес / dns-имя, на который будет перенаправляться соединение
  • connectport – TPC порт, на который перенаправляется соединение с порта listenport

Допустим наша задача, заставить службу RDP отвечать на нестандартном порту, например  3340 (этот порт, конечно, можно изменить в настройках самой службы, но мы используем именно RDP для упрощения демонстрации техники перенаправления).

Запускаем командную строку с правами администратора и выполняем.

netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.10.1.110 connectport=3389 connectaddress=10.10.1.110

netsh interface portproxy - правило перенаправления портов Windows

С помощью netstat проверим, что на компьютере стал прослушиваться порт 3340:

netstat -ano | findstr :3340

netstat -ano | findstr :3340

Определить процесс, который слушает этот порт можно с помощью его PID (в нашем примере PID – 336):

tasklist | findstr 336

Попытаемся подключиться к этому компьютеру с удаленной системы с помощью любого rdp клиента. В качестве rdp-порта  нужно указать 3340 (порт указывается после двоеточия после адреса rdp-сервера): RDP подключение на другой порт

Подключение должно успешно установиться.

Важно. Проверьте, что в настройках вашего файервола (брандмауэра  Windows или стороннего сетевого экрана,  такие часто включаются в состав антивирусного ПО) разрешены входящие подключения на новый порт. В случае необходимости в брандмауэра  Windows можно добавить новое правило командой:

netsh advfirewall firewall add rule name=”RDP_3340” protocol=TCP dir=in localip=10.10.1.110  localport=3340 action=allow

Выведем на экран список всех правил перенаправления в системе:

netsh interface portproxy show all

В нашем случае присутствует только одно правило форвардинга с порта 3340 на 3389:

Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
10.10.1.110     3340        10.10.1.110     3389

Совет. Также настройки режима portproxy можно получить так:
netsh interface portproxy dump
#========================
# Port Proxy configuration
#========================
pushd interface portproxy
reset
add v4tov4 listenport=3340 connectaddress=10.10.1.110 connectport=3389
popd
# End of Port Proxy configuration

Конфигурация перенаправления портов Windows

Чтобы удалить определенное правило перенаправления:

netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.10.1.110

Удалить правило перенаправления портов

Чтобы очистить все имеющиеся правила перенаправления:

netsh interface portproxy reset
Важно. Такая схема перенаправления работает только для TCP портов, UDP порты перенаправить не удастся. Также нельзя использовать в качестве connectaddress адрес 127.0.0.1.

Если нужно перенаправить входящее TCP соединение на другой компьютер, команда может выглядеть так:

netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.1.100

Это правило перенаправит все входящие RDP запросы на ip-адрес 192.168.1.100

Еще одной неявной фичей portproxy является возможность создать видимость локальной работы любого удаленного сетевого сервиса.

Например, создадим такое перенаправление с локального порта 8888 на удаленный адрес 213.180.204.3:

netsh interface portproxy add v4tov4 listenport=8888 connectport=80 connectaddress= 213.180.204.3 protocol=tcp

Теперь, если в браузере перейди по адресу http://localhost:8888/, откроется стартовая страница Yandex. Т.е. несмотря на то, что браузер обращается к локальному компьютеру, в нем открывается удаленная страница. Перенаправление yandex

Перенаправление портов также можно использовать, чтобы пробросить порт с внешнего адреса сетевой карты на порт виртуальной машины, запущенной на этом же компьютере.

Еще записи по теме: Windows 7
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 31

Оставить комментарий
  1. Арнольд | 23.12.2014

    Отличная тема для статьи, спасибо.
    А теперь вопрос, если у меня в ответ на команду

    netstat -ano | findstr :3389

    выдается
    TCP  0.0.0.0:3389  0.0.0.0:0 LISTENING 1324
    номарльно ли это? Не должен ли выдаваться мой локальный адрес с указанием порта 3389 (что-то вроде 192.168.1.100:3389). И да, подключение по RDP к этому компьютеру не работает.
    Выслушаю любые предложения.

    Ответить
    • itpro | 25.12.2014

      Судя по строке TCP  0.0.0.0:3389  0.0.0.0:0 LISTENING 1324, на вашем компьютере служба RDP запущена. Имеенно так она и должна отображаться.
      А снаружи не удается подключится из за настроек файерволов/брандмауэров.

      Ответить
  2. myr4ik07 | 25.12.2014

    супер, в еверноут )), я почти все с вашего блога как не в еверноуте ) то в покете ) для подальшого возврата, единственный ресурс на моей памяти где очень полезной и четкой информации о таких делах, ничего лишнего.

    Ответить
  3. Silver23 | 10.01.2015

    Добрый вечер подскажите сработает такая схема: на роутере настроен порт форвардинг на сервер:3389 для подключения из вне (схема опасное, но до этого пока у админов нет дела), могу я с помощью этого порта 3389 перенаправить на порт например свой локальной машины где установлен radmin. Вы указали что можно, но мне интересно не помешает это правило работать пользователям которые подключаются к серверу

    Ответить
    • itpro | 12.01.2015

      Вы можете перенаправить трафик, приходящий на порт 3389 сервера на другой компьютер в сети. Но в таком случае остальные пользователи подключится по rdp к серверу не смогут. Всех их обращения по этому порту будут перенаправляться на вашу локальную машину.

      Ответить
  4. Vjik58 | 27.03.2015

    Спасибо за статью, но есть замечание, что бы эта радость работала, необходимо на интерфейсе добавить протокол ip V6

    Ответить
  5. Alex_023 | 11.05.2015

    А как насчет аналога в нативном powershell? Пока и в нем конечно работает netsh. Но он уже ругается:
    В будущих версиях Windows корпорация Майкрософт может удалить функциональность
    Netsh для TCP/IP.
    Если вы используете Netsh для настройки и управления TCP/IP, мы
    рекомендуем вам перейти на оболочку Windows PowerShell.
    Чтобы просмотреть список команд для управления TCP/IP,
    введите Get-Command -Module NetTCPIP в командной строке Windows PowerShell.
    Дополнительные сведения о командах PowerShell для TCP/IP см.
    по адресу http://go.microsoft.com/fwlink/?LinkId=217627.

    Ответить
  6. Николай | 24.08.2015

    Вот я поставил форвардинг из-вне на ВМ в локальной сети, но после перезагрузки хоста правило перестает работать. В списке правил есть, но не работает. В чем может быть проблема?

    Ответить
    • itpro | 27.08.2015

      Файервол после перезагрузки не включился случайно? А если удалить и заново создать правило, форвард порта работает?

      Ответить
      • Николай | 01.09.2015

        В файрволе создано правило для входа на этот порт. В списке присутствует. Если заново добавить — работает. Единственное — может это из-за того, что ВМ стартует не сразу. Как это проверить — не знаю.

        Ответить
  7. den | 20.01.2016

    Всем, у кого не работает!
    и после netstat -ano | findstr :3340 ничего не выводит!
    нужно включить службу «Вспомогательная служба IP»

    Ответить
    • ruslan | 22.06.2016

      Спасибо, этот коммент помог мне все настроить, статья на 5+.

      Кстати по поводу службы, вот что ОС пишет, для чего она нужна,
      «Обеспечивает возможность туннельного подключения с помощью технологий туннелирования для IP версии 6 (6to4, ISATAP, порты прокси и Teredo), а также IP-HTTPS. Если остановить эту службу, компьютер не сможет использовать дополнительные возможности подключения, предоставляемые этими технологиями.»

      Ответить
    • Евгений | 14.10.2016

      Действительно без включенной службы iphlpsvc (IP Helper в английской версии) порт форвард не работает. Спасибо!

      Ответить
  8. Epsylon_MF | 06.04.2016

    А можно поподробнее о возможности, упомянутой в конце статьи?

    «Перенаправление портов также можно использовать, чтобы пробросить порт с внешнего адреса сетевой карты на порт виртуальной машины, запущенной на этом же компьютере.»

    На Хосте 192.168.0.100 две виртуалки VMWare 192.168.0.101 и 192.168.0.102. Только ради RDP к ним стоит маршрутизатор. Хотелось бы от него отказаться.

    Команды из статьи не помогли. По RDP порту 33892 начал отзываться хост.
    netsh interface portproxy add v4tov4 listenport=3389 listenaddress=192.168.0.100 connectport=3389 connectaddress=192.168.0.101

    Ответить
    • itpro | 06.04.2016

      В первую очередь проверьте доступность ВМ (192.168.0.101) с хоста. Возможно ли подключится с хоста на порт 3389 ВМ?

      Ответить
      • Epsylon_MF | 06.04.2016

        Да, и с хоста и снаружи за маршрутизатором.

        Ответить
        • Epsylon_MF | 06.04.2016

          Хотел поиграться с настройкой сетевого адаптера виртуалки. Стояло Bridged. Поставил NAT. Потерял доступ к хосту по RDP. Поеду к консоли возвращать как было.

          Вообще, посмотрел на других своих виртуалках: в разных виртуалках стоят все возможные варианты Bridged, NAT, Host-only, Custom:VMnet0

          Ответить
          • Epsylon_MF | 13.04.2016

            Всё заработало. На маршрутизаторе направлял 33891 и 33892 на 3389 на хосте. Поправил.

            Спасибо за полезную информацию.

            Ответить
    • Epsylon_MF | 13.04.2016

      Всё получилось. По ошибке на маршрутизаторе перенаправлял на хост порты 33891 и 33892 на 3389. Поправил, всё заработало! Теперь можно снимать маршрутизатор.

      Спасибо большое.

      А можно 80 порт направлять yf хосте на разные виртуалки в зависимости от доменного имени? На одной виртуалке стоит Редмайн с Апачами, а на другой IIS.

      Ответить
      • itpro | 13.04.2016

        Этот форвард придется реализовать средствами веб сервера. На IIS это может быть URL Rewrite, в апач вроде через mod_rewrite

        Ответить
  9. Алексей | 08.04.2016

    itpro подскажите, а как сделать подобный проброс на компьютер из другой подсети. В моём случае vpn реализована не штатными средствами windows?

    Ответить
    • itpro | 12.04.2016

      Исходный и целевой компьютер могут находится в разных IP подсетях. Так что настройка аналогичная. Главное условие, чтобы целевая подсеть была доступна (маршрутизировалась) с исходного сервера, и на уровне файерволов не закрыт перенаправляемый порт.

      Ответить
      • Алексей | 12.04.2016

        Если я настраиваю родными средствами винды, то всё работает пробрасывается порт и на 192.168.1.2 и на 192.168.2.2
        Если vpn через аналог, в свойствах сетевой добавляю дополнительный адрес второй подсети, при этом пинг идёт, но если прописываю правило проброса порта, ничего не происходит как будто сервер не понимает что надо пробросить в другую подсеть.
        Фаервол при этом отключен

        Ответить
        • itpro | 13.04.2016

          Некоторые VPN-ы грешат тем, что сначала редиректят трафик в туннель через себя, отправляя его на внутренний loopback интерфейс и потом уже от своего имени отправляя дальше. Возможно проще всего поменять VPN клиент
          Или попробовать настроить форвард через службу RRAS (на серверной Windows) — но это тоже под вопросом.

          Ответить
          • Алексей | 13.04.2016

            Вернул всё на штатные средства винды. От SoftEther VPN Server Manager 4.19 отказался так и не разобравшись с ситуацией проброса порта на другую подсеть. Хороший продукт, ну да и ладно…

            Ответить
  10. Dmitry | 20.05.2016

    Доброго времени суток,подскажите мне неопытному,я подключаюсь к впн серверу,при проверке анонимности сайт 2ip.ru выдаёт «Открытые порты VPN 1723/tcp, PPTP VPN»»

    Вы используете средства анонимизации, однако нам не удалось узнать ваш реальный IP адрес.

    Вероятность использования средств анонимизации:
    99 %»
    ,как мне скрыть или сменить порт,мне надо что-бы не знали что я использую vpn,у меня установленна windows 7,заранее спасибо!

    Ответить
  11. Александр | 06.06.2016

    Маленький вопрос от неспециалиста.
    Есть ADSL модем Zyxel p600 настроен в режиме моста. Раздает интернет на одну машину (соединение на ПК показывает внешний ip 82.ххх.хх.ххх). Далее этот ПК раздает интернет из второй сетевой на ряд устройств (ip даного пк внутри сети, тоесть между 4 машинами он как сервак 192.168.139.1) на данной машине стоит некая программа вебмониторинга (видимая через браузер внутри сетки под портом 8087).
    Пытаюсь сделать так чтоб данная прога была видна из вне.
    На zyxel пытался пробросить порт на внутренний ip но как я полагаю это не верно.
    Помогите пожалуйста решить данную проблему.
    Заранее благодарен.

    Ответить
    • itpro | 07.06.2016

      Если у машины (сервера) интерфейса, то скорее всего веб интрефейс программы мониторинга будет доступен как по внутреннему 192.168.139.1:8087 так и по внешнему адресу 82.ххх.хх.ххх:8087, если конечно в самой программе не выставлена привязка к внутреннему интерфейсу

      Ответить
  12. MIX | 26.08.2016

    блин 80 порт пробросился только после того, как первый интерфейс указал 0.0.0.0 (до этого был ip сетевой карты, с которой надо пробрасывать — нифига не работало)
    а вот 34567 порт вообще никак не пробрасывается.. никто его не слушает.. службу ip включил (она была включена), в списке перенаправлений — перенаправление есть, а по факту нифига не выходит. может есть еще какие-то волшебные моменты? а то всю голову сломал, неделю не сплю уже.

    Ответить
  13. MIX | 26.08.2016

    хм оказалось это софтинка от регистратора косая ) а проброс таки работает..
    хотя и только после 0.0.0.0

    Ответить
  14. itpro | 14.10.2016

    Для информации: чтобы порт прокси заработал на Windows Server 2003 / XP, нужно установить поддержку IPv6 протокола для сетевого подключения и в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters изменить IPEnableRouter = 1

    Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

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

Я не робот( Обязательно отметьте)



MAXCACHE: 0.29MB/0.00106 sec