У меня есть несколько компьютеров с Windows во внутренней сети.
Один из них (по адресу 192.168.164.14/24) имеет HTTP / HTTPS-сервер, который прослушивает обычные порты, 80 и 443 соответственно.
Из-за странного ограничения мне нужно, чтобы некоторые другие машины подключались к этому серверу через другой сервер (192.168.160.25/24). Я хочу, чтобы это было полностью прозрачным; эта машина должна просто пересылать запросы на веб-сервер и ответы веб-сервера обратно клиенту.
В Windows Server 2003 R2 есть встроенный способ сделать это - служба маршрутизации и удаленного доступа.
Я настроил RRAS с помощью мастера с: Custom Configuration> NAT и Basic Firewall, LAN routing.
В разделе «NAT / Basic Firewall» в инструменте RRAS, который я настроил (на сетевой карте с 192.168.160.25/24):
Однако эта конфигурация не работает - компьютер 192.168.160.25 не принимает соединения на портах 80 или 443.
Альтернативная тактика с использованием netsh portproxy тоже не работает:
C:\>netsh interface portproxy show v4tov4
Listen on IPv4: Connect to IPv4:
Address Port Address Port
--------------- ---------- --------------- ----------
192.168.160.25 80 192.168.164.14 80
192.168.160.25 443 192.168.164.14 443
C:\>netstat /na | find "80"
C:\>netstat /na | find "443"
Что мне не хватает? Я не должен IPV6 является установлены; Поиск в Google показывает, что это частая причина сбоев. Любая помощь приветствуется.
Мне удалось решить эту проблему. В конечном итоге это было связано с IPv6.
Документ Microsoft, NETSH INTERFACE PORTPROXY не работает при перенаправлении портов между IPv4 и IPv4 адресами, описывает, как проксирование порта может завершиться ошибкой, если IPV6MON.DLL не отображается в netsh interface portproxy show helper
вывод команды.
Однако в статье Microsoft не упоминается, что все еще может выйти из строя, если протокол IPv6 не установлен на используемых сетевых адаптерах.
Я проверил на нескольких серверах Win2K3, что эти шаги решают проблему:
Пункт TCP / IPv6 может быть снят или отмечен; он просто должен присутствовать.