情景说明

首先说明我们要干什么:我们要让自己的网站支持 IPv6,谁让国家给 IPv6 下了文件呢。我们要确保,用户可以在 IPv6 网络环境下无障碍的访问我们的网站。

然后说明我们的系统环境:服务器是阿里云的 ECS,操作系统是 Ubuntu。我们用的是万网的域名解析。阿里一家的嘛。

获取 IPv6 地址

可以从 Tunnel Details 获取 IPv6。你需要注册一个账号,这没啥好说的。注意,你需要一个公网 IPv4 地址。然后,你就可以用一个公网 IPv4 领取到你的 IPv6 了。

阿里云ECSIPv6-1.png



阿里云ECSIPv6-2.png

配置 ECS 系统参数

现在配置系统参数,启动 IPv6。

修改 /etc/sysctl.conf (注意备份)更改如下,把这三个参数改为 0 就可以了:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

配置 ECS 网络

下面就是配置你的 ECS 让它使用 IPv6 地址了(注意,这里用的是 Ubuntu 系统,阿里云支持其他的 Linux 操作系统,请自行调整)。

只要使用 Tunnel Details 给出的示例配置,稍加修改就好。看到给的那段英文提示没,注意,local 那里要填你的 ECS 的内网 IPv4,不是公网的哦。然后添加到你的 /etc/network/interfaces 文件里(注意备份),需要修改的也就只有 local 那里了。

阿里云ECSIPv6-3.png



阿里云ECSIPv6-4.png

配置 Nginx 监听 Ipv6

现在配置 Nginx,监听 Ipv6 请求

server {
    listen 0.0.0.0:80;
    listen [::]:80;
    …………
    …………
}

把监听参数改成这个,就可以同时监听 IPv4 和 IPv6 了: 想使用 https 就使用 ssl 监听 443 端口呗,这个和本文没啥关系。 使用 Apache 的嘛,…………

配置 IPv6 DNS 解析

添加一条 AAAA 记录,没啥好说的吧,至于你的公网 IPv6 地址是啥,重启 ECS 后使用 ifconfig 命令看看呗,肯定和你的 /etc/network/interfaces 里配置的 address 一致的。当然,这个 address 肯定也和你申请 IPv6 时的“Client IPv6 Address”一致的。

踩坑:IPv6 无法访问

注意,当你重启 ECS 后,应该可以看到自己的 IPv6 已经启动了,使用 ifconfig 命令查看。然后你在你的 ECS 里使用 ping6 命令去 ping6 ipv6.baidu.com 应该是可以的,但是嘛……

估计你是不能用自己的电脑 ping6 同你的 ECS 的,也是不能用 IPv6 访问到你的网站的,那么其他使用 IPv6 的用户也不能访问你的网站喽。(ping6 不同的一部分原因估计是你的电脑没 IPv6 地址)

要知道,阿里云的安全组规则不是假的。阿里的安全组规则虽然很好用,但它不支持 IPv6 啊,管你什么协议,什么端口,只要是 IPv6 的全禁了。所以,你只能添加一条入方向的规则:“允许所有的协议,所有的端口,所有的访问来源通过”,然后,嗯,其他的规则还需要存在的意义就有点尴尬。这个希望阿里云能解决一下。