我有一个 ASP.NET Web 应用程序,它将请求的文件从 (LAN) 网络共享传输到 (Internet) 最终用户。大多数情况下,它工作正常,但有时应用程序无法按名称从共享中检索(例如,请求 \\fileserver\share\filename.zip 之类的内容将失败)
当我们看到这种情况发生时,手动尝试通过 Windows 资源管理器从 Web 服务器检索文件也会失败,并出现网络路径未找到错误。尝试通过将 IP 地址替换为文件服务器名称来检索文件非常有效(\\10.0.0.40\share\filename.zip)
这听起来像是某种名称解析问题,但在这些事件期间,我可以从 Web 服务器的命令行 ping/traceroute 等文件服务器名称,并且它在那里正确解析。
目前,只有重新启动服务器才能解决当前的问题。重新启动后,共享访问会暂时恢复正常。
设置如下:
Web服务器(Windows Server 2008R2)
适配器 1
IP 10.0.0.60
SM 255.255.255.0
DG(空)
DNS 10.0.0.2(我们的 DNS 服务器)
适配器 2
IP 10.0.2.90, 10.0.2.91
SM 255.255.255.0
DG 10.0.2.1
DNS(空)
文件服务器(通用 NAS 设备)
适配器 1
IP 10.0.0.40
SM 255.255.255.0
DG 10.0.0.1
DNS 10.0.0.2
传入的 Web 请求将发送到两个公共 IP 之一,并通过其中一个 IP 地址通过 NAT(正确动词?)发送到适配器 2,适配器 1 不会收到任何 Web 请求。适配器 1 本质上只是用于访问文件服务器设备,没有其他用途。
我希望这些信息足够了,我会很感激任何建议,因为这让我有点抓狂。
答案1
NIC 配置看起来与你正在执行的操作相符。凭直觉尝试将内部 DNS 服务器添加到适配器 2,但确保将适配器 2 配置为不在 DNS 中注册。
我的想法是,当网络流量进入适配器 2 时,服务器需要解析文件服务器名称并使用适配器 2 进行查找,但由于适配器 2 没有任何 DNS 服务器,因此无法进行查找。重新启动后,它会正常工作,因为适配器 1 正在解析文件服务器的名称,因此当网络流量进入时,它位于网络服务器的 DNS 客户端缓存中,因此可以正确解析。当 DNS 缓存使文件服务器的记录过期时,您就会开始遇到问题。您可以通过在网络服务器上运行 Microsoft 网络监视器来验证这一点,并查看问题发生时 DNS 请求来自哪个适配器。
此外,您可以禁用适配器 2 上的 TCP 上的 NetBIOS,并解除适配器 2 上的文件和打印机共享以及 Microsoft 网络客户端的绑定,因为适配器 2 上不需要这些组件