这两天IOS上架遇到一个问题,AppStore要求必须支持IPv6,这个问题令不少人脑仁疼,结合这两天不断的尝试,现将配置过程总结如下,亲测可用!


若要满足AppStore要求应用支持IPV6需确保两点:


1、待上架的APP应用支持IPV6(这个交由IOS开发人员搭建本地IPV6环境去调试);


2、应用服务器具备支持IPV6(也就是应用部署的服务器)的网络环境。


本文只讲述第2个满足条件。



一、阿里云配置


1、编辑 vim /etc/modprobe.d/disable_ipv6.conf 文件(需要root权限) 


disable 设置成 0




nginx支持ipv6和ipv4 nginx如何支持ipv6_CentOS


2、编辑 vim /etc/sysconfig/network 文件(需要root权限) 


NETWORKING_IPV6 设置成 yes



nginx支持ipv6和ipv4 nginx如何支持ipv6_nginx支持ipv6和ipv4_02



然后执行 service network restart 重启


3、编辑 vim /etc/sysctl.conf 文件(需要root权限)



nginx支持ipv6和ipv4 nginx如何支持ipv6_IPV6_03



然后运行 sysctl -p 的命令,启用IPv6 (需要root权限)


4、验证是否开启IPV6


执行命令 ip addr 查看是否已经有 inet6 的地址,如果有说明已经开启ipv6



nginx支持ipv6和ipv4 nginx如何支持ipv6_Nginx_04




二、IPV6隧道配置


1、 https://tunnelbroker.net 注册并登陆;


2、左侧点击Create Regular Tunnel创建一个隧道规则===> IPv4 Endpoint 需要些服务器的外网IP地址===>选择一个隧道服务器===>这里选择了“亚洲香港”



nginx支持ipv6和ipv4 nginx如何支持ipv6_CentOS_05




查看Tunnel信息



nginx支持ipv6和ipv4 nginx如何支持ipv6_nginx支持ipv6和ipv4_06



红框里面的 Client IPv6 Address 就是你的IPv6 地址,之后解析域名(AAAA解析)的时候用的就是它(域名里不用写“/64”)


配置信息


nginx支持ipv6和ipv4 nginx如何支持ipv6_nginx支持ipv6和ipv4_07


重点: 选择IP的方式设置(这里选择的是Linux-route2),然后将文本框中local IP需改成内网IP(这两个IP在阿里云后台都能看到),复制文本框中的内容到CentOS环境下执行。


3、执行命令 ping6 he.net



nginx支持ipv6和ipv4 nginx如何支持ipv6_CentOS_08



能ping通说明已经配置成功。


4、配置DNS解析,将域名指向IPV6的地址即可,需要用AAAA记录 


AAAA xxxx 2001:xxxxx 即:AAAA 访问前缀 IPV6地址


解析之后可以用 wget -6  http://xxxxxxx  来验证你的解析是否正确以及IPV6是否成功。如果能获取到网页信息,说明一切正常。(https同理)



三、Nginx配置


1、nginx开启IPV6支持配置


到nginx的sbin目录, cd /usr/local/nginx/sbin ,执行命令 ./nginx -V



nginx支持ipv6和ipv4 nginx如何支持ipv6_nginx支持ipv6和ipv4_09



若没有出现--with-ipv6,说明当前的nginx不支持ipv6,我们需要重新编译Nginx,配置里面增加--with-ipv6


2、重新编译Nginx


1)解压Nginx安装包:  tar xvzf nginx-1.10.3.tar.gz


2)跳转到解压过后的目录: cd nginx-1.10.3


3)执行命令配置新的参数,加入 ipv6模块,命令如下:


./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi \


--with-ipv6 \
 
--with-http_ssl_module


4)配置完毕后,执行 make 命令 ,重新编译


5)编译完毕后,会在当前目录下创建objs目录,新的nginx执行文件将生成在该目录中,替换nginx执行文件,执行以下命令:


./nginx -s stop #关闭Nginx


cp objs/nginx /usr/local/nginx/sbin #覆盖原有Nginx执行文件


./nginx #启动Nginx


./nginx -V #检查nginx是否已经支持ipv6


3、 nginx配置ipv6监听


vim /usr/local/nginx/conf/nginx.conf


添加一条:listen [::]:80 ipv6only=on;



nginx支持ipv6和ipv4 nginx如何支持ipv6_CentOS_10



重新加载Nginx配置文件:


./nginx -s reload



四、测试IPV6


打开网站 http://ipv6-test.com/validate.php ,输入完整域名



nginx支持ipv6和ipv4 nginx如何支持ipv6_CentOS_11



测试结果如下:



nginx支持ipv6和ipv4 nginx如何支持ipv6_nginx支持ipv6和ipv4_12




说明 应用服务器已具备支持IPV6的网络环境