为OpenWrt配置IPV6,享受下一代互联网

本文是采用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

  1. 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,使用时需要按照自己的实际情况进行适当修改。

  1. #!/bin/ash
  2. #sleep 1
  3. local wanip=$(ip route | grep “pppoe-wan w” | awk ‘{print $3}’)
  4. local wan1ip=$(ip route | grep “pppoe-wan1 w” | awk ‘{print $3}’)
  5. local wan2ip=$(ip route | grep “pppoe-wan2 w” | awk ‘{print $3}’)
  6. local USERID=用户ID
  7. local PASS=用户密码(MD5加密密文)
  8. local TUNNELID=隧道ID
  9. echo wanip=$wanip
  10. echo wan1ip=$wan1ip
  11. echo wan2ip=$wan2ip
  12. wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wan2ip\&user_id=$USERID\&pass=$PASS\&tunnel_id=$TUNNELID
  13. ip ro flush cache
  14. sleep 1
  15. if ! ping -c 5 -W 4 ipv6.google.com | grep “ttl=”
  16. then
  17. echo Wan2ip time out.Try wan1ip
  18. wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wan1ip\&user_id=$USERID\&pass=$PASS\&tunnel_id=$TUNNELID
  19. ip ro flush cache
  20. sleep 1
  21. if ! ping -c 5 -W 4 ipv6.google.com | grep “ttl=”
  22. then
  23. echo Wan1ip time out. Try wanip
  24. wget -q -O /dev/null http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$wanip\&user_id=$USERID\&pass=$PASS\&tunnel_id=$TUNNELID
  25. ip ro flush cache
  26. echo Tunnel Endpoint is wan $wanip
  27. else
  28. echo Tunnel Endpoint is wan1 $wan1ip
  29. fi
  30. else
  31. echo Tunnel Endpoint is wan2 $wan2ip
  32. 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,无云豆了,求充值。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章