Feb 15

我们使用He提供IPv6的隧道代理,可以达到流畅访问Google等支持IPv6的网站。前面我也介绍过gogoc(原gw6c),但是这个访问速度有些慢,He提供的这个IPv6隧道代理速度还是不错。步骤如下:
1.注册免费的HE IPv6 Tunnel Broker
注册地址:http://tunnelbroker.net/
点击左边的“Register”开始注册,过程就不说啦,很简单的。注册好之后会收到一封he.net发来的邮件,里面有用户名和密码。
2.开通HE IPv6 Tunnel Broker
登陆tunnelbroker.net点击左侧的“Create Regular Tunnel”,在“IPv4 endpoint”填入你的当前的外网IP(我用的是ADSL上网,就是ppp0的IP,而不是eth0的IP),HE会根据你的浏览器的IP地址帮你选择服务器,但并不一定是最好的,你要根据你的实际连接速度(例如ping一下),选择延迟最小的服务器的地址,点击“Override”可选择服务器,或者直接选择服务器。最后点击“Submit”按钮提交,IPv6 Tunnel Broker就建立好啦。
3.查看你独有的IPv6地址和相关信息
回到HE IPv6 Tunnel Broker的首页,点击刚刚建立的Tunnel,如图:
Ubuntu-HE-Broker-1.png 会有这个Tunnel的详细信息:
Ubuntu-HE-Broker-2.png
记下User ID、Tunnel ID、routed /64、Server IPv4 Address、Server IPv6 Address、Client IPv6 Address 这些地址,后面要用到。

4.Ubuntu 建立启动脚本(ADSL用户,已测)
首先你要把防火墙的IPv6功能打开,否则连不上,这里只说一下UFW的,因为这是Ubuntu系统自带的,修改/etc/default/ufw文件,将里面的“IPV6=no”改为“IPV6=yes”即可。
建立启动脚本he-ipv6-up.sh(名字随便起),需要root权限运行,内容如下:

#!/bin/sh
USER_ID='填入User ID'
TUNNEL_ID='填入Tunnel ID'
PASS='填入密码'
#将密码转换成MD5值
PASS_MD5=$(echo -n $PASS | md5sum | cut -f1 -d ' ')
IPV4_SERVER='填入Server IPv4 Address'
IPV6_SERVER='填入Server IPv6 Address'
URL='https://ipv4.tunnelbroker.net/ipv4_end.php'
#我用的是ADSL拨号上网,所以设备名是ppp0
IPV4_LOCAL=$(ip -4 addr show dev ppp0 | awk '/inet / {print $2}' | cut -d/ -f1)
IPV6_LOCAL='填入Client IPv6 Address'
#等待15秒,以完成ADSL拨号
sleep 15
wget -nv -4 --spider --no-check-certificate "${URL}?ip=$IPV4_LOCAL&pass=${PASS_MD5}&apikey=${USER_ID}&tid=${TUNNEL_ID}"
#以下是he.net网站给出的配置命令
modprobe ipv6
ip tunnel add he-ipv6 mode sit remote $IPV4_SERVER local $IPV4_LOCAL ttl 255
ip link set he-ipv6 up
ip addr add $IPV6_LOCAL/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr
exit

如果你的外网IP是固定的,那就直接点击页面上的“Example Configurations”,然后选择“Linux-route2”,把下面的代码复制到终端中即可,或者把这些代码写到脚本中,然后双击执行,都可以。

5.Ubuntu 建立启动脚本(局域网用户,已经测试成功)
防火墙设置和radvd.conf设置同第4步,这里需要安装curl软件,Ubuntu软件源中有。建立启动脚本he-ipv6-up.sh(名字随便起),需要root权限运行,内容如下:

#!/bin/sh
USER_ID='填入User ID'
TUNNEL_ID='填入Tunnel ID'
PASS='填入密码'
#将密码转换成MD5值
PASS_MD5=$(echo -n $PASS | md5sum | cut -f1 -d ' ')
IPV4_SERVER='填入Server IPv4 Address'
IPV6_SERVER='填入Server IPv6 Address'
URL='https://ipv4.tunnelbroker.net/ipv4_end.php'
#获取外网IP
IPV4_WAN=$(curl ifconfig.me/ip)
#内网IP
IPv4_LAN='填入你的内网IP'
IPV6_LOCAL='填入Client IPv6 Address'
#等待15秒,以完成ADSL拨号
sleep 15
wget -nv -4 --spider --no-check-certificate "${URL}?ip=$IPV4_WAN&pass=${PASS_MD5}&apikey=${USER_ID}&tid=${TUNNEL_ID}"
#这是he.net网站给出的配置命令
modprobe ipv6
ip tunnel add he-ipv6 mode sit remote $IPV4_SERVER local $IPV4_LAN ttl 255
ip link set he-ipv6 up
ip addr add $IPV6_LOCAL/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr
exit

6.Windows Vista/7 下的启动脚本(ADSL用户,已测)
首先要下载Curl软件(http://curl.haxx.se/download.html),自己挑选合适的版本。建立启动脚本he-ipv6-up.bat(名字随便起),需要管理员权限运行,运行时需要关闭一下防火墙,或者允许自ipv4.tunnelbroker.net网站的ping。启动脚本要和curl.exe放在一起,内容如下:

set USER_ID=填入User ID
set TUNNEL_ID=填入Tunnel ID
set PASS_MD5=填入你密码的MD5值,网上可以算出来
set URL=https://ipv4.tunnelbroker.net/ipv4_end.php
set IPV4_SERVER=填入Server IPv4 Address
set IPV6_SERVER=填入Server IPv6 Address
set IPV6_LOCAL=填入Client IPv6 Address
set IPV6_DNS=2001:470:20::2
for /f %%i in ('curl ifconfig.me') do set IPV4_LOCAL=%%i
curl -k "%URL%?ip=%IPV4_LOCAL%&pass=%PASS_MD5%&apikey=%USER_ID%&tid=%TUNNEL_ID%"
netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel IP6Tunnel %IPV4_LOCAL% %IPV4_SERVER%
netsh interface ipv6 add address IP6Tunnel %IPV6_LOCAL%
netsh interface ipv6 add route ::/0 IP6Tunnel %IPV6_SERVER%
netsh interface ipv6 add dnsservers "IP6Tunnel" %IPV6_DNS%
netsh interface ipv6 set prefix ::1/128 50 0
netsh interface ipv6 set prefix ::/0 40 1
netsh interface ipv6 set prefix 2002::/16 30 1
netsh interface ipv6 set prefix ::/96 20 3
netsh interface ipv6 set prefix ::ffff:0:0/96 10 4
netsh interface ipv6 set prefix 2001::/32 5 1

7.Windows Vista/7 下的启动脚本(局域网用户,已测)
首先要下载Curl软件(http://curl.haxx.se/download.html),自己挑选合适的版本。建立启动脚本he-ipv6-up.bat(名字随便起),需要管理员权限运行,运行时需要临时关闭一下防火墙,或者允许自ipv4.tunnelbroker.net网站的ping。启动脚本要和curl.exe放在一起,内容如下:

set USER_ID=填入User ID
set TUNNEL_ID=填入Tunnel ID
set PASS_MD5=填入你密码的MD5值,网上可以算出来
set URL=https://ipv4.tunnelbroker.net/ipv4_end.php
set IPV4_SERVER=填入Server IPv4 Address
set IPV6_SERVER=填入Server IPv6 Address
set IPV4_LAN=填入你的内网IP
set IPV6_LOCAL=填入Client IPv6 Address
set IPV6_DNS=2001:470:20::2
for /f %%i in ('curl ifconfig.me') do set IPV4_WAN=%%i
curl -k "%URL%?ip=%IPV4_WAN%&pass=%PASS_MD5%&apikey=%USER_ID%&tid=%TUNNEL_ID%"
netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel IP6Tunnel %IPV4_LAN% %IPV4_SERVER%
netsh interface ipv6 add address IP6Tunnel %IPV6_LOCAL%
netsh interface ipv6 add route ::/0 IP6Tunnel %IPV6_SERVER%
netsh interface ipv6 add dnsservers "IP6Tunnel" %IPV6_DNS%
netsh interface ipv6 set prefix ::1/128 50 0
netsh interface ipv6 set prefix ::/0 40 1
netsh interface ipv6 set prefix 2002::/16 30 1
netsh interface ipv6 set prefix ::/96 20 3
netsh interface ipv6 set prefix ::ffff:0:0/96 10 4
netsh interface ipv6 set prefix 2001::/32 5 1

8.Windows XP 下的启动脚本(局域网和ADSL用户,未测)
首先要下载Curl软件(http://curl.haxx.se/download.html),自己挑选合适的版本。建立启动脚本he-ipv6-up.bat(名字随便起),需要管理员权限运行,运行时需要关闭一下防火墙,或者允许来自ipv4.tunnelbroker.net网站的ping。
Windows XP需要先安装IPv6协议在命令提示符下输入如下命令安装:

ipv6 install

启动脚本要和curl.exe放在一起,内容如下:

set USER_ID=填入User ID
set TUNNEL_ID=填入Tunnel ID
set PASS_MD5=填入你密码的MD5值,网上可以算出来
set URL=https://ipv4.tunnelbroker.net/ipv4_end.php
set IPV4_SERVER=填入Server IPv4 Address
set IPV6_SERVER=填入Server IPv6 Address
set IPV6_LOCAL=填入Client IPv6 Address
for /f %%i in ('curl ifconfig.me') do set IPV4_LOCAL=%%i

curl -k "%URL%?ip=%IPV4_LOCAL%&pass=%PASS_MD5%&apikey=%USER_ID%&tid=%TUNNEL_ID%"

ipv6 rtu ::/0 2/::%IPV4_SERVER% pub
ipv6 adu 2/%IPV6_LOCAL%

9.修改Host文件
Ubuntu的Host文件位于“/etc/hosts”,Windows的Host文件在“C:windowssystem32driveetc”,然后在“Google和各种网站的IPv6服务hosts”找到你需要走IPv6的网址,填入进去,保存退出,不用重启系统哦~

10.关闭IPv6隧道(Linux用户)
脚本如下:

#!/bin/sh
ip route del ::/0 dev he-ipv6
ip tunnel del he-ipv6

11.关闭IPv6隧道(Windows Vista/7 用户)
脚本如下:

set IPV6_LOCAL=填入Client IPv6 Address
set IPV6_SERVER=填入Server IPv6 Address
set IPV6_DNS=填入IPv6的DNS
netsh interface ipv6 delete route ::/0 IP6Tunnel %IPV6_SERVER%
netsh interface ipv6 delete address "IP6Tunnel" %IPV6_LOCAL%
netsh interface ipv6 delete interface "IP6Tunnel"
netsh interface ipv6 delete dnsservers "IP6Tunnel" %IPV6_DNS%
netsh int ipv6 set prefix ::1/128 50 0
netsh int ipv6 set prefix ::/0 40 1
netsh int ipv6 set prefix 2002::/16 30 2
netsh int ipv6 set prefix ::/96 20 3
netsh int ipv6 set prefix ::ffff:0:0/96 10 4
netsh int ipv6 set prefix 2001::/32 5 5

当时我弄得时候就是卡在ADSL的IP地址总是会变,而网页上的”Client IPv4 Address”地址必须与当前外网IP相同,不知道怎么弄,翻了几篇国外的资料才知道,期间撞墙无数次,真是浪费时间啊。

One Response to “Ubuntu使用he.net的IPv6隧道代理访问网络”

  1. Ubuntu使用he.net的IPv6隧道代理访问网络 | 似水流年 Says:

    […] ? […]

Leave a Reply