我们有一台 NAS(Synology,运行 DSM 6),它连接到 Windows 2016 服务器上的 Active Directory。NAS 有 7 个共享文件夹,使用 SMB2 共享。
使用 Windows 资源管理器浏览 NAS 时(在 Windows 7 和 Windows Server 2016 上均已测试),共享文件夹显示前会有大约 10 秒的延迟。无论我们使用 NAS 的名称(\\my-nas)还是其 IP 地址(\\10.xxx),都没有关系。
在连续浏览文件夹时不会出现延迟。
关于为什么会发生这种情况以及如何解决它,您有什么想法吗?
更新
我运行了 Wireshark,然后启动了 Windows 资源管理器。输出如下所示(我已过滤以仅显示我的 IP 和 NAS 的 IP):
如红色矩形所示,总共有 8 秒钟处于无活动状态。这是在客户端 (10.0.107.100) 向 NAS (10.0.107.99) 发送“会话设置请求”之后,以及收到答复“会话设置响应”之前。
更新 2
执行了新的 Wireshark 会话,以响应 Michal Sokolowski 的评论,这次还包括我们域服务器 (10.0.0.98) 的流量。现在可以看到端口 53(显示为“DSN”协议)和端口 137(显示为“NBNS”协议)上的一些 UDP 流量:
更新 3
我在域服务器(10.0.0.98)上安装了Wireshark来查看与NAS的整个通信过程:
(图片仅展示一部分:“更新 3”的完整 Wireshark 日志)
图像中选定的行号 402 正好位于 3 秒延迟之前。稍后再次发生这种情况,并显示完全相同的消息。
根据此信息,能否再说些什么?
答案1
通过在 NAS 上使用 tcpdump,我发现域服务器在执行 DNS 查询时向 NAS 返回了两个 IP 地址。域服务器只有一个物理网络接口,这是“正确的”。另一个是虚拟的VirtualBox 创建的界面。我遵循了此MSDN 指南并取消选中“在 DNS 中注册此连接地址”。这样连接时间就从大约 10 秒缩短到了 3 秒。
现在查看 tcpdump,发现有一个地方似乎没有任何活动,即第 14 和 15 号之间: 但我猜测 NAS 内部正在运行某种程序?
理想情况下,如果它能够运行得更快就更好了。
感谢所有评论。
更新
我收到来自 Synology 支持部门的确认,低端 NAS(DS214se)预计会有 3 秒的延迟。
答案2
当您尝试扩展名称时,似乎会出现延迟。我有两个选择,都可以使用 wireshark 或类似工具进行检查:
- NAS 不接受与 445 端口的连接,并且在打开与 139 端口的连接之前,Windows 尝试通过 WINS 扩展不存在的主机名。
- 在 NAS 中,日志文件以所连接主机的名称命名。在 Samba 中,只有通过接受 139 端口上的连接并运行 WINS 才有可能。
您可以借助 wireshark 或类似工具听到 WINS 查询。
更新。 如我所见,您在 NAS 上遇到了名称解析问题:
- 客户端请求会话设置(捕获中的数据包#45)
- 服务器尝试解析客户端名称:我认为,服务器首先尝试使用 DNS 和 hosts 文件,但我们看不到。
- 然后,服务器尝试查找 WINS 服务器(通常,此配置会持续尝试),然后我们看到广播数据包 #75
- 服务器故障后仍然打开会话(数据包#78)
这是典型问题。