使用桥接 VLAN 时 QEMU 客户机中的 IPv6 失败

使用桥接 VLAN 时 QEMU 客户机中的 IPv6 失败

在我的实验室中,我设置了一个 QEMU 客户机(“guest1”),打算添加 ipv6 支持,但情况不太对劲。由于某种原因,guest1 无法看到来自 router1 的邻居发现数据包,因此与互联网的 IPv6 通信失败。

例如,当从 guest1 向 internet 主机发送 Ipv6 ping 时,ICMPv6 数据包到达 internet 主机,并且生成响应并可由 router1 和 host1 观察到,但此响应永远不会到达 guest1。

使用 tcpdump 仔细查看后发现,路由器 1 正忙于尝试通过 VLAN 发送邻居发现数据包来解析客户机 1 的 MAC 地址。这些邻居发现数据包可以在路由器 1 和主机 1 上观察到(使用 tcpdump),但在虚拟机“客户机 1”内观察不到。

我怀疑这是一个错误(不确定是 802.1q 驱动程序、QEMU 还是其他地方),但在深入探讨之前,我想分享我所看到的内容并征求社区可能有的任何建议,以便更好地阐明我所看到的内容。

我附上了一张我绘制的简短图表来展示实验室架构。

顺便说一句,IPv4 通信运行良好 - guest1 可以毫无问题地与互联网和网络上的其他主机通信。只有 IPv6 似乎有问题。

任何主机上都没有安装 iptables 过滤器来阻止 icmpv6。

操作系统版本:

  • Linux guest1 3.10.0-862.3.2.el7.x86_64 #1 SMP 2018 年 5 月 21 日星期一 23:36:36 UTC x86_64 x86_64 x86_64 GNU/Linux
  • Linux host1 3.10.0-957.5.1.el7.x86_64 #1 SMP 星期五 2 月 1 日 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

编辑 1:在图中,我展示了 pong 返回网络的过程。实际上,当路由器尝试使用邻居发现 (ND) 来定位 pong 的目的地时,pong 会在路由器处停止。因此,该图显示了 pong,但实际上 ND 数据包是失败的。如果 ND 解析成功,则路由器将获得目标 MAC 并能够将数据包发送到目的地。

在此处输入图片描述

相关内容