论持久战之服务器IPv6-in-IPv4隧道搭建
最近公司APP提交审核 频繁被拒,主要问题总结了2点:
1.项目中使用了NSURLconnection底层网络请求API
2.服务器ipv6,现在大部分Linux服务器只支持ipv6协议
误区:大部分开发人员认为服务器只要开启ipv6协议就可以。从16年6月份后苹果强制要求支持ipv6网络,ipv6网络支持需要服务器返回ipv6地址给客户端,这正是国内大部分APP被毙掉的原因,国内支持ipv4网络,苹果审核人员访问服务器不会返回ipv6地址 导致APP连不上服务器。
解决方案:
①申请国外免费vps Tunnel Broker
注册:
创建一个隧道,具体怎么创建这里不做详细介绍了进入查看隧道信息
拿到这些信息后,就可以配置自己的服务器了,以centos6.5为例做配置演示
服务器开启IPV6
1.编辑文件,/etc/modprobe.d/disable_ipv6.conf,将其中的三行都注释掉
2.编辑文件/etc/sysconfig/network,将其中的 NETWORKING_IPV6=no 改为 NETWORKING_IPV6=yes
网卡配置
进入网络脚本文件夹下:cd /etc/sysconfig/network-scripts/
创建一个虚拟网卡:touch ifcfg-sit1
编辑刚创建的虚拟网卡:
ONBOOT=yes
DEVICE=sit1
BOOTPROTO=none
IPV6INIT=yes #开启ipv6支持
IPV6TUNNELIPV4=添加远程ipv4地址
IPV6TUNNELIPV4LOCAL=添加自己服务器外网ip
IPV6ADDR=添加tunnelbroker提供的客户端ipv6地址
使用ifconfig查看当前网卡信息:
编辑ifcfg-eth1,添加如下配置:
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6ADDR=远程ipv6服务器地址
还有最后一步,为了每次重启网卡隧道配置信息不丢失,编辑vi /etc/sysconfig/network,添加
IPV6_DEFAULTDEV=sit1 #这里的sit1就是刚刚添加的sit1虚拟网卡
重启网卡:service network restart
测试ipv6隧道是否连接:ping6 ipv6.google.com
能够正常ping通后,接下来配置应用服务器
我们公司的应用服务器是nginx+tomcat,只需要配置外层入口nginx就可以
server{
...
listen [::]:80; #配置ipv6监听
...
}
配置dns AAAA解析
使用IPv6 test - web site reachability或者Is your site IPv6 ready?检测是否成功
查看nginx log日志是否真的有ipv6地址请求进来
如果遇到ipv6 websit连接不稳定的时候,两种解决办法
①让自己服务器一直ping6 ipv6.google.com
②配置nginx dns解析(一般方法1就可以解决) 解析地址为tunnelbroker提供的
关于nginx dns详细配置请自行百度。
上属原创文章,转载请注明作者@怪咖
QQ:208275451