openwrt 使用校园网 无法ping6通ipv6.google.com

l在大牛的努力下,中山大学openwrt上的inode认证客户端已经缩小了好多,剩下的空间可以拿来干其他的事情。例如,中山大学的校园网是支持ipv6的,但是由于ipv6没有NAT,使得无法直接通过路由让子网的客户机使用ipv6的网络。这里,需要做些小配置。

楼主使用的openwrt版本是:

root@OpenWrt:/# opkg info kernel
Package: kernel
Version: 3.8.12-1-8156291b9d7b79c90fed742bdd750f70
Depends: libc
Provides:
Status: install hold installed
Architecture: ar71xx
Installed-Time: 1369174641

也即是在内核中直接集成了ipv6支持的kmod-ipv6等内核模块的版本。

但是当lz运行了clih3c进行了用户认证之后,使用:

root@OpenWrt:/# ping6 ipv6.google.com

的时候,却提示:

>PING ipv6.google.com  56 data bytes(xxxx:xxxx:xxxx:xxxx::/xx)
>ping6: sendto: Network is unreachable

使用ifconifg命令查看网络配置的时候,发现在eth0里面也没有获得一个实际可用的ipv6地址,inet6的地址scope是link而不是global的。这个地方纠结了lz好久。

最后,好像在网上看到了一个解决思路。因为我们的校园网使用的ipv6是使用邻居发现协议进行ip地址的分配的。所以当你在开机的时候,ipv6的内核模块会优先于我们的校园网认证客户端运行,这个时候由于我们上一级的路由器对于我们的数据包都是默认丢弃的。所以ipv6的内核模块就无法使用邻居发现协议来进行ipv6的地址配置,也就没有能够获得ipv6的地址。

所以,解决的方法是:

1,卸载掉kmod-ipv6的内核模块。

2,重新启动openwrt

3,进行校园网的客户端认证

4,重新安装配置kmod-ipv6

使用的命令:

>opkg remove kmod-ipv6 --force-depends
>reboot

重启完成之后,进行客户端认证:

当然,假如你之前在/etc/rc.local中设置了认证客户端的开机启动,那也可以忽略这一步。

>nlih3c -u XXX -p XX -d

认证完,重新安装kmod-ipv6模块:

>opkg update 
>opkg install kmod-ipv6

安装成功之后,可以使用ping6 ipv6.google.com进行尝试:

root@OpenWrt:/# ping6 ipv6.google.com
PING ipv6.google.com (2404:6800:4008:c01::93): 56 data bytes
64 bytes from 2404:6800:4008:c01::93: seq=0 ttl=48 time=117.044 ms
64 bytes from 2404:6800:4008:c01::93: seq=1 ttl=48 time=117.130 ms
64 bytes from 2404:6800:4008:c01::93: seq=2 ttl=48 time=106.650 ms
64 bytes from 2404:6800:4008:c01::93: seq=4 ttl=48 time=121.050 ms
64 bytes from 2404:6800:4008:c01::93: seq=5 ttl=48 time=121.147 ms
^C
--- ipv6.google.com ping statistics ---
6 packets transmitted, 5 packets received, 16% packet loss
round-trip min/avg/max = 106.650/116.604/121.147 ms

也即成功实现了ipv6的路由器访问。不过这个配置在重新开机之后会失效,可以通过修改开机的顺序来克服,不过楼主目前还没有这个能力,希望各位有能力的大神能够帮满解决一下,造福广大群众。

你可能感兴趣的:(openwrt 使用校园网 无法ping6通ipv6.google.com)