身为校园网用户,由于学校的公网出口带宽很少,纵有教育网千兆带宽,访问国外网站速度依然慢得难以忍受。但是,在教育网使用IPv6速度却还算不错,以至于很多时候不得不通过IPv6绕道访问国外网站。当初选择BURST.NET的VPS,一方面是因为便宜,另一方面也是因为它提供原生的IPv6支持,在教育网访问速度较快。
但是就在几个月前,BURST.NET的VPS上的IPv6线路全部出了问题,SSH完全无法连接,Ping测试也丢包率100%。发了ticket给了BURST.NET的客服,但是过了很久也没有给予解决,也许是因为IPv6的用户实在太少吧。当时在这种情况下,其实想着要换一家VPS商的,但是一时半会儿找不到这么便宜的,而且BURST.NET的IPv4访问速度看起来也还不错,就一直没有换。
过了这么久,BURST.NET的IPv6线路一直没有恢复正常,只好想想办法自己动手解决了。IPv6 tunnel本来是为了给没有原生IPv6支持的服务器提供IPv6访问的解决方案,鉴于我的VPS的IPv6线路基本处于瘫痪的状态,干脆通过IPv6 tunnel给它提供IPv6支持吧。
首先,需要到http://tunnelbroker.net/上申请免费的HE IPv6 Tunnel Broker,注册登录后,点击Create Regular Tunnel
在IPv4 Endpoint
中填入VPS的IPv4地址,然后在下面的Available Tunnel Servers选择服务器,可以根据自己VPS的地理位置,选择速度相对较快的服务器。
我本应该选择Los Angeles, CA, US
的,但是提示Not Available (Full),只好选择旁边的Fremont, CA, US
,然后点击Create Tunnel
创建Tunnel
一般来说,成功创建Tunnel后只要按照网站上提供的Example Configurations
就可以配置成功了,但是由于我的VPS不支持通过modprobe载入IPv6模块,只好放弃这么做而改用tb-tun
先检查tun/tap
设备是否已经打开,可以通过命令cat /dev/net/tun
检测,如果返回File descriptor in bad state
,则说明tun/tap
设备已经打开,否则需要给客服发ticket开启。
下载tb-tun
wget http://tb-tun.googlecode.com/files/tb-tun_r18.tar.gz
tar xvf tb-tun_r18.tar.gz
编译tb-tun
gcc tb_userspace.c -l pthread -o tb_userspace
假设VPS的Client IPv4 Address为1.2.3.4
,而HE提供的Server IPv4 Address为5.6.7.8
,且HE提供的Client IPv6 Address为2001:a:b:c::2/64
,则只需如下设置
setsid ./tb_userspace tb 5.6.7.8 1.2.3.4 sit
ifconfig tb up
ifconfig tb inet6 add 2001:a:b:c::2/64
ifconfig tb mtu 1480
route -A inet6 add ::/0 dev tb
即可创建IPv6 Tunnel
Leave a Comment