爲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,無雲豆了,求充值。。。

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