Перенаправление порта NETSH с локального порта на локальный порт не работает

Я пытаюсь использовать команду NETSH PORTPROXY для пересылки пакетов, отправленных на мой ПК с XP (IP 192.168.0.10) через порт 8001, на порт 80 (у меня есть сервер Apache XAMPP, прослушивающий порт 80).

Я выдал следующее:

netsh interface portproxy add v4tov4 listenport=8001 listenaddress=192.168.0.10 connectport=80 connectaddress=192.168.0.10

Показать все подтверждает, что все настроено правильно:

netsh interface portproxy show all

Listen on IPv4:             Connect to IPv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.0.10    8001        192.168.0.10    80

Однако я не могу получить доступ к веб-сайту Apache с http://localhost:8001. Я могу получить доступ через прямой порт http://localhost, как показано ниже.

Кроме того, я также пробовал следующее: 1. Получите доступ к веб-сайту Apache с удаленного ПК, используя ссылку: http://192.168.0.10:8001. Брандмауэр выключен. 2. Изменение адреса прослушивания и адреса подключения на 127.0.0.1.

Без дополнительной информации я не могу найти способ решить проблему. Есть ли способ отладить NETSH PORTPROXY?

введите здесь описание изображения

Примечание. Кстати, если вам интересно, почему я это делаю, я на самом деле хочу сопоставить удаленные клиентские подключения MySQL с пользовательского порта на порт MySQL Server по умолчанию 3306.


person Joshua    schedule 09.07.2014    source источник


Ответы (4)


Мне удалось заставить его работать, выпустив:

netsh interface ipv6 install

Кроме того, для моей цели не требуется устанавливать listenaddress и лучше установить connectaddress=127.0.0.1, например

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1
person Joshua    schedule 14.07.2014
comment
У меня работало с установкой netsh int ipv4. Спасибо - person Florian Bidabé; 30.09.2015
comment
127.0.0.1 нельзя использовать в качестве порта подключения - person Medardas; 14.12.2016
comment
в Windows XP это netsh interface ipv6 install. объяснение в том, что функция сопоставления находится в dll поддержки ipv6 :) - person tishma; 08.02.2018
comment
Они недавно сменили команду? Я получаю сообщение об ошибке: «Следующая команда не найдена: установка интерфейса ipv6». - person Dave Munger; 09.07.2020

Если проксирование порта netsh не работает должным образом, вам следует проверить следующее, желательно в указанном порядке:

  1. Убедитесь, что прокси порта правильно настроен
  2. Запустите или перезапустите соответствующую службу Windows.
  3. Убедитесь, что поддержка IPv6 установлена
  4. Убедитесь, что порт не заблокирован брандмауэром

Убедитесь, что прокси порта правильно настроен

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

В командной строке или приглашении PowerShell выполните следующую команду:

netsh interface portproxy show all

Результат должен выглядеть примерно так:

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
24.12.12.24     3306        192.168.0.100   3306
24.12.12.24     8080        192.168.0.100   80

Внимательно просмотрите эти настройки. Убедитесь, что вы действительно можете подключиться к адресам в правой части этого списка с локального компьютера. Например, можете ли вы локально открыть веб-браузер и получить доступ к 192.168.0.100:80? Если протокол не HTTP, используйте telnet: telnet 192.168.0.100 3306 (см. здесь, как установить клиент Telnet в Windows).

Тогда верны ли значения слева? Действителен ли IP-адрес для вашей машины? Это номер порта, к которому вы пытаетесь подключиться с внешней машины?

Запустите или перезапустите соответствующую службу Windows.

В последних версиях Windows проксирование портов netsh обрабатывается службой Windows с именем IP Helper или iphlpsvc. Очевидно, что проксирование не будет работать, если эта служба остановлена. Я также сталкивался с ситуациями, которые, как оказалось, разрешались перезапуском этой службы.

Для этого в последних версиях Windows:

  1. Откройте Диспетчер задач и перейдите на вкладку Службы.
  2. В столбце Имя найдите службу с именем iphlpsvc или IP Helper.
  3. Щелкните правой кнопкой мыши эту службу и выберите Перезапустить. Если перезагрузка недоступна, возможно, служба остановлена ​​и ее нужно запустить, поэтому выберите Запустить.

В предыдущих версиях Windows найдите Службы в разделе Инструменты администрирования на панели управления.

Убедитесь, что установлена ​​поддержка IPv6 (только в старых версиях Windows).

В более ранних версиях Windows (то есть в Windows XP, конечно, вплоть до некоторых ранних выпусков Windows 10, по-видимому, хотя это не ясно), функция проксирования портов netsh (в том числе для прокси-серверов IPv4-to-IPv4) фактически обрабатывалась DLL (IPV6MON.DLL), которая загружалась только в том случае, если была включена поддержка протокола IPV6. Поэтому в этих версиях поддержка протокола IPv6 требуется, чтобы включить проксирование портов netsh (см. статью службы поддержки Microsoft здесь).

В командной строке или приглашении PowerShell выполните следующую команду:

netsh interface ipv6 install

Если вы получаете сообщение об ошибке, указывающее, что команда interface ipv6 install не найдена, это означает, что вы используете последнюю версию Windows, в которой поддержка IPv6 netsh является неявной и не может быть отключена.

Убедитесь, что порт не заблокирован брандмауэром

Локальный брандмауэр потенциально может заблокировать порт еще до того, как они достигнут вспомогательной службы IP. Чтобы проверить эту гипотезу, временно отключите любой локальный брандмауэр (включая собственный брандмауэр Windows), а затем повторите тестирование. Если это сработает, просто добавьте исключение портов в конфигурацию брандмауэра.

person jwatkins    schedule 07.05.2019
comment
В Windows 10 в Powershell от имени администратора команда интерфейса netsh приводит к ошибке: «Следующая команда не найдена: установка интерфейса ipv6». - person Dave Munger; 09.07.2020

У меня проблема с тобой. Я решил это только сейчас. Существует служба Windows с именем "IP Helper", которая предоставляет функции туннельных соединений. Вы должны убедиться, что он запущен.

person LongPingWEI    schedule 13.01.2017
comment
Хотя это может быть ценным советом для решения проблемы, хороший ответ также демонстрирует решение. Пожалуйста, EDIT, чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы, рассмотрите возможность написания этого в качестве комментария. - person ρяσѕρєя K; 13.01.2017
comment
Я не вижу, как этот ответ нуждается в улучшении. Это одна из многих возможных причин, и в моем случае это тоже была причина. - person mydoghasworms; 15.05.2017
comment
Я пытаюсь использовать portproxy в WinXP и не могу найти службу с именем IP Helper. В какой версии Windows вы найдете эту службу? Или как служба называется в winXP? - person Radon8472; 04.02.2019

  1. Сначала необходимо запустить Command.exe от имени администратора, щелкнув правой кнопкой мыши значок командной строки и выбрав Запуск от имени администратора. Вас попросят подтвердить.

  2. Вставьте команду netsh в окно command.exe и нажмите Enter.

  3. Если сообщение об ошибке не отображается, команда сработала.

  4. В веб-браузере перейдите к http://your-up:8001, чтобы убедиться, что он работает.

В журнале событий Windows может содержаться информация, помогающая найти причину сбоя.

person Rebwar    schedule 19.11.2016