Vmware tools与IPV6冲突的解决

发现ubuntu下安装vm tools后不能正常ipv6这个问题已经很久了,之前一直是舍弃vm tools保全ipv6。不过,这两天在用Instant Contiki,vm tools已经安装过了,在虚拟机用Google经常被墙,所以被迫还是得解决ipv6的问题。分享下解决这个问题的经历。

首先检查下虚拟机的网络环境是否是bridged,即网卡直连。vmware的nat方式应该不支持ipv6吧。。

之后,去ubuntu托盘,打开Network Manager,检查ipv6的状态。默认安装过vm tools之后,ipv6是ignore的状态。可以尝试下把Ingore改为Automatic或者Automatic Address Only/Automatic DHCP,不过,在我的网络环境下,IPV6地址是ipv6 stateless address autoconfiguration,尝试了几下均不可以。

继续尝试手动配置,Manual设置Address为2001:cc0:****:1032::999,网关从Windows主机下看到为2001:cc0:****::1,prefix64。此时外部地址依然无法ping通,估计是路由的问题了。route -v -6看下,果断没有下一跳路由。。。看到Network-Manager提供了routes选项,添加了几条路由,均不给力。。

Network manager

现在看来,应该是vmware tools与Network-Manager的冲突引起的问题了,network-manager木有路由,在自身的routes下添加的路由也不起作用。

尴尬之下,Google看下Network-Manager的工作原理,基本上是在/etc/NetworkManager/system-connections/目录下读取配置,然后转化成相应的配置。。。同时,也会执行/etc/network/if-*.d/目录下的东东。

这样,类比于/etc/network/interfaces的up和down,在/etc/network/if-up/目录下新建一个bugfix,填入如下内容:

#!/bin/sh

# set default route for inet6
if [ "$IFACE" = "eth0" ]; then
	route -A inet6 add 2000::/3 gw 2001:cc0:****:1032::1
fi

这样,开机之后就有inet6的路有了,问题搞定。

当然,根据/etc/network/interfaces与Network-Manager的优先级,也可以直接禁用掉Network-Manager,在/etc/network/interfaces中添加

iface eth0 inet dhcp
iface eth0 inet6 static
address 2001:cc0:****:1032::999
netmask 64
gateway 2001:cc0:****:1032::1
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Permalink: http://zyj.me/article/vmware-tools-ipv6
Tags:
« »

Comments are closed.

我的微博