在沒有IPV6地址的OpenVZ VPS下使用IPV6隧道機制

我買的vps估計太便宜了,不配ipv6地址,而且無法加載ipv6模組。但能開啟TUN/TAP,所以用軟件tb-tun來建立ipv6 tunnel,使得能走ipv6流量。然後在學校裡可以用ipv6且不限網速,這樣ss用起來應該就快很多吧。:-D

1. 在HE上申請免費的ipv6地址

原理是vps與HE的服務器之間走ipv4流量,然後HE再轉換為ipv6流量並為其分配ipv6地址。這樣我們的vps就相當於「有了一個ipv6地址」,並能進行通信。
HE網址為:https://tunnelbroker.net/。註冊登入後,點閱Create Regular Tunnel。成功後,可見其為我們分配的ipv6地址,網頁不要關,後面設定要用。

2. 將TUN/TAP開啟

這個可以在vps的控制面板裡開啟,請確定已經開了,因為後面tb-tun需要。

3. vps上安裝tb-tun

下載tb-tun,執行:

tb-tun_r18.tar
tar xvf tb-tun_r18.tar.gz

編譯tb-tun,執行:

gcc tb_userspace.c -l pthread -o tb_userspace

4. 設定tunnel

在HE網頁上找到下面3個對應項

Server_IPv4_Address
Client_IPv4_Address
Client_IPv6_Address

將你自己的值替換到下面的代碼中,放到/etc/init.d/ipv6tb:

#! /bin/sh

### BEGIN INIT INFO
# Provides: ipv6
# Required-Start: $local_fs $all
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the ipv6 tunnel
# Description: ipv6 tunnel start-stop-daemon
### END INIT INFO

# /etc/init.d/ipv6tb

touch /var/lock/ipv6tb

case “$1” in
start)
echo “Starting ipv6tb ”
setsid /root/tb_userspace tb 66.220.18.42 103.79.76.216 sit > /dev/null 2>&1 &
sleep 3s #ugly, but doesn’t seem to work at startup otherwise
ifconfig tb up
ifconfig tb inet6 add 2001:470:c:1032::2/64
ifconfig tb inet6 add 2001:470:d:1032::1/64 #Add as many of these as you need from your routed /64 allocation
ifconfig tb mtu 1480
route -A inet6 add ::/0 dev tb
route -A inet6 del ::/0 dev venet0
;;
stop)
echo “Stopping ipv6tb”
ifconfig tb down
route -A inet6 del ::/0 dev tb
killall tb_userspace
;;
*)
echo “Usage: /etc/init.d/ipv6tb {start|stop}”
exit 1
;;
esac

exit 0

設定開機自動啟動:

chmod +x /etc/init.d/ipv6tb

CentOS
chkconfig –add ipv6tb
chkconfig ipv6tb on

Ubuntu
update-rc.d ipv6tb defaults

然後啟動服務:
/etc/init.d/ipv6tb start
現在就設定好了,我們可以ping一下看是否能訪問ipv6網站:
ping6 ipv6.he.net