这这个问题与我遇到的问题相同。没有答案。
我在 Ubuntu 上运行 vagrant,并禁用了 ipv6。当我使用 vagrant 创建映像时,libvirt 返回:
激活网络时出错:调用 virNetworkCreate 失败:内部错误:无法应用防火墙规则 /sbin/ip6tables --table filter --insert FORWARD --in-interface virbr1 --jump REJECT:ip6tables v1.6.1:无法初始化 ip6tables 表“filter”:协议不支持地址系列 也许 ip6tables 或您的内核需要升级。
如何在 libvirt 中禁用 ipv6 或者如何解决此问题?
答案1
不要在内核级别禁用 IPv6。从 modprobe.conf 中删除禁用行。
libvirt 网络过滤链是具有相当多功能的防火墙抽象。当然他们可以拒绝。但如果内核禁用了该地址系列,则不行。
在内核级别禁用会带来技术负担。短期内,支持 IPv6 的此类软件可能会出错,因为如果内核不支持 IPv6,它们就无法执行所请求的操作。
从长远来看,这会阻碍您的 IPv6 实施。最终,您将需要不使用 NAT 或代理的 IP 通信。或者厌倦 RFC 1918 地址空间冲突。但现在除了防火墙之外,您还需要接触这个内核问题。并且在内核中禁用时无法构建 v6 主机防火墙。
答案2
你没有提到你正在使用哪个版本的 libvirt,这在这里很重要。Libvirt 确实不是强制使用 IPv6,但是,去年发布的几个版本意外地引入了对 IPv6 的硬依赖。这个问题已经修复,因此如果 libvirt 发现 IPv6 缺失或禁用,它应该可以正常降级。因此,如果这不起作用,那么我建议提交针对 Ubuntu 的错误。