在Windows 2003中,没有问题.我们可以使用TCP从1.2.3.4 [例如]连接到127.0.0.1:8334就好了.
在Windows 2008中,我们发现来自公共IP的TCP连接,例如1.2.3.4到127.0.0.1:8334失败,甚至.但该服务接受从127.0.0.1到127.0.0.1:8334和127.0.0.1到1.2.3.4:8334的连接.
尝试关闭Windows防火墙,配置其日志记录等(没有显示有用的日志条目),但无济于事.这是新网络堆栈的问题吗?
编辑
1.2.3.4正在尝试连接到同一台机器上的localhost [127.0.0.1]
环回检查信息,有趣.试了一下……没有用.交叉检查以验证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的回应]
看起来我将不得不走艰难的路线并重写代码[很难,因为这意味着与管理人员打交道!]
感谢您帮我找到/确认问题!