我只是猜测 arp 是我的问题......
我设置了一个 Linux drbd 服务器集群,由于一些电源问题,不得不拔掉连接两个服务器的交换机。结果,两个服务器都成为主服务器,并在几秒钟内使用相同的 IP 地址。(这导致裂脑条件,但那是另一个问题)
我的问题是,现在有些服务器似乎能够看到集群的共享 IP 地址,而有些则看不到。我想知道这是否是一些交换机/端口将流量发送到一台服务器,一些发送到另一台服务器?
如果这是问题所在,我该如何解决?
- 并且...这是在交换机上完成的,还是在服务器上完成的?
答案1
如果确实是 arp 问题,则问题将局限于执行路由的网络设备(因为 ARP 就是用于将 L3 地址 (IP) 映射到 L2 地址 (MAC))或可能位于同一 IP 子网中的服务器的 ARP 缓存中。除非是 L3 交换机,否则它不会涉及交换机。
为了解决思科路由器上的问题,您可以运行以下命令来清除 arp 缓存并允许其重建:
clear arp
要从可能缓存错误信息的服务器中删除错误的 arp 条目(因此,不是无法访问的服务器,而是无法访问的服务器),您可以手动从 ARP 缓存中删除虚假条目,其中 IP 地址是无法访问的服务器的 IP。请注意,此语法似乎在 Linux 和 Windows 上都有效:
arp -d <ip-address>
您还可以从无法访问的服务器发送免费 ARP,以导致同一 IP 子网上的其他主机更新其 ARP 缓存(我的笔记中有这个,但我承认我很久没有用过它了。我不记得这是否允许您跳过上述步骤,或者只是缩短其他主机在运行上述命令后添加 arp 条目的过程):
arping -q -A -c 1 -I eth0 <ip-address>
arping -q -U -c 1 -I eth0 <ip-address>
以上所有内容都是针对 ARP 问题,但您在问题中特别提到了交换机。如果是仅使用 L3 进行管理的交换机,则数据流问题必须是 MAC 缓存的问题,而不是 ARP 缓存的问题。在这种情况下,您可以在交换机上运行以下命令来清除动态缓存内容:
clear mac-address-table dynamic
答案2
您可以使用arp
Linux 中的命令删除-d
交换机上的特定条目。如果您有管理型交换机,您可能可以清除 arp 缓存,而使用 cisco 则只需清除clear arp
。除此之外,您当然可以关闭并打开所有交换机的电源,它们应该会重建其表。
答案3
这次停电是否也导致交换机断电?也许他们丢失了最后的配置更改,即“针对此 mac 地址,将数据包发送到这 2 个端口”的更改。
思科交换机必须像虚拟 mac 的集线器一样进行设置,因此它们会将与虚拟 mac 相关的所有数据包发送到两个主机。