在运行Windows Server 2008 R2的环境中,我们有一个应用程序,该服务器从服务器上的公共IP连接(绑定到)到127.0.0.1:8334 [连接到侦听0.0.0.0:8334的服务]
在Windows 2003中,这没有问题。我们可以使用从1.2.3.4 [eg]到127.0.0.1:8334的TCP进行连接。
在Windows 2008中,我们发现从公共IP(例如1.2.3.4到127.0.0.1:8334)的TCP连接甚至失败。但服务接受的连接范围是127.0.0.1至127.0.0.1:8334,以及127.0.0.1至1.2.3.4:8334。
尝试关闭Windows防火墙,配置其日志记录等(没有显示有用的日志条目),但无济于事。这是新的网络堆栈的问题吗?
编辑
1.2.3.4尝试连接到同一台计算机上的本地主机[127.0.0.1]
主机文件是默认的Windows 2008主机文件。
回送检查信息,有趣。尝试了...辛苦的工作。交叉检查以确认Id正确完成了所有操作-我已经这样做了。
我想知道是否有使用NAT或其他方式转发端口的解决方案-如果我将127.0.0.1:port转发到1.2.3.4:port,那行得通吗?假设应用程序在0.0.0.0:port上侦听,它将在1.2.3.4:port上建立连接
HOSTS文件确实包含localhost 127.0.0.1-但是,hosts文件仅用于主机名查找。在这种情况下,我们的应用程序将不查找任何主机名,因为127.0.0.1 IP地址被硬编码到其中(而不是localhost主机名)。因此,HOSTS文件不会在这里起作用。
至于1024以上的端口[想想您是指MaxUserPort问题?]我通过尝试简单连接到端口445进行了测试-从127.0.0.1开始工作,从源IP 1.2.3.4连接时不起作用。445是标准的Windows服务,因此应该可以使用!
当前未在计算机上运行NAT或RRAS ...正在想知道是否有办法进行重新路由-我猜测它无法正常工作,因为TCP / IP堆栈会在到达环回接口进行重新路由之前拒绝该数据包。
我检查过的路由打印-看起来不错,先路由公共IP,然后再路由127.0.0.0网络掩码255.255.255.0和127.0.0.1网络掩码255.255.255.255都回送。
编辑 似乎我找到了有关问题原因的答案。我使用eventvwr.msc,启用了Winsock日志记录,关闭了其他服务,只是尝试了此连接测试。当我用Google搜索时,发现了一个错误,该错误以十六进制映射到STATUS_INVALID_ADDRESS_COMPONENT。
那让我知道了:http : //social.msdn.microsoft.com/Forums/en-US/wfp/thread/d7cb6138-3f67-4467-a068-8325f56739ba
证实这是WFP for Vista / 7 / Server 2008 [windows过滤平台]中的设计更改。
[请参阅Anupama Vasanth的回复]
看来我将不得不走困难的路线并重写代码(很难,因为这意味着要与经理打交道!)
多谢您协助我找出/确认问题!