9 windows windows-server-2008 routing ip localhost
我正在运行 Windows Server 2008 R2,我们有一个应用程序从(绑定到)服务器上的公共 IP 连接到 127.0.0.1:8334 [连接到侦听 0.0.0.0:8334 的服务]
在 Windows 2003 中,这没有问题。我们可以使用 TCP 从 1.2.3.4 [eg] 连接到 127.0.0.1:8334 就好了。
在 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 正在尝试连接到同一台机器上的 localhost [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日志,关闭其他服务,刚试过这个连接测试。当我在谷歌上搜索它时,得到一个以十六进制映射到 STATUS_INVALID_ADDRESS_COMPONENT 的错误。
这让我:http : //social.msdn.microsoft.com/Forums/en-US/wfp/thread/d7cb6138-3f67-4467-a068-8325f56739ba
这证实这是 WFP 中针对 Vista/7/Server 2008 [windows 过滤平台] 的设计更改。
[见 Anupama Vasanth 的回应]
看起来我将不得不走艰难的路线并重写代码[很难,因为这意味着与经理打交道!]
感谢您帮助我定位/确认问题!
Gen*_*нин -3
我最确定它与环回检查安全功能有关,尽管我无法深入了解它是如何实现的,只能了解如何克服它:
http://chillicode.wordpress.com/tag/loopback-check/
对于“适用于”Windows 2008,请参阅http://support.microsoft.com/kb/896861
那么,您的 HOSTS 文件中到底有什么?我没有W2008。你的意思是那里没有“127.0.0.1 localhost”吗?
我还在某处读到默认 W2008 设置不允许与大于 1024 的端口进行通信。
您可以通过以下方式直接向 MS 团队提交有关 MS Windows Server 2008 的反馈
他们会回复
如果您尝试通过注册表编辑方法关闭“环回检查”,则需要重新启动。另一种 - 不是。
机器内部NAT?127.0.0.1没有转发或路由,我相信是这样,它是内部的,你可以拔掉网卡,你的1.2.3.4将会消失,但127.0.0.1将继续存在。
你的(运行--> cmd --> 路由打印)的输出是什么?
我心里想,还有一个时刻,尽管我不知道如何将它组合起来。
127.0.0.1 是 localhost(接口),它是单标签名称并被视为本地。1.2.3.4 是非单标签名称。
可能的问题是这样的名称可能被视为外部名称
你可以单独尝试一下:
是否在网络适配器上禁用(如果已启用,如果已禁用则启用)IPv6?
将 1.2.3.4 的一些单标签名称放入 HOSTS 文件中?
eventvwr.msc 中 1.2.3.4 到 127.0.0.1:8334 通信失败对应的事件描述、EventID 等是什么?
“445 是标准 Windows 服务”
是用于 TCP/IP 上的 SMB 直接吗?用于文件共享?CIFS?
不太可靠...它经常被微软的修补程序攻击。读:
(“升级到 Windows Server 2008 后,跨子网浏览 NetBIOS 可能会失败”) - http://blogs.technet.com/b/networking/archive/2008/07/25/netbios-browsing-across-subnets-may-fail -升级到windows-server-2008.aspx?wa=wsignin1.0后
然后,
“我们遇到了与前面描述的相同的问题,即 Vista SP2 计算机尝试访问 Windows Server 2008 SP1 或 SP2 文件共享。文件共享服务受 Windows 防火墙的高级安全性保护,使用预定义的文件共享规则 (SMB) 请求访问安全连接”
| 归档时间: |
|
| 查看次数: |
10235 次 |
| 最近记录: |