我在内部网络上有一些 Windows 机器。
其中一个(位于 192.168.164.14/24)有一个 HTTP/HTTPS 服务器,分别监听常用端口 80 和 443。
由于一个奇怪的限制,我需要让其他一些机器通过另一台服务器(位于 192.168.160.25/24)连接到此服务器。我希望这是完全透明的;这台机器应该只是将请求转发到 Web 服务器,并将 Web 服务器的回复转发回客户端。
Windows Server 2003 R2 似乎有一种内置的方法来执行此操作 - 路由和远程访问服务。
我使用向导配置了 RRAS:自定义配置 > NAT 和基本防火墙、LAN 路由。
在我设置的RRAS工具中的“NAT/基本防火墙”下(在192.168.160.25/24的网卡上):
- 连接到互联网的公共接口
- 在此接口上启用 NAT
- 服务和端口
- 安全 Web 服务器 (HTTPS)
- 公众号:在此界面
- 协议:TCP
- 传入端口:443
- 私有地址:192.168.164.14
- 传出端口:443
- Web 服务器 (HTTP)
- 公众号:在此界面
- 协议:TCP
- 传入端口:80
- 私有地址:192.168.164.14
- 传出端口:80
- 安全 Web 服务器 (HTTPS)
但是,此配置不起作用 - 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是安装;谷歌搜索显示这是导致失败的常见原因。任何帮助都值得感激。
答案1
我能够解决这个问题。它最终与 IPv6 有关。
微软的文档,在 IPv4 和 IPv4 地址之间进行端口重定向时,NETSH INTERFACE PORTPROXY 不起作用,描述了如果 IPV6MON.DLL 没有出现在netsh interface portproxy show helper
命令的输出中,端口代理可能会失败。
然而,微软的文章并没有提到,如果所使用的网络适配器上没有安装 IPv6 协议,事情仍然可能失败。
我现在已经在多个 Win2K3 服务器上验证了以下步骤可以解决问题:
- 开始 > 运行 > control ncpa.cpl
- 右键单击适配器并选择属性
- 按“安装”按钮,选择“协议”,然后找到 Microsoft 的 TCP/IPv6 项目
- 关闭适配器属性窗口
TCP/IPv6 项可以取消选中或选中;它只是必须存在。