HTTPDNS 因为 IPV6 的被拒
这是自己看网友的文章自己整理的,仅用于个人学习!!!
- 不调用底层接口都是支持的
- NSURLConnect 进行网络请求的是支持 IPv6 的。
- 登录接口是用的原声接口写,最后用 NSURLConnect 发送的请求,在 Mac 上搭建了一个 Ipv6 的网络,在把被拒的 app下载下来登录运行,发现不能登录进去;
- 就改为 NSURLSession 进行网络会话,然后在 ipv6 环境下登录运行,成功了的 app 里面网址都是直接写的 IP 地址,改为 NSURLSession 之后在 Mac 上搭建的 ipv6 网络是可以登录的,后来把网址改为域名了(外网了),在这个 ipv 6网络下还是无法登陆)。
- 后面大概猜测了是解析出了问题,这时候:把 Mac 网线拔了,用手机流量分享热点,Mac 链接之后,才在 Mac上创建 ipv6 网络,这时候 app 里面 URL不管是域名还是直接写 ip 都能登陆,后面发布上去也通过审核了。
- 如果你的项目里面有AFNetworking、Reachability 记得一定要更新到支持 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 服务,方案示意图如下:
解决方案二
既然审核被拒是因为 IPV6,那么我们就让服务器支持就可以了,但是很多运营商的服务器不提供 IPv6 地址,这样的话就要使用IPv6隧道技术,通过建立隧道使自己的服务器通过 IPv6 隧道来支持 IPv6 ,方案示意图如下:
使用 IPv6 隧道服务APP服务器必须满足三个条件:
① 服务器拥有公网 IPv4 地址
② 服务器支持 IPv6 协议
③ 服务器放行 6in4 协议
具体的配置如下:(这里只是举个例子)
![Upload 1216.png failed. Please try again.]
确认申请了 IPv6 隧道服务并按照上述模板进行配置完成后,请检查防火墙(iptables)是否放行了 6in4 协议,并确认(/etc/sysctl.conf)中IPv6转发已打开。如果上述操作都已正确完成,那么在你的服务器上应该可以看到如下结果:
至此,IPv6 隧道搭建完毕,服务器已经支持 IPv6 了,赶紧提交审核去吧!