给 iOS 应用做后端服务器,需要做 ipv6 的支持,虽然 6 在中国几乎不怎么用,但遗憾的是苹果现在要求所有上架的 app 都需要支持纯 ipv6 网络,所以,我们的服务器至少要在 ipv6 的环境下跑起来。
由于国内大多数服务器商不能提供 ipv6 网络,所以我们只能自己找隧道,现在用的比较广的是这一家,我也用的是他们的服务,是免费的,注册一下就好。
注册之后,选择左下方的 “Create Regular Tunnel”,创建一个普通隧道,ip地址自然就是你服务器的外网地址,创建的地方选择距离最近的“香港”,速度会比较好一些。
服务器端
现在,回过头来配置你的服务器: vi /etc/sysctl.conf ,找到下面三个改为 0:
1 2 3 |
net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 |
然后编辑 /etc/network/interfaces ,在末尾加入下面的信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
auto he-ipv6 iface he-ipv6 inet6 v4tunnel address <IPV6>::2 netmask 64 remote <Tunnel 的 Server IPv4 Address> local <内网 IPv4 地址> endpoint any ttl 255 gateway <IPv6>::1 up ip -6 route add 2000::/3 via ::<HE 的 Server IPv4 Address> dev he-ipv6 up ip -6 addr add <IPv6>::1:1/128 dev he-ipv6 up ip -6 addr add <IPv6>::2:1/128 dev he-ipv6 down ip -6 route flush dev he-ipv6 |
注意,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,你可能根本查不到。
1 |
dig your.domain.com AAAA @8.8.8.8 |
使用谷歌的公开 DNS 进行测试,如果看到记录内容是你的v6地址,那就ok了,现在你可以试试去那些在线ping6的网站测试了。
配置 nginx
最后,你还需要让nginx默认支持v6,在你对应域名监听上添加:
1 2 3 4 5 |
listen 443 ssl; listen [::]:443 ssl; listen 80 default ; listen [::]:80 default; |
使用命令 nginx -t 确认没问题的话,重启服务即可。
这下,你的网站或者 api 就能支持 ipv6 的访问和测试了。
本文由 落格博客 原创撰写:落格博客 » 给服务器添加 ipv6 支持 以通过苹果审核
转载请保留出处和原文链接:https://www.logcg.com/archives/2742.html
看起来非常的技术性呢。。。。
啊,服务器不需要支持 ipv6 网络也可以哒……
苹果会提供NAT64和DNS64,所以只要不是直接通过ipv4地址访问服务器,并且没有依赖于ipv4特定的东西就好啦……
现在问题很尴尬,因为苹果给的错误截图…………内容是加载了一半的,要是不能加载,肯定是都出不来,但现在加载一半……我们自己用苹果的方法测试都是正常的,快气死了。
你的意思是只要不用ip地址访问, 苹果审核就可以访问到 是这个意思吗