我在 kvm 中安装了一台 ubuntu 14.04 虚拟机,主机是 fedora 20。虚拟机的 eth1 网卡处于 macvtap 桥接模式。Ubuntu 默认启用 ipv6 隐私扩展,并首选临时地址:
$ ip -6 addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:da8:207:e216:a935:a562:3102:7e00/64 scope global temporary dynamic
valid_lft 599380sec preferred_lft 80380sec
inet6 2001:da8:207:e216:5054:ff:fed5:8cae/64 scope global dynamic
valid_lft 2591548sec preferred_lft 604348sec
inet6 fe80::5054:ff:fed5:8cae/64 scope link
valid_lft forever preferred_lft forever
$ sysctl net.ipv6.conf.all.use_tempaddr
net.ipv6.conf.all.use_tempaddr = 2
但是我无法通过ipv6连接到互联网:
ping6 ipv6.google.com
PING ipv6.google.com(hkg03s10-in-x06.1e100.net) 56 data bytes
^C
--- ipv6.google.com ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3023ms
如果我删除临时地址2001:da8:207:e216:a935:a562:3102:7e00/64
或将其设置net.ipv6.conf.all.use_tempaddr
为 1,它将起作用:
# sysctl net.ipv6.conf.eth1.use_tempaddr=1
net.ipv6.conf.eth1.use_tempaddr = 1
# ifdown eth1
# ifup eth1
# ping6 ipv6.google.com
PING ipv6.google.com(hkg03s10-in-x06.1e100.net) 56 data bytes
64 bytes from hkg03s10-in-x06.1e100.net: icmp_seq=1 ttl=47 time=305 ms
64 bytes from hkg03s10-in-x06.1e100.net: icmp_seq=2 ttl=47 time=305 ms
ipv6.google.com
即使我设置net.ipv6.conf.all.use_tempaddr
为 2,主机操作系统(fedora 20)也可以访问。
我觉得 kvm guest 中的隐私地址无法访问 ipv6 网络。这是为什么?
答案1
我遇到了同样的问题。似乎是因为在 libvirt 中,该trustGuestRxFilters
属性的默认设置是no
。
在客户机的 libvirt XML 中将元素设置trustGuestRxFilters
为开启后,客户机中的 IPv6 隐私地址现在可以为我使用了。yes
interface