给服务器添加 ipv6 支持 以通过苹果审核

给 iOS 应用做后端服务器,需要做 ipv6 的支持,虽然 6 在中国几乎不怎么用,但遗憾的是苹果现在要求所有上架的 app 都需要支持纯 ipv6 网络,所以,我们的服务器至少要在 ipv6 的环境下跑起来。

由于国内大多数服务器商不能提供 ipv6 网络,所以我们只能自己找隧道,现在用的比较广的是这一家,我也用的是他们的服务,是免费的,注册一下就好。

注册之后,选择左下方的 “Create Regular Tunnel”,创建一个普通隧道,ip地址自然就是你服务器的外网地址,创建的地方选择距离最近的“香港”,速度会比较好一些。

服务器端

现在,回过头来配置你的服务器: vi /etc/sysctl.conf ,找到下面三个改为 0:

然后编辑 /etc/network/interfaces ,在末尾加入下面的信息:

注意,local 字段是你内网的 ipv4 地址,比如我的是阿里云的服务器,那么就是阿里云的内网地址否则无法ping通。

其中里面<IPv6> 需要你自己替换成你刚刚申请的 Tunnel 的 Server IPv6 Address,但不包括最后的 ::1/64 。server和client都是同一个所以就填就好了。

配置好后就可以重启服务器了,重启后使用  ifup he-ipv6 确认隧道启动。

然后就可以测试了,使用 ping6 ipv6.google.com 来测试配置是否正确。

配置解析

在 HE 网站,配置解析为你的ns服务器,比如我用的 cloudxns,那么我就把解析地址设置为 cloudxns 的代理地址。

然后登录你的ns网站,给你的服务器添加 AAAA 解析,地址为你的ipv6地址,解析域与你的v4解析一致,用哪个解析哪个,比如我就用到 www,那就添加 www,值得注意的是现在国内的ns商都提供一个额外的国外特殊通道,所以你可能得除了国内默认外,还要添加什么“海外默认”、“美国默认”、“谷歌默认”之类的一大堆。多添加几个,毕竟苹果爸爸在美国。

等待配置生效就好了,然后我们可以用dig工具来测试——这里注意不要使用阿里云服务器默认的dns,你可能根本查不到。

使用谷歌的公开 DNS 进行测试,如果看到记录内容是你的v6地址,那就ok了,现在你可以试试去那些在线ping6的网站测试了。

配置 nginx

最后,你还需要让nginx默认支持v6,在你对应域名监听上添加:

使用命令 nginx -t 确认没问题的话,重启服务即可。

这下,你的网站或者 api 就能支持 ipv6 的访问和测试了。

 

“给服务器添加 ipv6 支持 以通过苹果审核”的3个回复

  1. 啊,服务器不需要支持 ipv6 网络也可以哒……
    苹果会提供NAT64和DNS64,所以只要不是直接通过ipv4地址访问服务器,并且没有依赖于ipv4特定的东西就好啦……

    1. 现在问题很尴尬,因为苹果给的错误截图…………内容是加载了一半的,要是不能加载,肯定是都出不来,但现在加载一半……我们自己用苹果的方法测试都是正常的,快气死了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注