阿里云CentOS配置Nginx支持IPv6

Posted by Leon on 2017-04-09

最近因为AppStore IPv6审核限制,要求必须App支持IPv6访问,不得做服务器对IPv6的支持。

方法就是HE.NET提供的Tunnel Broker这个所谓的ipv6的隧道间接的让服务器支持IPv6,然后配置Web服务器Nginx支持IPv6访问。

以下记录配置过程:

修改阿里云限制(重要)

阿里云限制了ipv6的功能,我们需要修改开启

编辑\etc\sysctl.conf翻到最后我们会看到一堆关于ip的配置,我们需要修改关于ipv6的设置

1
2
3
net.ipv6.conf.all.disable_ipv6 = 0        
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

找到这三条修改为0即可。

以上配置后,重启服务器。

Tunnel Broker服务

  1. http://www.tunnelbroker.net/ 注册TB账号,并登录管理面板。

  2. 在左侧导航栏 User Functions 点击 Create Regular Tunnel 进入隧道创建页面。

  3. IPv4 Endpoint (Your side)一项填入自己的服务器公网IPv4地址。然后选择一个对应的隧道节点服务器。

  4. 然后点击表单底部 Create Tunnel 按钮提交表单。

  5. 到下一页面切换到 Example configurations 选项卡,下拉菜单选择 Linux-route2,出现了设置的命令,复制下来并在服务器运行。 格式如下:

1
2
3
4
5
6
modprobe ipv6
ip tunnel add he-ipv6 mode sit remote 216.218.xxxx.6 local 101.201.xxx.86 ttl 255
ip link set he-ipv6 up
ip addr add 2001:460:13:369::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr

域名AAAA记录设置

另外添加子域名 aaa 的 AAAA 记录到创建的IPv6地址(AAAA解析,值填 HE里的Client IPv6 Address,去掉最后的/64即可,如:2001:460:13:369::2)。

ps:原先aaa对应的 A 记录无需更改。

配置Nginx服务

找到 aaaa 对应的conf配置文件,修改 listen

1
2
3
4
5
6
7
8
9

listen 80;
listen [::]:80 ipv6only=on;
server_name xxx.xxx.com;


listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name xxx.xxx.com;

然后重启nginx.

其他测试工具