ipv6技术逐渐普及并得到广泛的应用,很多企业也开始部署自己的ipv6网络,很多终端也开始支持ipv6技术。
遗憾的是,android虽然得到广泛普及,但android并没有原生支持ipv6。可喜的是:
From a Google Android Kernel team member:
“Bionic does support Ipv6, but the core system classes that come with Dalvik
don’t yet. But work is being performed to add this feature. ”
That means, you’d better have patient and waiting.
但是这种等待并不是办法,由于android的底层是Linux,其中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Linux的内核从2.2起就支持ipv6,故笔者研究用android获取ipv6地址,访问ipv6网站和获取ipv6资源。研究获得了初步的成果,遂与大家分享。
条件:
1.手机的内核要大于2.2,且内核支持ipv6。大多数android rom的内核大多数都是2.6,第三方rom(如CM)的内核都支持ipv6,其他rom笔者没做调查。
内核版本应大于2.2
2.手机已经root,获取root权限。
3.拥有获取ipv6的环境,即拥有ipv6路由或ipv6无线网关(AP);笔者使用校园网下的Openwrt路由实现。实现方法可以参考:http://talk.withme.me/?p=51
方法:
1.下载安装android终端,此类软件很多,可以自行选择使用。
2.android手机连接可以获取ipv6的无线路由。
3.在终端输入Linux命令:ifconfig,查看其网络状态:
查看网络状态
可以看到wifi的网络连接为tiwlan0,从wifi路由器获取ipv4地址为192.168.1.117,ipv6地址为本地地址,没有公网的ipv6地址。
4.输入Linux命令:su,提权,获取root权限,此时可能会弹出是否允许终端获取管理员权限的提示对话框,此时应该选择“允许”。
输入su提权
5.由于手机不会dhcp获取ipv6地址,故只能手动设置ipv6地址,输入命令:
ifconfig tiwlan0 add 2001:250:3002:4650:21f::100/80
注意,命令ifconfig interface [add ADDRESS[/PREFIXLEN]]为向网络名为interface的网络添加ip地址(中括号意为可选值),另外,ipv6地址的设置和prefix的设置必须符合自己的环境,路由和网关才会转发你的请求。
手动设置ipv6地址
这里可能是终端软件的缘故,截图未能看到整条命令。
6.重新输入ifconfig查看网路状态:
查看网络状态
可以看到已经成功设置了ipv6地址。
7.用浏览器访问http://ip6.me/,该网站可以查看自己的合法ipv6的ipv6地址:
访问ip6.me
可以看到,ipv6地址合法且可用。
访问六维也成功:
访问六维成功
但是,由于该过程不具有持久性,一旦wifi无线连接断开后重新连接,该过程就要重复,稍显繁琐,不过熟悉Linux的读者可以通过脚本解决,这里略。
笔者稍后也会继续研究android平台ipv6的dhcp自动获取以提高效率。
利用Openwrt,android的ipv6还可以有更多有趣的应用。
登录Openwrt的luci,即web界面,通常为http://192.168.1.1/,找到网络->DHCP/DNS页面:
找到网络->DHCP/DNS页面
切换到“HOST和解析文件”选显卡,在“额外的hosts文件”添加一个hosts文件路径:
添加一个hosts文件路径
这里为“/root/host”当然也可以是其他路径,不唯一。记得保存。
用ssh客户端登录路由,在相应的路径下创建host文件,这里在/root目录下创建文件名为host的文件,命令:touch host。
编辑host文件:vi ./host
按照host文件的填写要求添加菲死不可、推特等网站的ipv6 host。
什么?菲死不可和推*是什么?
亲,你懂的!至于具体地址,自己google把。
可能需要重启host才会生效。
这样,路由下的设备,包括有线和无线连接的电脑,或者是已设置ipv6的android设备,均可以访问上述网站,而无需在各自的设备上单独修改host。