今天要测试IP多宿主(ip multihoming),即host和guest的两个网卡分别接,host ping guest的ipv6不通。解决过程如下:
命令输出:
# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:33:7e:04 brd ff:ff:ff:ff:ff:ffinet 172.18.34.202/26 brd 172.18.34.255 scope global dynamic eth0valid_lft 172228sec preferred_lft 172228secinet6 fe80::a00:27ff:fe33:7e04/64 scope link tentative dadfailedvalid_lft forever preferred_lft forever3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:53:77:09 brd ff:ff:ff:ff:ff:ffinet 192.168.57.12/24 brd 192.168.57.255 scope global eth1valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe53:7709/64 scope link tentative dadfailedvalid_lft forever preferred_lft forever
看到tentative dadfailed, 原来dad的意思是Duplicate Address Detection,默认值是1也就是拒绝DAD。见: /linux//09/27/ipv6-dadfailed-problem.html
执行完发现确实是:
# sysctl -a | grep accept_dadnet.ipv6.conf.all.accept_dad = 1net.ipv6.conf.default.accept_dad = 1net.ipv6.conf.eth0.accept_dad = 1net.ipv6.conf.eth1.accept_dad = 1net.ipv6.conf.lo.accept_dad = -1
将用于host和guest通信的(HOST-ONLY)接口accept_dad设置成0,并重启网络服务:
sysctl -w net.ipv6.conf.eth1.accept_dad=0sysctl -w net.ipv6.conf.eth2.accept_dad=0service network restart
打印网络接口信息可以看到eth2和eth3的tentative dad消失:
# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:33:7e:04 brd ff:ff:ff:ff:ff:ffinet 172.18.34.202/26 brd 172.18.34.255 scope global dynamic eth0valid_lft 172803sec preferred_lft 172803secinet6 fe80::a00:27ff:fe33:7e04/64 scope link tentative dadfailedvalid_lft forever preferred_lft forever3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:53:77:09 brd ff:ff:ff:ff:ff:ffinet 192.168.57.12/24 brd 192.168.57.255 scope global eth1valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe53:7709/64 scope link 注意到tentative dadfailed没有了。valid_lft forever preferred_lft forever
从host ping guest,首先通过ipconfig查看virtualbox的虚拟网卡VirtualBox Host-Only Network #2和VirtualBox Host-Only Network的IPV6地址后面的接口标号(百分号后面)。因为我的guest网卡配置这两个host的虚拟网卡分别对应eth1和eth2(与virtualbox的配置界面中mac地址对应。eth0做网桥用),所以结果:
ping ipv6_address_eth1%15
ping ipv6_address_eth2%16
如果觉得《virtualbox虚拟机--虚拟机的网络》对你有帮助,请点赞、收藏,并留下你的观点哦!