问题背景
最近搬迁到了新的服务商,服务器默认是不支持 IPv6 的。而 IPv4 资源宝贵,又是被封代理的重灾区,比如 Google Scholar 这样的可能一封就是一整个地址段,实在伤不起。
那么服务商说不支持 IPv6,是不是就真的没法用了呢?其实也不是,所谓不支持只是没有提供开箱即用,但是通过隧道的方式我们还是可以曲线救国的。
注册 IPv6 隧道
首先,需要去 HE 注册一个 IPv6 地址:https://www.tunnelbroker.net
Hurricane Electric 是美国老牌 IDC(互联网数据中心),成立于 1994 年,公司位于美国加州弗里蒙特,HE 拥有世界上最大的 IPv6 骨干网,在世界各地都有提供 IPv6 Tunnel Broker 的服务。
注册成功后,在 Tunnel Details -> Example Configurations 中,选择自己服务器对应的系统,如 Debian/Ubuntu,然后你就会获得一段配置代码:
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:a:3be::2
netmask 64
endpoint 216.218.226.238
local 64.64.238.238
ttl 255
gateway 2001:470:a:3be::1
将这段代码添加到 etc/network/interfaces
文件末尾即可。
启用 IPv6 支持
如果你的服务商声明不支持 IPv6,多半是他们在配置文件中把设置默认关掉了。我们只要编辑/etc/sysctl.conf
文件,修改这些属性打开 IPv6 支持即可:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
重新加载使配置生效:
$ resolveconf -u
启用 IPv6 端口:
$ ifconfig
$ ifup he-ipv6
这步不是必须的,这个端口添加成功后会随着服务器启动自动打开。
测试 IPv6 连接
首先 ping 一下 Google 的 IPv6 地址来测试一下服务器本身的连接:
ping6 -c 5 ipv6.google.com
如何测试现在是正在使用 IPv4 还是 IPv6 访问呢,可以在连接代理的机器上访问:
https://www.google.com/search?hl=en&q=what+is+my+ip