переадресация портов в 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?

user1256477
источник
Более подробную информацию можно найти здесь. 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

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

user1256477
источник
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 она иногда зависает на несколько секунд при открытии новых окон. Кроме того, этот глюк пользовательского интерфейса, он все еще делает свою работу нормально.

Voon
источник