本文是採用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,無雲豆了,求充值。。。