Bhyve + IPv6 无法从客户机 ping 到主机,直到主机 ping 客户机

Bhyve + IPv6 无法从客户机 ping 到主机,直到主机 ping 客户机

主机/客户机都使用 FreeBSD 11.1,我使用以下方式创建虚拟机虚拟主机

这是主机配置/etc/rc.conf

ifconfig_igb0_ipv6="inet6 2a01:4f8:150:84ec::1 prefixlen 64"
ipv6_activate_all_interfaces="YES"
ipv6_defaultrouter="fe80::1%igb0"
rtadvd_enable="YES"

/etc/rtadvd.conf

igb0:\
        :addrs#1:addr="2a01:4f8:150:84ec::"\
        :prefixlen#64\
        :tc=ether\
        :rltime#0\
        :rdnss="2a01:4f8:150:84ec::1":

这是比维客人/etc/rc.conf

ifconfig_vtnet0_ipv6="inet6 accept_rtadv"
ipv6_defaultrouter="fe80::1%vtnet0"
rtsold_enable="YES"

ifconfig bridge0这是主机上的输出:

bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: vm-public
    ether 02:e0:41:b7:a4:00
    nd6 options=1<PERFORMNUD>
    groups: bridge
    id 00:00:00:00:00:00 priority 0 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
    member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 7 priority 128 path cost 2000000
    member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 1 priority 128 path cost 2000000[/CODE]

我发现的第一个问题是,启动虚拟机后,需要一段时间才能获取 IP,在某些情况下,我需要重新启动韓國只有这样我才能获得 IP,日志中出现的错误是这样的:

rtadvd[1871]: <getconfig> inet_pton failed for 2a01:4f8:150:84ec::

VM 获取 IP 后,我可以 ping 其他主机,例如2001:4860:4860::8844,但不是主机本身,因此我无法解析任何域,这是因为我正在使用未绑定在主机上,是我定义的DNS(/etc/resolve.conf)。

到目前为止我发现解决此问题的唯一方法是从主机 ping 到客户机的 IPv6,这样做之后一切都按预期运行。

知道可能出了什么问题吗?为了进行测试,我禁用了普法pfctl -d)但仍然不起作用。

提前致谢。

答案1

我设法解决这个问题,主要的技巧是仅使用桥接接口并auto_linklocal在其上启用,如下所示:

ifconfig_bridge0_ipv6="inet6 2a01:4f8:350:84ec::1 prefixlen 64 auto_linklocal"
rtadvd_enable="YES"
rtadvd_interfaces="bridge0"

相关内容