本地 DNS 启动后,40 个节点的网络速度大幅下降

本地 DNS 启动后,40 个节点的网络速度大幅下降

我们有一个局域网,里面有大约 40 个工作站(大部分是 Windows)和几台服务器。它们都使用内部 DNS(196.168.0.4正在运行BIND 9.5.0-P2)和网关(192.168.0.1运行 OpenBSD 数据包过滤器),网关是充当路由器的本地 PC。

在过去的几个月里,工作日的某些时候,网络速度会变得很慢,以至于无法进行任何与互联网相关的操作。在这些时候,ping8.8.8.8会显示:

12:16:12.078: Timeout waiting for seq=11a1
12:16:13.484: From 8.8.8.8: bytes=60 SEQ=11a9 TTL=48 ID=0000 time=399.334ms
12:16:15.078: Timeout waiting for seq=11a4
12:16:15.437: From 8.8.8.8: bytes=60 SEQ=11ab TTL=48 ID=0000 time=355.409ms
12:16:18.078: Timeout waiting for seq=11a8
12:16:19.453: From 8.8.8.8: bytes=60 SEQ=11af TTL=48 ID=0000 time=376.317ms
12:16:21.078: Timeout waiting for seq=11aa
12:16:21.078: Timeout waiting for seq=11ac
12:16:21.390: From 8.8.8.8: bytes=60 SEQ=11b1 TTL=48 ID=0000 time=306.727ms
12:16:22.437: From 8.8.8.8: bytes=60 seq=11b2 TTL=48 ID=0000 time=364.351ms
12:16:23.453: From 8.8.8.8: bytes=60 seq=11b3 TTL=48 ID=0000 time=371.944ms
12:16:24.078: Timeout waiting for seq=11ad
12:16:24.078: Timeout waiting for seq=11ae
12:16:26.390: From 8.8.8.8: bytes=60 SEQ=11b6 TTL=48 ID=0000 time=307.729ms
12:16:27.078: Timeout waiting for seq=11b0
12:16:29.437: From 8.8.8.8: bytes=60 SEQ=11b9 TTL=48 ID=0000 time=361.575ms
12:16:30.078: Timeout waiting for seq=11b4
12:16:30.453: From 8.8.8.8: bytes=60 seq=11ba TTL=48 ID=0000 time=367.647ms
12:16:33.078: Timeout waiting for seq=11b5
12:16:33.078: Timeout waiting for seq=11b7

就在那个确切的时刻,如果我关闭 DNS(在.0.4),那么几秒钟后网络的健康状况就会再次变得很好:

12:47:43.046: From 8.8.8.8: bytes=60 seq=190b TTL=48 ID=0000 time=70.555ms
12:47:44.046: From 8.8.8.8: bytes=60 seq=190c TTL=48 ID=0000 time=82.684ms
12:47:45.046: From 8.8.8.8: bytes=60 seq=190d TTL=48 ID=0000 time=72.368ms
12:47:46.062: From 8.8.8.8: bytes=60 seq=190e TTL=48 ID=0000 time=84.310ms
12:47:47.046: From 8.8.8.8: bytes=60 seq=190f TTL=48 ID=0000 time=75.137ms
12:47:48.046: From 8.8.8.8: bytes=60 seq=1910 TTL=48 ID=0000 time=75.791ms
12:47:49.062: From 8.8.8.8: bytes=60 seq=1911 TTL=48 ID=0000 time=94.252ms
12:47:50.046: From 8.8.8.8: bytes=60 seq=1912 TTL=48 ID=0000 time=76.547ms
12:47:51.046: From 8.8.8.8: bytes=60 seq=1913 TTL=48 ID=0000 time=70.251ms
12:47:52.046: From 8.8.8.8: bytes=60 seq=1914 TTL=48 ID=0000 time=83.033ms
12:47:53.046: From 8.8.8.8: bytes=60 seq=1915 TTL=48 ID=0000 time=76.589ms
12:47:54.046: From 8.8.8.8: bytes=60 seq=1916 TTL=48 ID=0000 time=82.060ms

这是非常一致且可重复的。事实上,我 ping 8.8.8.8(Google 的公共 DNS)是完全随机的,只是我测试互联网连接的一种方式。我可能正在 ping 206.190.36.45(Yahoo 公共网站的 IP)。

DNS 不对外界开放。所以我认为也许一台(或多台)工作站滥用了 DNS(可能间接通过病毒),并向其发送大量请求或其他东西。问题是我无法追溯到那次事件。在机器上,我0.4没有top发现任何 CPU 可疑活动,在0.1(网关)上使用dst host 192.168.0.4in进行过滤pftop不会使用 DNS 给我任何内部 IP。

我尝试过逐个拔出以太网电缆和工作站来查找可能存在问题的工作站,但是这个过程不是很快也很准确,而且当网络稳定下来时,我并不确定这是否是因为我拔出的最后一个工作站造成的,或者网络是否又恢复正常了。

对于下一步该看哪里,您有什么想法吗?

答案1

根据提供的信息,我个人倾向于认为存在 L2 交换环路和/或 DNS 服务器上配置错误的链路聚合。也可能存在 L3 路由环路,但可能性较小。但是,如果没有更多信息,我根本无法确定。

问题是,我没有资格对这个问题发表评论,以便在发布之前澄清问题并确定这个答案是否有价值。希望这能为您指明正确的方向,让您尽快找到答案。

答案2

我不确定证据是否指向 DNS。根据较长的 ping 时间和数据包丢失情况,我认为您的 Internet 连接已不堪重负。我建议禁用 DNS 服务器,以防止一个或多个客户端(如您所说,可能是由于病毒而导致行为异常)使用 Internet 连接,因为它无法再查找主机名。这样可以减少流量,Internet 连接开始正常运行。

我建议使用可以报告最高用量者的东西来监控互联网连接,以帮助您找到有问题的机器。

答案3

如果您的 DNS 服务器可公开访问,您可能成为 DNS 放大攻击的对象,并且由此产生的传出流量将淹没您的可用带宽。

相关内容