遇到的问题:
帮客户上架App到AppStore被拒,给出的理由如下:
please review the IPv6 and App Review discussion on the Apple Developer Forum。
没错,要求我们必须支持ipv6,这种问题曾未有过,很奇葩,这跟审核人员网络连接不上有关系。
若要满足应用支持IPV6需要满足以下两点:
1、App本身是否兼容IPv6;
2、应用服务器需支持IPV6。
本文只讲解第2点,一起从搭建环境开始吧!
一、安装Nginx
1、从官网下载nginx,本文使用了最新稳定版1.14.0。
https://nginx.org/en/download.html
2、安装pcre库
nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库
yum install -y pcre pcre-devel
3、安装zlib库
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
4、安装openssl
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库
yum install -y openssl openssl-devel
5、编译安装nginx
#上传刚刚下载好的nginx
rz -y
# 解压安装包
tar -zxvf nginx-1.14.0.tar.gz
# 进入解压包
cd nginx-1.14.0
# 按需添加编译参数
./configure --prefix=/usr/local/nginx --with-ipv6 ( --with-ipv6必须加,让nginx开启IPV6支持配置)
#编译源码
make
#安装
make install
6、启动nginx
cd /usr/local/nginx/sbin/
./nginx
二、IPV6隧道配置
1、注册账号:https://tunnelbroker.net/
2、创建隧道规则
3、设置公网ip
4、选择一个隧道服务器,这里我选择的是新加坡,香港的隧道服务器已满。
5、完成创建,查看详情
这里的Client IPv6 Address 是我们要用的IPv6 地址,之后解析域名(AAAA解析)的时候用的就是它(域名里不用写“/64”)
6、配置信息
选择IP的方式设置(这里选择的是Linux-route2),然后将文本框中local ip需改成内网IP,复制文本框中的内容到服务器执行
重要!由上图执行结果得知,服务器不允许IPV6,我们要先对服务器进行设置。
三、配置服务器
1、vim /etc/modprobe.d/disable_ipv6.conf,将下面属性改成0。
options ipv6 disable=0
2、vim /etc/sysconfig/network,将下面属性改成yes。
NETWORKING_IPV6=yes
3、重启网络
service network restart
4、设置Linux内核参数,启用ipv6。 vim /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
5、让第四步设置生效,执行以下命令。
sysctl -p
6、验证是否开启IPV6,当你看到inet6时,表示已开启成功。
7、回头操作IPV6隧道配置中报错的地方
三、域名解析
1、本文使用阿里云的ECS及在阿里云注册的域名。
2、修改nginx配置
3、测试ipv6隧道是否通的
ping6 he.net
执行结果如下图,恭喜你,ipv6隧道已经打通了。
4、用 wget -6 http://xxxxxxx 来验证你的解析是否正确以及IPV6是否成功
四、测试填坑
1、ping6 ipv6.baidu.com
错误原因:花了整整一天排除问题,发现并发服务器设置、操作失误引起的,而是隧道问题……删除重新隧道即可,这次我换成了“ Tokyo, JP”。
2、用工具测试
http://ipv6-test.com/validate.php
当你看到这些,表示此次ipv6实验已经成功了,恭喜你!