NAT 后面 libvirt 主机的 TFTP

NAT 后面 libvirt 主机的 TFTP

我花了一整天的时间来解决这个问题,所以我想把它记录在这里!

我有一个 LibVirt 主机,它使用 NAT 而不是桥接托管虚拟机,使用 LibVirt 安装时构建的默认 IPTables 规则。我可以使用虚拟 CD 安装操作系统,然后获得完整的互联网连接,但由于 TFTP *用于 PXE 启动的性质更为复杂,伪装似乎无法将 TFTP 回复传回虚拟机。

我可以从 tcpdump 的各种实例中看到以下数据包序列:

  1. VM udp/ephemeral 向 LibVirt 主机 udp/69 请求文件
  2. LibVirt 主机 udp/ephemeral 向 TFTP 服务器 udp/69 请求文件
  3. TFTP 服务器 udp/ephemeral2 到 LibVirt 主机 udp/ephemeral

此时没有进一步的信息通过,并且 VM tftp 客户端超时。

我尝试使用内核模块 ip_conntrack_tftp/nf_conntrack_tftp 和 ip_nat_tftp/nf_nat_tftp,但没有帮助。

*尽管客户端到服务器的初始请求是在 udp/69 上,但服务器到客户端的回复源自伪随机临时端口。

答案1

我遇到了和你完全一样的问题,最后找到了你的帖子。

就我而言,在 Libvirt 主机上加载nf_nat_tftp就足以让它工作了。谢谢你的提示!

答案2

最后,我找到了一个关于 VMWare 的文章遇到了类似的问题,并尝试将 LibVirt 中的网络接口类型从 virtio 切换到 e1000。立即成功!

相关内容