概述
本文是采用HE提供的tunnelbroker隧道接入IPV6网,所以必须要有公网ip才能使用。
首先到http://tunnelbroker.net 注册一个账号,过程不多说。
注册之后在用户首页有个User ID:,是用来标识用户的,以后在OpenWrt的配置中会用到。
然后创建一条Regular Tunnel,千万别弄错。。曾经脑残的我创建了Combine Tunnels,所以折腾了几天都没结果。
我创建过几个测试,电信的选64.62.134.130速度不错,据说联通用香港那几个ip速度也很快。一天不能删除和创建太多次,否则会被ban 24小时不能创建删除。
创建之后我们会得到一些资料,在以后的配置中会用到的。
Tunnel ID:隧道的ID号
Server IPv4 Address:就是刚刚选的那个64.62.134.130,隧道远端ipv4地址
Client IPv4 Address:本地IPV4地址,adsl使用的是动态地址,需要用脚本来更新。
Client IPv6 Address:这个可以理解为路由器和he的ipv6互联地址,如果是单机用的话就是本地的IPV6地址
Routed /64:是可路由IPV6地址块,这个地址块已经HE已经帮你把路由指到那个IPV6互联地址的了。可以直接使用,是分配给内网使用的地址。
HE还提供了一个IPV6的DNS,不过我这里没有使用他提供的DNS也可以正常解析IPV6地址的域名。
好了,回到OpenWrt的部分。
我刷的OpenWrt版本(OpenWrt Backfire 10.03.1-RC5 110617测试版)已经内置有6in4的脚本程序,所以直接在Luci界面上设置就可以了,很方便。
在网络–接口处添加一个新接口,名称随意,我这里是HE_Tunnel。下面”覆盖下列网络接口”这里的选项千万不要选,因为是单选按钮选了就不能回头了…写完名称直接提交即可。
创建之后,接口那个地方就会多了一个HE_Tunnel点进去,协议选6in4
Server IPv4-Address 就是HE隧道的那个IPV4地址,我这里是64.62.134.130
HE.net Tunnel ID是隧道的ID号
用户名是User ID,在HE用户首页可以看到,不是HE的用户名。
密码,我才不公布我密码呢。。。
点选IPV6设置,配置路由器的本地IPV6地址,也就是ipv6互联地址(Client IPv6 Address)
点选防火墙设置,把这个接口添加到wan区域。
最后保存&应用。
这样6in4的脚本会自动把本地的IPv4地址更新到HE的服务器里面,这是我们可以在路由器里面ping下ipv6.google.com
- ping ipv6.google.com>
ping ipv6.google.com>
能ping通就可以进入下一步了,不通的话继续折腾,可以尝试ping远端IPV6(Server IPv6 Address),看看是不是google挂了,虽然这个可能性不大。
接下来,为内网配置ipv6网关。在网络–接口–Lan 配置一个属于你的已路由地址块Routed /64里面的一个地址即可。
允许路由广告和Send Router Solicitiations这两个选项不用选
然后配置网络–radvd,为内网分发ipv6路由。
启用接口选LAN,启用前缀群和路由表,参数默认。
配置完后,内网的PCwindowns vista以上系统已经可以获得IPV6地址了。xp要先安装ipv6协议簇,cmd运行ipv6 install
在内网PCping下ipv6.google.com,能ping通就可以进入下一步了,不通的话继续折腾(检查radvd、防火墙)。
打开红满堂PT试试 http://tracker.ipv6.scau.edu.cn
能到这里表示内网都可以上ipv6了,为神马还有下一步呢。。。原因在这里
不知道是OpenWrt内置6in4脚本的bug还是和n-wan不兼容,adsl断线之后,6in4不会更新本地ipv4地址到远端隧道,只有重启路由器他才会更新,所以需要自己弄个脚本来更新本地ipv4地址。当然如果能正常使用无bug的话,这一步可以跳过。
脚本的原理就是使用HE提供的API手动更新本地IPV4地址,只要请求一下这个地址就可以了。
http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=(本地IPV4地址)&user_id=(userID)&pass=(经过MD5加密的密码密文)&tunnel_id=1(隧道ID)
以下是我的脚本,因为我用了3拨,所以有3个外网接口和3个外网IP,使用时需要按照自己的实际情况进行适当修改。
- #!/bin/ash
- #sleep 1
- local wanip=$(ip route | grep “pppoe-wan w” | awk ‘{print $3}’)
- local wan1ip=$(ip route | grep “pppoe-wan1 w” | awk ‘{print $3}’)
- local wan2ip=$(ip route | grep “pppoe-wan2 w” | awk ‘{print $3}’)
- local USERID=用户ID
- local PASS=用户密码(MD5加密密文)
- local TUNNELID=隧道ID
- echo wanip=$wanip
- echo wan1ip=$wan1ip
- echo wan2ip=$wan2ip
- wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wan2ip&user_id=$USERID&pass=$PASS&tunnel_id=$TUNNELID
- ip ro flush cache
- sleep 1
- if ! ping -c 5 -W 4 ipv6.google.com | grep “ttl=”
- then
- echo Wan2ip time out.Try wan1ip
- wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wan1ip&user_id=$USERID&pass=$PASS&tunnel_id=$TUNNELID
- ip ro flush cache
- sleep 1
- if ! ping -c 5 -W 4 ipv6.google.com | grep “ttl=”
- then
- echo Wan1ip time out. Try wanip
- wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wanip&user_id=$USERID&pass=$PASS&tunnel_id=$TUNNELID
- ip ro flush cache
- echo Tunnel Endpoint is wan $wanip
- else
- echo Tunnel Endpoint is wan1 $wan1ip
- fi
- else
- echo Tunnel Endpoint is wan2 $wan2ip
- fi
#!/bin/ash
#sleep 1
local wanip=$(ip route | grep “pppoe-wan w” | awk ‘{print $3}’)
local wan1ip=$(ip route | grep “pppoe-wan1 w” | awk ‘{print $3}’)
local wan2ip=$(ip route | grep “pppoe-wan2 w” | awk ‘{print $3}’)
local USERID=用户ID
local PASS=用户密码(MD5加密密文)
local TUNNELID=隧道ID
echo wanip=$wanip
echo wan1ip=$wan1ip
echo wan2ip=$wan2ip
wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wan2ip&user_id=$USERID&pass=$PASS&tunnel_id=$TUNNELID
ip ro flush cache
sleep 1
if ! ping -c 5 -W 4 ipv6.google.com | grep “ttl=”
then
echo Wan2ip time out.Try wan1ip
wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wan1ip&user_id=$USERID&pass=$PASS&tunnel_id=$TUNNELID
ip ro flush cache
sleep 1
if ! ping -c 5 -W 4 ipv6.google.com | grep “ttl=”
then
echo Wan1ip time out. Try wanip
wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wanip&user_id=$USERID&pass=$PASS&tunnel_id=$TUNNELID
ip ro flush cache
echo Tunnel Endpoint is wan $wanip
else
echo Tunnel Endpoint is wan1 $wan1ip
fi
else
echo Tunnel Endpoint is wan2 $wan2ip
fi
脚本保存为v6ipup.sh,添加计划任务,每200分钟更新一次。
折腾到此结束。拥有IPV6之后,教育网pt、国外ipv6站点都可以无缝访问。
最后的最后,本文虽然没什么技术含量,但也属原创,转载需注明。
原文首发于:http://fooox.sinaapp.com/archives/23,无云豆了,求充值。。。
最后
以上就是冷酷毛巾为你收集整理的为OpenWrt配置IPV6,享受下一代互联网的全部内容,希望文章能够帮你解决为OpenWrt配置IPV6,享受下一代互联网所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复