Linux中奇怪的临时网络中断


8

我遇到了一个非常烦人的问题,从现在开始的一个星期我注意到了这个问题,但找不到答案:我的网络突然停止了响应,通常恰好在25秒后返回。我使用的是内核3.10.4,现在迁移到3.11-rc4,以查看是否有所更改,但不,行为是相同的。而且由于通常的网络浏览都是“突发”并且中断完全是随机的,因此很难发现问题,因此我无法真正分辨出该问题是否也存在于以前的内核中(我一直使用custom来自kernel.org的未修补内核,全部由我自己编译)

我也不能说内核是罪魁祸首,但是我可以说系统日志上没有任何线索(我检查了两者/var/log/syslog/var/log/messages并且那里也没有异常),并且硬件似乎没有问题,因为问题表明使用我的任意一张网卡:

lspci output:

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
04:00.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)

并且我已经尝试过交换以太网交换机端口,但除我以外,我工作的其他任何地方都没有问题(尽管我们使用的是类似的机器,但我是唯一使用Linux的机器,因此我不得不对此举一些臭名昭著的笑话,因为好吧...呵呵。

我在机器上运行了Wireshark,然后让它连续ping通我们的网关和同一网段上的另一台机器。然后,在出现网络故障的第一个迹象时,我将对其进行检查并验证网关是否停止响应ping,但是另一台计算机仍然在那里正常响应。其他时间是另一台机器停止响应并且网关正常,而另一些时间都停止响应。我不知道该怎么办,因此,我希望获得一些有关进一步调试的帮助或技巧,因为系统日志是完全正常的。

我有我的内核配置文件和来自wireshark的捕获文件来显示这种情况。我可以在这里或在某个pastebin网站上发布,以防万一有人觉得对理解案例有用,请让我知道我应该使用的详细信息级别(我猜没有原始数据的数据包级别就足够了)。



这听起来很像是IP地址冲突(即,其他计算机具有与您的IP地址相同的IP地址)。其他主机来回摆动取决于接收到的最新ARP响应。
吉尔斯(Gilles)'所以

Gilles,我非常确定我的IP在网络上是唯一的,但是假设有可能发生,我仍然认为它不能解释一台主机正常ping通而另一台主机不能ping通(它们同时被ping通)。你不同意吗?
克劳迪奥

@吉尔斯,你是对的。我今天刚刚发现有人的手机通过DHCP分配使用了我的IP(我的IP是固定的,但DHCP池与它重叠了)。就像我说的,最初我放弃了这种可能性,因为我能够在第一个主机无法访问时对另一台主机执行ping操作,但是今天我迅速更改了IP,而一切都停止了,并且我的IP正在从另一个NIC进行ping操作。您能否将您的评论移到答案中以便我接受?无论如何,您是第一个真正回答它的人。谢谢!
克劳迪奥

Answers:


10

该症状与IP地址冲突一致。当您的计算机和同一网络上的其他计算机尝试使用相同的IP地址时,会发生IP地址冲突。

在本地链路网络上,寻址基于MAC地址。每个以太网卡都有其自己的MAC地址(除非存在严重的配置错误或恶意)。决定将IP数据包发送到哪里的路由器将在其所有端口上发送针对目标IP地址的ARP请求。该消息有时被称为“谁拥有”:路由器试图找出哪个对等方负责此IP地址。路由器收到包含MAC地址的答复后,便可以构建并将包含IP数据包的以太网帧(以太网数据包)发送到该MAC地址。由于此交换需要一段时间,因此路由器会保留最新ARP信息的缓存。(还有其他类型的ARP消息,但是我在这里解释的内容足以理解当前的问题。)

简而言之,路由器需要知道要将IP数据包发送到的每个IP地址都在哪个物理设备上。那么,当有两个设备声明相同的IP地址时会发生什么呢?路由器从其中一台设备收到答复,然后,它决定该IP地址属于该设备,直到相应的缓存条目到期为止。缓存条目过期后,路由器将发送一个新的ARP请求,也许其他设备这次的回复速度更快。这解释了为什么这种情况不稳定的原因:路由器一分钟正在与您交谈,下一分钟它正在与另一个人交谈。

如果您持续对某人执行ping操作,则路由器几乎总是将您的IP地址保留在其ARP缓存中。因此,当您执行ping操作时,只有一个小窗口,其他人可以在该窗口中替换您的缓存(在您的缓存条目过期之后,在下一次ping操作之前)。这就是为什么观察问题会使其大部分消失,而在您意识到问题可能出在那之前,这可能会令人沮丧。

在您的情况下,您的本地路由器似乎将条目保留在其缓存中25秒钟。当您处于缓存中时,您会保持25秒的好状态。然后有时候,另一个人在随机的时刻出现,而您却离开了25秒钟。

当您尝试联系同一本地链接上的多台计算机时,每台计算机都有自己的ARP表,因此您可能会观察到不一致的结果,其中一台计算机确定您拥有IP地址,另一台计算机确定另一人拥有IP地址。

高端路由器记录IP地址冲突,因此,如果您认为遇到冲突,请寻求系统管理员的帮助。首先,请确保不是您的计算机正在尝试使用不应使用的IP地址!


1
顺便说一句:您也可以使用arpingARP作为IP地址来查找重复项。您不会得到任何回应。或从另一台计算机上进行操作,您将看到两个响应。
derobert 2013年

1

我建议您在中有2个“名称服务器”条目/etc/resolv.conf,第一个条目是指已关闭或无法访问或定期出现问题的DNS服务器。libc中的解析程序代码将尝试第一个名称服务器IP地址,获得超时,然后尝试第二个名称服务器IP地址,此操作将成功。

为了对此进行测试,您可以/etc/resolv.conf仅用一个8.8.8.8(即Google的公共DNS服务器)替换“名称服务器” IP地址。如果没有发生中断,则是您的名称服务器出了问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.