最初启动时 VXLAN 不工作

最初启动时 VXLAN 不工作

我正在尝试使用 VXLAN 使覆盖网络正常工作。总而言之,这是一个相当简单的设置,但由于某种奇怪的原因,在启动时无法正常工作。

我有两个(嗯,实际上有六个,但这在这里无关紧要)主机,A 和 B。两者的配置类似:

ip -6 link add vx1 type vxlan id 99 dstport 4789 local <local-ipv6-address>
bridge fdb append 00:00:00:00:00:00 dev vx1 dst <remote-ipv6-address>
ip link set up dev vx1
ip -6 addr add <random-ula>::10/64 dev vx1

显然,除了本地/远程交换,并且在最后一步中使用不同的地址。

我从 A 到 B 运行 ping6,一旦接口正常运行,我就可以看到主机 B 上的流量(带有tcpdump)。但是B没有给A回复,情况类似为什么linux不响应来自VxLAN的ICMP请求?但这没有帮助。在我手动调出界面后,或者在/etc/network/interfaces.然而,如果我从 B 向 A 发送一个 ping,突然一切都神奇地工作,那么“解决”这种情况的方法是什么。

我检查了路由、iptables、fdb 和我能想到的任何东西。在简单地启动接口和发送第一个“修复 ping”之间,任何配置似乎都没有发生任何变化。我的问题当然是重新启动,那么有什么我可以检查并可能做的事情来正确解决这个问题吗?一种选择是向覆盖层中的所有其他主机发送 ping 消息,但这充其量看起来很笨拙,而且几乎不是一个可靠的解决方案。特别是在构建更大的覆盖层时。

答案1

我不确定你的情况,但就我而言,这是 vxlan 一端的错误配置。一个节点 (A)的转发数据库(您可以使用 来查看bridge fdb)包含错误信息:特别是 00:00:00:00:00:00 MAC 地址(错误地)据说可以在节点 A 的 IP 上访问地址,而不是可以通过节点 B 的 IP 地址进行访问。

使用并删除错误的转发规则附加正确的值bridge fdb append 00:00:00:00:00:00 dev <VXLAN INTERFACE> dst <IP ADDRESS>使其起作用。

ping 正在触发“正确”行为,因为它允许对等方发现 IP <-> MAC 地址映射,而无需中继 MAC 广播。

相关内容