如何为 vps 设置 ipv6 隧道
发布网友
发布时间:2022-05-02 12:24
我来回答
共1个回答
热心网友
时间:2022-06-20 01:43
首先要确认vps支持tun/tap设备。运行
cat /dev/net/tun
如果返回File descriptor in bad state,说明支持tun/tap。否则请发ticket联系客服。
下面要申请一个用于ipv6隧道的ipv6地址池。进入http://tunnelbroker.net/ ,点击左上角面板的Register按钮注册一个帐号。
注册完成后登录,点击左侧的Create Regular Tunnel,在IPv4 Endpoint (Your side):中填入vps的ipv4地址,然后在下面的Available Tunnel Servers里选择一个离你vps机房最近的地点。我是美国西海岸机房的vps,就选择North America ,Los Angeles, CA, US的隧道服务器。点击Create Tunnel创建隧道。
创建完成后进入刚申请的隧道的详情页面,记下以下信息:
Server IPv4 Address: 服务端的ipv4地址,假设为1.2.3.4
Client IPv4 Address: vps的ipv4地址,假设为5.6.7.8
Client IPv6 Address: 获得的ipv6地址,假设为2000:200:a:f00::2/64
点击中间的Example Configurations选项卡可以看见各种系统上建立隧道的配置方法,不过OpenVZ虚拟机都是用不了的。此时需要使用用户层的tb-tun隧道客户端。
装好gcc,下载并编译tb-tun:
wget http://tb-tun.googlecode.com/files/tb-tun_r18.tar.gz
tar xvf tb-tun_r18.tar.gzgcc tb_userspace.c -l pthread -o tb_userspace
顺便把编译出的程序移到$PATH里吧
mv tb_userspace /usr/local/sbin
用tb_userspace创建一个名为tb的虚拟接口并后台运行,第一个地址为服务端地址,第二个地址为vps的本地地址。
setsid tb_userspace tb 5.6.7.8 1.2.3.4 sit
启用虚拟接口:
ifconfig tb up
为虚拟接口分配前面申请到的ipv6地址:
ifconfig tb inet6 add 2000:200:a:f00::2/64
调整虚拟接口的最大传输单元:
ifconfig tb mtu 1480
添加ipv6路由
/sbin/route -A inet6 add ::/0 dev tb
/sbin/ip -6 route add default dev tb
可能还需要删除venet0上的默认ipv6路由,否则ping不通其他ipv6地址。我就是这种情况
ip -6 route del default dev venet0
设置无误的话尝试运行ping6 ipv6.google.com
PING ipv6.google.com(lax02s02-in-x08.1e100.net) 56 data bytes64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=1 ttl=59 time=12.5 ms64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=2 ttl=59 time=22.4 ms64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=3 ttl=59 time=12.4 ms64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=4 ttl=59 time=13.2 ms64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=5 ttl=59 time=12.4 ms64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=6 ttl=59 time=12.4 ms64 bytes from lax02s02-in-x08.1e100.net: icmp_seq=7 ttl=59 time=14.6 ms
^C--- ipv6.google.com ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6006ms
rtt min/avg/max/mdev = 12.441/14.326/22.446/3.396 ms
说明vps本机访问ipv6已经没问题了。然后可以试试从本地ping到vps的ipv6地址。也能ping通说明大功告成了
测试无误就把建立和设置隧道的命令写到/etc/rc.local里去吧
除了tunnel broker,tb_tun也支持isatap连接,不过我没试过,毕竟好用的isatap服务器不好找。
不过tb-tun似乎不是很稳定,有时会丢包或者出现Network is unreachable,不知道是程序的原因还是网络的原因。
类似这种,存成bash脚本,每次开机启动就行
ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::64.62.134.130
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:470:66:16e::2/64
route -A inet6 add ::/0 dev sit1