переадресация портов в windows


262

У меня есть две сетевые платы на моем компьютере:

Основной имеет локальный ip -> 192.168.1.111. Второй имеет локальный ip -> 192.168.0.200.

Основной из них имеет подключение к Интернету, а второй подключен к устройству с IP-адресом 192.168.0.33, он имеет http-сервер в порту 80.

У меня есть apache-сервер в основном соединении (порт 4422), и я могу получить доступ откуда угодно, теперь я хочу, чтобы при обнаружении соединения с 4422 я хотел перенаправить это соединение на 192.168.2.33:80

Как я могу сделать это с Windows?


Более подробную информацию можно найти здесь. technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx
Шанкар Дамодаран

Ответы:


507

Я решил это, это можно сделать, выполнив:

netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

Чтобы удалить пересылку:

netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111

Официальные документы


21
Просто убедитесь, что у вас установлен IPv6. В соответствии с этой статьей MS KB , netsh нужны некоторые библиотеки IPv6 для настройки функции прокси порта.
Ренан Мозон

10
Кроме того, вы можете сделать очистку с помощью netsh interface portproxy resetили netsh interface portproxy delete
patrikbeno

7
Я пытался использовать эту технику, и хотя она работала, она была очень медленной. Вместо. Я нашел утилиту под названием PassPort ( sourceforge.net/projects/pjs-passport ), которая выполняет переадресацию портов того же типа, привязанную к конкретному NIC, но не имеет проблем с производительностью netsh. Он устанавливается и хорошо работает на Win2008SvrR2.
Джеймс Л.

14
Приведенная выше команда не работала для меня ни в Windows7, ни в Windows Server 2003. Мне также пришлось указать параметр protocol = tcp . Полная команда:netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33 protocol=tcp
alwi 15.09.16

3
Обратите внимание, что это работает только на TCP , так что не повезло, если вы хотели пересылать трафик UDP.
user276648 13.12.16

14

nginx полезен для пересылки HTTP на многих платформах, включая Windows. Его легко настроить и расширить с помощью более сложной конфигурации. Базовая конфигурация может выглядеть примерно так:

events {}

http {
     server {

        listen 192.168.1.111:4422;

        location / {
            proxy_pass http://192.168.2.33:80/;
        }
     }
}

14
Это хорошее решение для пересылки HTTP, но только для пересылки HTTP (со всеми его предостережениями, например, для веб-сокетов требуется дополнительная настройка). Для пересылки HTTPS или других произвольных протоколов (например, RDP) это в основном бесполезно.
Ули Келер

2
Тем не менее, это невероятно хорошее решение для пересылки HTTP, поэтому я рад, что он здесь.
Кейси

Это почему? Вы можете транслировать все, что захотите, в том числе https
user1156544

@ Лули, о каких настройках ты говоришь ... Будет полезно поделиться
user3787216

1
@ UliKöhler Nginx - это инструмент для разъединения TCP-соединений. Вы можете использовать его для HTTP, HTTPS, AMQP, WebSockets, что угодно. Он используется внутри всеми инструментами для перенаправления и управления общими соединениями TCP. Итак, это правильное решение. Смотрите также netfxharmonics.com/2016/03/nginx
Дэвид Бец

1

Я использовал эту маленькую утилиту всякий раз, когда возникает необходимость: http://www.analogx.com/contents/download/network/pmapper/freeware.htm

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.