此篇文章的起源是由最近一次APP被拒引起的,就在上周,我们App因为ipv6的问题被拒了,当时我就纳闷了,前一次都没有被拒,这一次只改功能,逻辑,界面并没有涉及第三方或者网络相关集成,于是不得不整理一番……
当时情形是这样的:在2月份之前公司已经上线了一个App,当时我并不知道已经上线的App知否支持ipv6,在我重写整个App,并在上线前对苹果审核规则细查的时候也想到了,当时正好因为去年年末苹果的一份给所有开发中的邮件,我就略过了这一步,结果也上线成功的,现在在发现我这是误打误撞亦或者是运气问题……
就在第二个版本,上线的时候,既然被拒了,当时我就纳闷了,经过思考与讨论才知道,原来2月份之前上线的App中,服务器是已经搭建的ipv6环境的,但是我们上线第一个版本也是有ipv6的,就在上线第二个版本之前,老板问了我是否需要还需要ipv6支持,当时我只想到了苹果的那份邮件:苹果延迟ipv6的支持。所以就回复不需要的,就这样服务器就删除了ipv6环境…..
上线之后才发现,之前服务器支持ipv6,客户端大部分支持ipv6。先删除服务器ipv6的支持,导致苹果开启客户端ipv6测试的时候,很多操作都无法实现,没办法只能让服务器重新ipv6,并且客户端做相关细节处理…..
好了,废话不多说,本次讲以服务器和客户端讲解ipv6支持的实现,处理,细节。客户端将在下节介绍。
首先我们来为服务器量身定制的解决方案
提供最快捷、稳定、高效、安全、可靠的IPv6解决方法.
苹果AppStore审核员在美国的IPv6-Only环境下对APP进行访问(审核),如果APP Server支持IPv6,则可直接访问;如果APP Server不支持IPv6,则通过DNS64 +NAT64进行访问;很明显,大部分开发者的APP服务器都是不支持IPv6直接访问的,所以基本是用NAT64+DNS64进行访问的。那么我们就先了解NAT64+DNS64的访问机制吧,直接看图:
从这里看出审核的关键在于能不能获取一个有效的Server IPv6地址。当苹果公司的APP审核员在进行审核时,由于国内大部分开发者的APPserver没有IPv6地址,只能通过苹果公司自己的NAT64+DNS64服务器进行测试,而最关键的是苹果的服务器不能有效的给APPserver返回一个IPv6地址,这就导致了审核失败,APP被拒。
就国内目前来说审核被拒的主要原因有第三个:
1、国内大部分APP服务器没有IPv6地址,导致DNS无法解析;
2、苹果公司的审核环境不能自动将中国APP内URL转换成IPv6可访问的格式,导致访问失败;
3、由于国际线路带宽严重拥堵等原因造成访问不稳定,失败率高
那么该如何解决这些问题呢?
方案一
就目前国内的现状,能够提供这种服务的当属教育网了,中国教育网坐拥全国几百所高校,拥有真实的IPv6骨干网络,国际出口,IPv6资源丰富,服务质量好。
因此解决方案就是使用教育网的NAT64+DNS64服务,方案示意图如下:
具体的操作步骤就是使用教育网的NAT64+DNS64,把您的域名发给我们,帮你解析出IPv6地址(全球可达的地址),您只需在您的域名管理中添加一条4A记录即可,之后就可以提交审核了,一天之后你就会发现审核通过了!
解决方案二
既然审核被拒是因为IPV6,那么我们就让服务器支持就可以了,但是很多运营商的服务器不提供IPv6地址,这样的话就要使用IPv6隧道技术,通过建立隧道使自己的服务器通过IPv6隧道来支持IPv6,方案示意图如下:
使用IPv6隧道服务APP服务器必须满足三个条件:
① 服务器拥有公网IPv4地址
② 服务器支持IPv6协议
③ 服务器放行6in4协议
具体的配置如下:(这里只是举个例子)
确认申请了IPv6隧道服务并按照上述模板进行配置完成后,请检查防火墙(iptables)是否放行了6in4协议,并确认(/etc/sysctl.conf)中IPv6转发已打开。如果上述操作都已正确完成,那么在你的服务器上应该可以看到如下结果:
至此,IPv6隧道搭建完毕,服务器已经支持IPv6了,赶紧提交审核去吧!
目前来说,服务器对ipv6支持的的实现,大部分公司或者技术人员都可以做,要求并不高。
下节将介绍客户端实现,处理,细节等。
如果你有事吗疑问,关于ipv6,关于iOS开发,或者关于PHP学习,欢迎直接联系我,或者在下面留言,希望能一起交流学习!