Windows 7 с внутренним перенаправлением портов, возможно ли это?


9

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

Здесь, в офисе, они используют рабочие столы Linux, и я могу переслать localhost: 80 через iptables nat на localhost: 8080. То, что они хотят, это то же самое, что и дома в Windows 7.

Я получил то, что я думаю, это два способа сделать это. Один для перенастройки веб-сервера jboss и всех URL веб-приложений (грязный). Другой - найти способ перенаправить / nat с порта localhost 8080 на порт 80. Хотя в Windows 7 я не уверен, как это сделать.

У кого-нибудь есть идеи о том, как сделать второе?

Ответы:


6

AFAIK, Win7 не имеет эквивалента iptables. Написание сервера, который делает то, что вы хотите (прослушивает порт, копирует все в / из другого), должно быть достаточно простым. Вы можете найти его по этому адресу: http://www.quantumg.net/portforward.php (не проверено). Использование обратного прокси-сервера (Google - ваш друг) может удовлетворить все требования http-подобного трафика. Также проверьте этот пост: /programming/3721000/port-forwarding-on-windows-7


Дох, теперь я чувствую себя как дурак, забыв термин обратный прокси. Как только я смогу проголосовать, я буду за вас.
bdavenport

12

Да, Windows имеет эквивалент iptables, это через инструмент netsh и интерфейс portproxy .

Команда сделать то, что вы хотите, будет

netsh interface portproxy add v4tov4 listenaddress=YOUR_IP_HERE listenport=8080 connectaddress=YOUR_IP_HERE connectport=80 

Обратите внимание, что это будет делать только соединения IPv4, если вы также хотите пересылать соединения IPv6, вам также нужно сделать

netsh interface portproxy add v6tov6 listenaddress=YOUR_IP_HERE listenport=8080 connectaddress=YOUR_IP_HERE connectport=80

Будет ли это сохраняться при перезагрузке? Также команды являются недействительными, так как я получаю сообщение об ошибке: «один или несколько существенных параметров не были определены»
сорин

@ Сорин это сохраняется, я использую это в системе, где я перенаправляю RDP со стандартного порта на нестандартный порт, и мне нужно выполнить эту команду только один раз, когда я настраиваю новую ВМ. Что касается ошибки, вы правы, я забыл параметр для адреса (который, я вижу, вы исправили, спасибо!)
Скотт Чемберлен

Вместо этого я использовал add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080Предполагая, что вы хотите прослушивать порт 80 и перенаправить на сервер без повышенных прав, работающий на 8080, вам нужно переключить порты прослушивания и подключения. Если вы хотите отвечать как на сетевые IP-адреса, так и на запросы локального хоста, удалите адрес прослушивания. И вы можете перенаправить на 127.0.0.1, чтобы избежать жесткого кодирования вашего IP-адреса.
Карл Уолш

Другие полезные команды описаны в документации Microsoft: docs.microsoft.com/en-us/windows-server/networking/technologies/… например, для вывода списка текущих portproxies ( netsh interface portproxy show v4tov4) или для удаления постпрокси ( netsh interface portproxy delete v4tov4 listenaddress=localhost listenport=80)
neXus

0

Я думаю, что Windows не имеет эквивалента iptables. команда

netsh interface portproxy ...

делать проксирование портов, но не пересылку пакетов. Основное отличие

  • производительность намного хуже, чем у iptables (см. https://plus.google.com/+OlafMonien/posts/fsjUjropYeR )
  • IP-адрес источника изменяется на localhost (127.0.0.1 или :: 1, в зависимости от версии IP), вы теряете исходный IP-адрес исходного запроса.

Мы использовали эту технику для переадресации портов, но после этих выводов нам пришлось использовать дополнительные правила для сетевого брандмауэра, чтобы избежать использования netsh.

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