不知道如何/为什么,但这就是我所看到的。考虑 3 个 CentOS 5.10 盒子:
Host A [10.1.2.7]
Host B [10.1.2.8]
Host C [10.1.2.9]
突然间,我们从主机 X(10.1.2.3)收到奇怪的行为。经过调查和对各种端口的大量 telnet 操作,以及与主机日志的关联等,我们最终推测每个主机(A、B、C)也“认为”自己是 10.1.2.3,因此:
hostA# telnet 10.1.2.3 80
结果是主机 A本身接收该 TCP/IP 连接(本例中为端口 80),而不是连接到真正的 10.1.2.3(主机 X)。主机 A 未配置为:
hostA# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:CC:CC:ED:F3:B0
inet addr:10.1.2.7 Bcast:10.1.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feed:f3b0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:63036 errors:0 dropped:0 overruns:0 frame:0
TX packets:12508 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6047120 (5.7 MiB) TX bytes:1439770 (1.3 MiB)
Interrupt:59 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:28378 errors:0 dropped:0 overruns:0 frame:0
TX packets:28378 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2410342 (2.2 MiB) TX bytes:2410342 (2.2 MiB)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
我仍然怀疑某些东西与 ARP 有关,但请注意,arp -n 根本没有列出 10.1.2.3——没有 ARP 缓存条目,即使在对 10.1.2.3 进行 telnet、ping 等操作之后也是如此。就好像主机 A 突然“认为”它是 10.1.2.3,而其配置中没有任何内容表明这一点。
而且,更重要的是...主机 B(行为完全相同)、主机 C、主机 D 等也是如此。在测试时,当指示连接到 10.1.2.3 时,这些主机中的每一个都会连接回自身。
最后决定重启其中一个,看看是否存在正在运行的内核/ARP 问题(读起来:非常绝望)。虽然没有解决,但在重启后的几秒钟或一分钟内,主机不会“认为”这是另一个 IP,但随后又恢复了上述问题。
因此,我拥有大量主机,每个主机都突然“认为”它是 10.1.2.3,但找不到任何配置、ARP 表,也没有任何其他表明它们已假定绑定到该 IP 的信息。同时,它出现LAN 上的许多 Windows 主机没有遇到此问题——它们不是表现出这种行为(可能相关或不相关)。
甚至尝试将一台主机移至另一台交换机,以防交换机出现问题。但未解决。
如果相关的话,另一个共同属性是所有这些 CentOS 主机实际上都是在 VMWare Server 下运行的虚拟机——但并非全部在同一主机硬件上。多个虚拟机管理程序主机在运行。