Supporting IPv6 DNS64/NAT64 Networks(审核被拒)

全文都围绕客户端和服务端之间IPv4与IPv6互转。

一、问题引出

We discovered one or more bugs in your app when reviewed on iPad running iOS 10.3.2 on Wi-Fi connected to an IPv6 network.

Specifically, tapping some buttons produced an error message.

Please see attached screenshots for details.

Next Steps

To resolve this issue, please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify any issues, then revise and resubmit your app for review.

If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.

For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.

App Store Review Guidelines

2.5.5 We will be reviewing on an IPv6 network, so if your app isn’t compatible with the IPv6 addressing, it may fail during review.

问题分析:我司APP没有IPv6环境服务器,且未支持NAT64+DNS64服务。导致IPv6网络下客户端找不到IPv6服务器,且无法转换连接到IPv4服务器。

解决方案:通过DNS64 +NAT64进行访问。

1、将域名解析出全球可达的IPv6地址。打开链接http://www.subnetonline.com/pages/converters/ipv4-to-ipv6.php,输入IPv4值如100.100.100.100,计算出来的IPv4值为6464:6464,带上固定前缀2001:67c:2b0:db32::1,组合为完整的IPv6值为2001:67c:2b0:db32::1:6464:6464。

2、在域名管理中添加一条4A记录。AAAA记录(AAAA record)是用来将域名解析到IPv6地址的DNS记录。

方案检测:打开链接http://ipv6-test.com/validate.php,输入域名,结果如下图,则代表操作成功。

二、IPv6、DNS64、NAT64

1、IPv6

1)IPv6是互联网协议版本6(Internet Protocol Version 6),IPv6用于替代IPv4,号称可以为全世界的每一粒沙子编上一个网址。

2)表示方法
IPv4包含4段十进制,IPv6包含8段十六进制,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,IPv6有3种表示方法:
冒分十六进制表示法
  格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,每个X的前导0是可以省略的,例如:
  2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
0位压缩表示法
  如果IPv6地址中包含很长的一段0,可以把连续的一段0压缩为“::”。同时为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
  FF01:0:0:0:0:0:0:1101 → FF01::1101
  0:0:0:0:0:0:0:1 → ::1
  0:0:0:0:0:0:0:0 → ::
内嵌IPv4地址表示法
  为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用 。

2、NAT64

NAT64是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧用户发起连接访问IPv4侧网络资源。但NAT64也支持通过手工配置静态映射关系,实现IPv4网络主动发起连接访问IPv6网络。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换。

3、DNS64

DNS64则主要是配合NAT64工作,主要是将DNS查询信息中的A记录(IPv4地址)合成到AAAA记录(IPv6地址)中,返回合成的AAAA记录用户给IPv6侧用户。

三、为什么用IPv6?

1、IPv4地址有限正在耗尽。

2、IPv6比IPv4更有效。避免使用NAT转换网络地址,通过简化头部结构提供网络快速通道,阻止网络分裂,避免解析邻居地址。

3、4G支持IPv6网络。

4、多媒体服务(短信、语音)支持IPv6网络。

5、服务提供商承担额外的业务和管理成本,继续支持传统的IPv4网络,而行业继续迁移到IPv6。

四、DNS64/NAT64转换流

1、蜂窝网络分开提供IPv4和IPv6连接。如图:

2、理想的是,提供商放弃支持IPv4网络,然而这样阻止部分网络访问IPv4服务器。为了解决这个问题,主流网络提供商实现DNS64/NAT64转换工作流。以下就是只支持IPv6网络通过转换继续支持IPv4内容。

部署的IPv6蜂窝网络包括DNS64和NAT64,如图:

3、这种部署类型下,客户端发送DNS请求到DNS64服务器,请求IPv6地址。如果IPv6存在,立即回传到客户端。然而如果IPv6不存在,DNS64服务器请求替代的IPv4地址,然后DNS64服务器用IPv6地址前缀联合IPv4地址,回传给客户端。这样,客户端肯定接受到的是IPv6的地址。如图:

4、当客户端给服务端发送请求,任何IPv6包都视为由DNS64合成地址,走NAT64网关路线。NAT64网关可以将IPv6转换为IPv4,服务端的响应也可以将IPv4转换为IPv6。

DNS64/NAT64工作流如图:

五、确保IPv6 DNS64/NAT64可用

1、不建议使用底层的网络API。下图展示的蓝色部分的这些API都是不存在兼容性问题的,而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API。


2、不要用IP地址。网络类中一些方法传入值不要传IP地址,而应该用域名。
3、检查不兼容IPv6的代码
工程中不能包括下面这些API,这些都是只针对IPv4做处理的。
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
如果用到了下面左边的这些IPv4的类型,那么它们相应的IPv6类型也需要做处理

六、IPv6网络APP测试

官网提供了通过mac共享,创建NAT64网络来搭建IPv6网络(操作教程戳iOS-不用网线搭建IPv6网络测试环境)。

个人不建议这样测,我司这样测能正常访问,但审核还是被拒。

实践表明通过第一点的方案检测,苹果官方能审核通过。

本文参考自苹果官方文档:

Supporting IPv6 DNS64/NAT64 Networks

时间: 2024-11-08 17:26:31

Supporting IPv6 DNS64/NAT64 Networks(审核被拒)的相关文章

iOS IPv6兼容支持和IPv6审核被拒收集整理

iOS IPv6兼容支持和IPv6审核被拒收集整理 最近遇到一个大坑:IPv6审核被拒问题,于是广寻解决方案,先把一些可以用资料文档收集起来备用.也希望同行能用得着. 官方文档说明:Supporting IPv6 DNS64/NAT64 Networks 官方关于支持IPv6的网络的开发指引文档 iOS-用手机网络测试Ipv6 用一台Mac,2个iPhone手机,1个数据线搭建本地IPv6测试网络环境 iOS应用支持IPV6,就那点事儿 参考官方文档的一些原理中文说明 专业处理AppStore审

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

AppStore IPv6-only审核被拒原因分析及解决方案 http://www.jianshu.com/p/8edfdfa20b29 自2016年6月1日起,苹果要求所有提交App Store的iOS应用必须支持IPv6-only环境,背景也是众所周知的,IPv4地址已基本分配完毕,同时IPv6比IPv4也更加高效,向IPv6过渡是大势所趋. 然而在对IPv6进行兼容适配过程中,很多开发者在本地环境测试通过,却在App Store审核时被拒,这种情况下可以首先排查是否由DNS解析失败引起,

2015年App Store审核被拒的23个理由

分类:APP推广 iOS 应用提交审核要持续一周或者更久,在提交之前,我们一定要进行「自我审查」,避免被拒.ASO100 为大家收集整理了2015年 App Store 审核被拒的23个理由,并且附上官方拒绝理由原文,供大家上传应用时对照检查. 应用被拒分为两种:Binary Rejected 和 Metadata Rejected.前者需要重新上传应用并且重新排队,后者只需要修改信息,不需要重新上传应用. 1.应用内包含检查更新功能 iOS 应用的版本更新必须通过 App Store 进行,自

App Store审核被拒的23个理由

原文地址 iOS 应用提交审核要持续一周或者更久,在提交之前,我们一定要进行「自我审查」,避免被拒.ASO100 为大家收集整理了2015年 App Store 审核被拒的23个理由,并且附上官方拒绝理由原文,供大家上传应用时对照检查. 应用被拒分为两种:Binary Rejected 和 Metadata Rejected.前者需要重新上传应用并且重新排队,后者只需要修改信息,不需要重新上传应用. 1.应用内包含检查更新功能 iOS 应用的版本更新必须通过 App Store 进行,自身 Ap

APP审核被拒,原因总结

今天早上,突然看到上周末提交的APP,审核被拒了.原以为是因为IPV6审核没过,后来查看原因后发现是,app的3张展示图里面,有些内容显示的有:测试XX等字眼.苹果说提交的版本不能是含有 test,trial,Demo,beta,pre-release等一些不完整的内容. 早上来了之后,查看2016最新的审核规则,感觉应该是违反了 2.9 beta版.demo版.trial版和test版的程序将会被拒绝. 这条规则.苹果可能把含有测试字眼的内容当成了你的APP是测试程序. 但是这3张展示的图片,

IOS审核被拒原因(持续更新)

IOS审核被拒原因 最近项目提过几个版本去审核,遇到若干审核被拒,下面罗列出来.持续更新. 问题一: Please revise your app to include features that require the persistent use of real-time location updates while the app is in the background. Please also add the following battery use disclaimer in yo

苹果审核被拒,使用第三方登录,但手机没有安装客户端的平台

现在很多APP为了让用户更加快捷方便注册,都会使用第三方进行登录,例如QQ/微信/淘宝等.但是上线审核被拒,大致会出现以下内容: Additionally, we found that your app requires the installation of another app before it can be used, which is not in compliance with the App Store Review Guidelines. Apps should be able

苹果审核被拒 2.3.10

最近有人反映  提交苹果商店的时候 违反了2.3.10,今天来看看他的2.3.10是个什么鬼,之前怎么么有事情 .gif .gif 正题 我们先看看苹果的邮件上则么说 We noticed that your app or its metadata includes irrelevant third-party >platform information. Specifically. Referencing third-party platforms in your app or its met

关于苹果审核被拒未出现重新上传二进制流问题

这个是纯手打的如有错别字请自动滤过. 前几天遇到一个问题很困扰,给苹果官方打电话他也不能很明白我说的是什么, 问题是:我们的一个应用被苹果拒绝了,但是里面并未出来叫我上传新的二进制流 我一直认为是不是我澄清了我的应用没问题这个按钮才不出现,通过我的各种事件确定不是这个原因 解决方法 :因为我在勾选等级的时候把黄赌毒的等级勾高了一点点,才造成不能上传新的二进制流. 勾高得原因是我认为这个勾高一点如果出现轻微的黄赌毒信息可以审核通过. 关于苹果审核被拒未出现重新上传二进制流问题