Если проксирование порта netsh
не работает должным образом, вам следует проверить следующее, желательно в указанном порядке:
- Убедитесь, что прокси порта правильно настроен
- Запустите или перезапустите соответствующую службу Windows.
- Убедитесь, что поддержка IPv6 установлена
- Убедитесь, что порт не заблокирован брандмауэром
Убедитесь, что прокси порта правильно настроен
Это может показаться тривиальным, но на всякий случай найдите время, чтобы просмотреть свою конфигурацию, прежде чем двигаться дальше.
В командной строке или приглашении 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:
- Откройте Диспетчер задач и перейдите на вкладку Службы.
- В столбце Имя найдите службу с именем iphlpsvc или IP Helper.
- Щелкните правой кнопкой мыши эту службу и выберите Перезапустить. Если перезагрузка недоступна, возможно, служба остановлена и ее нужно запустить, поэтому выберите Запустить.
В предыдущих версиях 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