ESX 6 和 CentOS 7 机器之间的双向连接出现了一个奇怪的问题。
我们正在使用直接连接到 ESX 的 CentOS 7,并将其用作 iSCSI NAS - 有时 ESX 会说它看不到 NAS,并且相应的数据存储将无法访问 - 当这种情况发生时,我们检查一切,没有任何物理错误,NIC 上的 LED 亮起,Linux 和 ESX 上的 ethtool 报告链接正常 - 当我们检查 arp 时,Linux 知道 ESX 接口,但是 ESX 不知道,并且它的 arp 缓存显示不完整。 - 当我们使用 tcpdump 检查 ARP/RARP 数据包时,发生了一些奇怪的事情,在 Linux 中从 ESX 接口接收到 ARP,tcpdump 显示 Linux 回复了 ARP 请求,为什么 ESX 上的每个 tcpdump 都没有 Linux 发送的 ARP 回复。 - 不知何故,链接似乎变成了单行道!?
请检查我们为寻找线索而执行的命令和结果:
在 CentOS 7 上
[root@nas ~]# arp -an
? (10.10.10.2) at 00:50:56:XX:0d:77 [ether] on enp3s6
? (192.168.70.254) at 00:50:56:XX:99:c7 [ether] on enp5s0
[root@nas ~]# tcpdump -nnvli enp3s6 arp
tcpdump: listening on enp3s6, link-type EN10MB (Ethernet), capture size 65535 bytes
07:52:25.143360 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 46
07:52:25.143367 ARP, Ethernet (len 6), IPv4 (len 4), Reply 10.10.10.1 is-at 00:07:e9:XX:07:93, length 28
07:52:26.143452 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 46
07:52:26.143454 ARP, Ethernet (len 6), IPv4 (len 4), Reply 10.10.10.1 is-at 00:07:e9:XX:07:93, length 28
07:52:27.145667 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 46
07:52:27.145673 ARP, Ethernet (len 6), IPv4 (len 4), Reply 10.10.10.1 is-at 00:07:e9:XX:07:93, length 28
在 ESX 6 上
[root@gahar:~] tcpdump-uw -nnvli vmk2 arp
tcpdump-uw: listening on vmk2, link-type EN10MB (Ethernet), capture size 96 bytes
07:52:25.523005 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
07:52:26.523247 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
07:52:27.524461 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
07:52:31.079580 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
07:52:31.079634 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
07:52:32.080746 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
07:52:33.081656 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.10.1 tell 10.10.10.2, length 28
[root@gahar:~] ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1): 56 data bytes
sendto() failed (Host is down)
[root@gahar:~] esxcli network ip neighbor list
Neighbor Mac Address Vmknic Expiry State Type
-------------- ----------------- ------ -------- ----- -------
192.168.33.10 00:0c:29:XX:ea:60 vmk0 965 sec Unknown
192.168.33.254 00:50:56:XX:99:c7 vmk0 1194 sec Unknown
10.10.10.1 (incomplete) vmk2 -3 sec Unknown
临时解决方法:
[root@gahar:~] esxcli network nic down -n vmnic2
[root@gahar:~] esxcli network nic up -n vmnic2
[root@gahar:~] ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1): 56 data bytes
64 bytes from 10.10.10.1: icmp_seq=0 ttl=64 time=0.207 ms
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=0.212 ms
64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.257 ms
--- 10.10.10.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.207/0.225/0.257 ms
综上所述,我正在寻找解决方案。但我找不到根本原因。