Freebsd
在主機 ping 來賓之前,Bhyve + IPv6 無法從來賓 ping 到主機
主機/來賓都使用 FreeBSD 11.1,我使用vm-byhbe創建了 VM 。
這是主機配置
/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":
這是bhyve客人
/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]
我發現的第一個問題是,在啟動VM後,需要一段時間才能獲得IP,在某些情況下我需要重新啟動rtadvd才能獲得IP,我在日誌中的錯誤是這個:
rtadvd[1871]: <getconfig> inet_pton failed for 2a01:4f8:150:84ec::
VM 獲得 IP 後,我可以 ping 其他主機,例如2001:4860:4860::8844,但不能 ping 主機本身,因此我無法解析到任何域,這是因為我在主機上使用unbound並且是我定義的 DNS (/etc/resolve.conf)。
到目前為止,我發現解決此問題的唯一方法是從主機 ping 到客戶機上的 IPv6,之後一切都按預期工作。
有什麼想法可能是錯的嗎?為了測試,我禁用了pf (
pfctl -d
) 但仍然無法正常工作。提前致謝。
我設法解決了這個問題,主要技巧是只使用橋接介面並啟用
auto_linklocal
它,如下所示:ifconfig_bridge0_ipv6="inet6 2a01:4f8:350:84ec::1 prefixlen 64 auto_linklocal" rtadvd_enable="YES" rtadvd_interfaces="bridge0"