美文网首页App Store经验demoiOS入的那些坑
AppStore IPv6-only审核被拒原因分析及解决方案

AppStore IPv6-only审核被拒原因分析及解决方案

作者: yongfeng | 来源:发表于2016-08-07 23:49 被阅读18862次

自2016年6月1日起,苹果要求所有提交App Store的iOS应用必须支持IPv6-only环境,背景也是众所周知的,IPv4地址已基本分配完毕,同时IPv6比IPv4也更加高效,向IPv6过渡是大势所趋。

然而在对IPv6进行兼容适配过程中,很多开发者在本地环境测试通过,却在App Store审核时被拒,这种情况下可以首先排查是否由DNS解析失败引起,那么如何验证DNS服务器是否正确响应了IPv6地址的解析请求呢?搭建好DNS64环境后,可以通过以下命令查询:

$dig dnspod.cn aaaa

验证DNS解析的原因是,App访问网络的第一步就是进行DNS解析,App Store审核时会先访问DNS服务器,获得iOS应用服务器的IPv6地址,再进行访问,如果这时DNS服务器无法成功解析到IPv6地址,即使在本地搭建的IPv6-only环境中测试成功,仍然会出现在提交App Store审核时被拒的情况,所以选择一个稳定性、兼容性俱佳的域名解析服务至关重要!

经过全面的测试和灰度发布,腾讯云DNSPod域名解析已全面支持App Store IPv6-only网络环境,已有成功通过审核案例,并且在境内外均验证解析成功

附: 详细原理分析

IPv6-only环境的原理###

首先需要明确一点,在App Store审核APP的IPv6-only的环境下也是可以正常访问IPv4的服务的,只是首先由DNS64将解析出来的IPv4地址转成兼容的IPv6地址,然后访问IPv4服务时通过NAT64网关对IPv4和IPv6进行NAT,并不需要客户有实际的IPv6服务。如下图所示:

DNS64原理###

客户端在向DNS64请求一个域名的IPv6地址时,DNS64会向域名的授权DNS请求IPv6地址,如果存在IPv6地址,则直接给客户端返回IPv6地址,如果不存在IPv6地址,则向授权请求IPv4地址,并将返回的IPv4地址转换为兼容的IPv6地址。

以Google DNS64为例说明转换规则,分别请求dnspod.cn的A记录(IPv4地址)和AAAA记录(IPv6地址):

Paste_Image.png

从解析结果可以看出IPv4地址对应的IPv6地址,后32位的3b25:7465实际上就是IPv4地址的16进制表示59=0x3b,37=0x25,116=0x74,101=0x65,明白该规则后也可以自己进行IPv4向兼容的IPv6地址的转换,如119.29.29.29的兼容IPv6地址为64:ff9b::771d:1d1d,其中::表示为全0。

DNS64解析流程如下图所示:

图片 2.png

NAT64原理###

在IPv6-only环境中访问IPv4服务是需要通过NAT64进行网络地址转换,如下图所示:

图片 3.png

官方文档参考

文章内容来自腾讯云的工程师姜凤波的专业解答及分析,特表示感谢!

相关文章

网友评论

  • 38ecbde68ec8:你好,我各种方法都是了,6服务器也是通的,请问下我们后台是webserviece访问,跟这个有没有关系
    Nicole__Zhang:@吱滋痴 重新又传了一遍 过了
    b2dbd4d7b01b:@小蜗牛的梦想 请问你解决了没?
    Nicole__Zhang:请问你解决了 我我们后台 也是webservice的
  • 洪荣顺:你好,服务器使用阿里云debian服务器,dns使用dnspod解析。$dig xxx.com aaaa 返回的是noerror,但还是被苹果给拒回来了,请问还有什么其他方法吗?
    Aikesi26:@洪荣顺 能请教几个问题吗
    令__狐冲:@洪荣顺 我现在也遇到这个问题了,我们的服务器是阿里云服务器。 请问你的是怎么解决的?
  • 9d4720f080d3:文章里不太好明确说明,但其实解决方案已经提供了,而且还不只一套:
    1. 授权DNS使用DNSPod,APP在自建ipv6-only环境中测试通过(主流程即可),自建ipv6-only能dig出dnspod.cn的aaaa记录说明搭建是正确的,否则说明搭建的问题。
    2. 在ipv4访问不通时(ipv6-only环境),在主流程中直接将服务器的ipv4地址转换成兼容的ipv6地址,并直接访问ipv6地址。
    然后就可以了,通过苹果审核并不需要有实际的4A记录或者世界的IPV6服务器。
  • 戏言系列:弱弱的问一句,为什么我搭好IPV6 在终端中输入 $dig dnspod.cn aaaa 一直都没有DNS之类的返回,输入这个 dig dnspod.cn +short 倒是返回了 59.37.116.101,到底$dig dnspod.cn aaaa 要返回什么才正常?
    Maxxin:@戏言系列 亲,那你有没有找到方法现在,咱们可以讨论讨论
    戏言系列:@Jack_lin 我在Mac上搭建V6热点,手机测试了APP没问题,但提交到APP store就报错,只能说是DNS的问题了,你加下140755394这个群,很多遇到相同问题的人都加进去了,就是他那里虽然能解决问题,不过收费太贵了,我还是找找有没有其他办法吧
    Jack_lin:@戏言系列 我遇到情况和你的差不多,你是怎么解决的?你是在mac上搭建一个ipv6环境的WiFi热点么?为什么我真机连接到该网络,就无法获取应用数据,报网络无连接的提示信息,这是怎么回事?
  • 随风而行之青衫磊落险峰行:很有用
    92c4b2a54642:@02328fd5c39b 换成dnspod后还要添加aaaa记录吗?
    02328fd5c39b:@戏言系列 最简单的方案就是DNS使用DNSPod,并且APP在自建DNS64环境测试通过就可以了。
    戏言系列:@随风而行_bu 你测试了结果如何?如果有问题到底要怎么解决,APP才能正常通过审核?

本文标题:AppStore IPv6-only审核被拒原因分析及解决方案

本文链接:https://www.haomeiwen.com/subject/dknlsttx.html