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

15次閱讀
尚無留言

我買的 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

正文完