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

9

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

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

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

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

bdavenport
источник

Ответы:

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.

Мартин
источник