之前,在ESXi环境 虚拟机上建立 he.net ipv6隧道,用he.net给出的 ip route2 环境脚本配置,就是不通,实体机倒是可以通。
主要表现为,运行he.net脚本后,可以ping通本端v6地址,却无法ping通远端的。一直都是这样。
起初,怀疑是移动专线不支持。
后来,换了电信专线环境,也不支持。
排除是专线环境原因。
后来,以为是ESXi环境设置原因,翻来覆去,查资料,这个原因也排除了。
再后来,检查虚拟机本身,怀疑是虚拟网卡型号问题,换了所有网卡,不通。
网上查资料,说要加载IPv6.ko模块,我的虚拟机就找不到IPv6.ko文件,树莓派实体机是有这个文件的,朝这个方向找原因,一无所获。后来回想,此方向不适合虚拟环境。lsmod | grep ipv6
总不甘心,如果无法在虚拟机上启IPv6,仅作常规用途,那么专线固定IP,上下行同等的优势就难以体现,再次开始折腾。
装VMware tools 工具包,还是不通。
装 tb-tun 工具,还是不通。
怀疑是隧道服务器被屏蔽,更换隧道服务器,还是不通。
查VMware官方文档,无结果。
查百度,就没有人遇到过这个问题。想来应该是支持的,不然云服务器卖给谁去?
几乎就要崩溃,放弃的时候,上v2ex提问,有网友反馈,亲自在ESXi 6.0上,用pfsense 打 he.net隧道,是可以通的。基于v2ex网友的高素质,且是亲自实验,可以判定VMware环境本身对IPv6支持是良好的。
确定了既然是支持的,那就在虚拟机上找原因,突发奇想,要不换 he.net 的 net-tools 自动配置脚本试试,居然通了,很稳定。就是用 ifconfig 配置的那种方法。
由此证明,先前所有的猜想都是错误,VMware环境的虚拟机,就是没有IPv6.ko这个模块,但它的ipv6功能是正常的。但不知为啥,用ipriute2脚本的方法起ipv6隧道,就是有问题。
还是不知道确切原因,可能性较大的是iproute2 起 iov6隧道,需要IPv6.ko 内核模块支持吧,虚拟机上没有该模块,于是产生问题。也不深究了。至此,困扰我大半年的问题,解决了。