iOS——ipv6(服务器)

此篇文章的起源是由最近一次APP被拒引起的,就在上周,我们App因为ipv6的问题被拒了,当时我就纳闷了,前一次都没有被拒,这一次只改功能,逻辑,界面并没有涉及第三方或者网络相关集成,于是不得不整理一番……

  1. 当时情形是这样的:在2月份之前公司已经上线了一个App,当时我并不知道已经上线的App知否支持ipv6,在我重写整个App,并在上线前对苹果审核规则细查的时候也想到了,当时正好因为去年年末苹果的一份给所有开发中的邮件,我就略过了这一步,结果也上线成功的,现在在发现我这是误打误撞亦或者是运气问题……

  2. 就在第二个版本,上线的时候,既然被拒了,当时我就纳闷了,经过思考与讨论才知道,原来2月份之前上线的App中,服务器是已经搭建的ipv6环境的,但是我们上线第一个版本也是有ipv6的,就在上线第二个版本之前,老板问了我是否需要还需要ipv6支持,当时我只想到了苹果的那份邮件:苹果延迟ipv6的支持。所以就回复不需要的,就这样服务器就删除了ipv6环境…..

  3. 上线之后才发现,之前服务器支持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的访问机制吧,直接看图:

曹理鹏(iCocos)-梦工厂

从这里看出审核的关键在于能不能获取一个有效的Server IPv6地址。当苹果公司的APP审核员在进行审核时,由于国内大部分开发者的APPserver没有IPv6地址,只能通过苹果公司自己的NAT64+DNS64服务器进行测试,而最关键的是苹果的服务器不能有效的给APPserver返回一个IPv6地址,这就导致了审核失败,APP被拒。

就国内目前来说审核被拒的主要原因有第三个:

1、国内大部分APP服务器没有IPv6地址,导致DNS无法解析;

2、苹果公司的审核环境不能自动将中国APP内URL转换成IPv6可访问的格式,导致访问失败;

3、由于国际线路带宽严重拥堵等原因造成访问不稳定,失败率高

那么该如何解决这些问题呢?

方案一

就目前国内的现状,能够提供这种服务的当属教育网了,中国教育网坐拥全国几百所高校,拥有真实的IPv6骨干网络,国际出口,IPv6资源丰富,服务质量好。

因此解决方案就是使用教育网的NAT64+DNS64服务,方案示意图如下:

曹理鹏(iCocos)-梦工厂

具体的操作步骤就是使用教育网的NAT64+DNS64,把您的域名发给我们,帮你解析出IPv6地址(全球可达的地址),您只需在您的域名管理中添加一条4A记录即可,之后就可以提交审核了,一天之后你就会发现审核通过了!

解决方案二

既然审核被拒是因为IPV6,那么我们就让服务器支持就可以了,但是很多运营商的服务器不提供IPv6地址,这样的话就要使用IPv6隧道技术,通过建立隧道使自己的服务器通过IPv6隧道来支持IPv6,方案示意图如下:

曹理鹏(iCocos)-梦工厂

使用IPv6隧道服务APP服务器必须满足三个条件:

① 服务器拥有公网IPv4地址
② 服务器支持IPv6协议
③ 服务器放行6in4协议

具体的配置如下:(这里只是举个例子)

曹理鹏(iCocos)-梦工厂

确认申请了IPv6隧道服务并按照上述模板进行配置完成后,请检查防火墙(iptables)是否放行了6in4协议,并确认(/etc/sysctl.conf)中IPv6转发已打开。如果上述操作都已正确完成,那么在你的服务器上应该可以看到如下结果:

曹理鹏(iCocos)-梦工厂

至此,IPv6隧道搭建完毕,服务器已经支持IPv6了,赶紧提交审核去吧!

目前来说,服务器对ipv6支持的的实现,大部分公司或者技术人员都可以做,要求并不高。

下节将介绍客户端实现,处理,细节等。

如果你有事吗疑问,关于ipv6,关于iOS开发,或者关于PHP学习,欢迎直接联系我,或者在下面留言,希望能一起交流学习!

坚持原创技术分享,您的支持将鼓励我继续创作!