SilverLining's Blog

服务器启用 IPv6

问题背景

最近搬迁到了新的服务商,服务器默认是不支持 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