我想在我的 Internet Gateway 机器上转发一些端口(perforce 为 1666,Hudson 为 8081)。此机器运行 Windows 7(64 位,合法,用户帐户),并通过电缆调制解调器(不是路由器)连接到 Internet。Windows 机器通过 ICS 共享其 Internet 连接,这在所有连接的计算机上都运行良好。
如果服务在网关机器上运行,我可以通过给定端口上的网关公共 IP(95.xxx)访问这些服务。我在 Internet 网络适配器的“高级设置”对话框(“共享”选项卡)中添加了端口和目标 IP 地址(192.168.0.18)。该对话框与预配置服务列表(如 HTTP、FTP 和其他传入服务)相同。当我这样做时,我无法再连接到这些服务。由于某种原因,端口转发不起作用。
我卸载了 Bitdefender,因为我想检查防火墙是否会干扰。我还禁用了 Windows 防火墙和 Defender,但无济于事。我尝试了一个有助于设置端口转发的免费软件工具,但也没有用。
目标机器是一台防火墙已禁用的 Mac OS X 计算机。IP 是静态的。我可以使用本地 IP 地址 (192.168.0.18) 从两台不同的机器(包括网关计算机)成功连接到服务。因此,从内部和外部来看,我认为端口是开放的,没有被阻止,问题出在端口转发本身。
据我所知,在没有防火墙干扰的情况下,在高级设置对话框中添加一个条目来启用端口转发就足够了。如何解决端口转发无法正常工作的问题?我应该采取哪些步骤来缓解此问题?
PS:我很乐意接受命令行解决方案。
我还尝试过其他方法:
- 为 Windows 防火墙添加 1666、8081 端口的入站规则
- 尝试启用和禁用 Windows 防火墙
- 禁用/启用网络适配器
- 再次检查 IP 地址是否正确
- 将不同的传入端口映射到服务的实际端口
- 遵循或检查了本文中的其他提示
我还没敢尝试的事情(如果值得尝试请告诉我):
- 禁用/启用 ICS
- 删除所有网络适配器(通过控制面板),然后重新安装并重新配置它们
答案1
解决了。
将 Windows 防火墙重置为默认设置,并禁用 ICS 并重新启用它后,我能够使端口转发正常工作,但必须使用护照工具将端口转发安装为 Windows 服务(您必须以管理员权限运行它)。
Passport 的优点在于,你不仅可以转发 IP 地址,还可以转发 DNS 地址。因此,通过 Passport 的界面可以实现以下操作:
myserver.no-ip.org:8081 --> 192.168.0.18:8081
答案2
在 Windows 7 中,您可以从命令行手动设置端口转发,如下所示:
netsh interface portproxy add v4tov4 listenport=1666 listenaddress=95.x.x.x connectport=1666 connectaddress=192.168.0.18 protocol=tcp
- 即使您只使用 IPv4,也必须确保安装了 IPv6 才能正常工作。
- 如果你也需要转发 UDP,那么我会使用这个伟大的小型开源实用程序,因为
netsh int portproxy
只适用于 TCP
答案3
在 Windows 7 中,端口转发非常简单,在连接共享选项卡上,所有复选框都有一个按钮 [设置],单击该按钮,然后会出现已列出的服务,您可以编辑这些服务,也可以在那里添加新服务,您可以输入服务名称,例如 http
托管服务的计算机地址/名称,例如 192.168.1.100,然后是端口 80 和协议 [tcp/udp]
就像这样,您可以添加任意数量的服务并转发任意数量的端口,这非常容易,不要使用 netsh 或其他网站上提供的一些端口转发程序