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

Я пытаюсь использовать команду NETSH PORTPROXY для пересылки пакетов, отправленных на мой компьютер XP (IP 192.168.0.10) от порта 8001 до порта 80 (сервер XAMPP Apache прослушивает порт 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.

5 ответов

Решение

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

netsh int ipv6 install

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

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1

Если 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.

Для включения требуется поддержка протокола IPv6.netshпроксирование портов, в том числе для прокси IPv4-to-IPv4 (см. статью поддержки Microsoft здесь).

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

netsh interface ipv6 install

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

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

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

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

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

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

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

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

Еще одна причина, не упомянутая здесь, заключается в том, что порт прослушивания может находиться в диапазоне исключенных портов . Я наткнулся на эту проблему и потратил некоторое время, чтобы выяснить причину.

The netsh interface portproxy addработает нормально, т.netsh interface portproxy show allперечисляет добавленное правило, но прокси-сервер на самом деле не работает, напримерnetstat -an | findstr <LPORT>ничего не выводит.

Чтобы узнать список исключенных портов, запуститеnetsh int ip show excludedportrange protocol=tcp. Если ваш порт прослушивания находится в диапазоне исключенных портов, вы можете попытаться отменить исключение диапазона или просто выбрать другой порт.

Другие вопросы по тегам