背景、如何开启NAT64的网络

背景是苹果要求应用支持 Supporting IPv6 DNS64/NAT64 Networks

1. Make sure your Mac is connected to the Internet, but not through Wi-Fi.
2. Launch System Preferences from your Dock, LaunchPad, or the Apple menu.
3. Press the Option key and click Sharing. Don’t release the Option key yet.
4. Select Internet Sharing in the list of sharing services.
5. Release the Option key.

上面的地址已经非常详细了,注意点:

  1. 要按住键盘上的 option 按钮去打开分享界面,才会看到 Create NAT64 Network 的选项。
  2. 需要有一个 连着网线 的 Mac 。

遇到的问题

我们的应用有一部分功能依赖了webrtc,需要用户端和服务端建立点对点的连接,在NAT64的网络下,看日志是客户端一直在send stun ping(stun ping 客户端向服务端发起的udp的请求),错误码是22(An incorrect argument was specified.)
拿到日志和错误码后,我拿着对应的ip和端口,模拟了同样的udp请求,错误码是51 (The network cannot be reached.)

观察了一下,mac+nat64+udp有如下表现:

只连接wifi,udp数据包发不出去

v4-wlan0 的子网掩码 Mask为 255.255.255.255

v4-wlan0  Link encap:UNSPEC  inet addr:192.0.0.4  P-t-P:192.0.0.4  Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1472  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:1811 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 TX bytes:953375

有如下推论:

  1. 这意味着ipv4的数据包发不出本机,等于说ipv4的请求只能本地使用;
  2. 能发出去,但是不可访问,The network cannot be reached 51其实是对的;
  3. ipv4发不出去,等于tcp和udp都发不出去,切换到tcp也无济于事;
  4. wireshark抓到的少量ipv4的包,我理解是切换网络遗留的信息;

域名解析是是正常的

# 服务端
nc -l -u 5000# 客户端
nc -u yeshen.org 5000

wireshare 抓包能看到如下信息:

fe80::8bf7->fe80::fa66==Standard query 0x5452 AAAA yeshen.org
fe80::fa66->fe80::8bf7==Standard query response 0x5452 AAAA yeshen.org AAAA
2001:2:0:1baa::7659:3597
fe80::8bf7->fe80::fa66==Standard query 0x0ab7 A yeshen.org
fe80::fa66->fe80::8bf7==Standard query response 0x0ab7 A yeshen.org A 118.89.53.151

我观察:

  1. 当我用ipv6的协议,去访问 2001:2:0:1baa::7659:3597,请求正常,服务端收到的ip包也是正常的ipv4的包;
  2. 快速开关/切换网络,会滞后出现无法连接 -> 我理解是DNS解析存在缓存。

我理解:

  1. 我的设备的ip是fe80::8bf7,询问 fe80::fa66 (mac上模拟网关bridge100),bridge100充当了dns解析的作用,返回了信息。
  2. nc询问了两次,query A、query AAAAA,我这个yeshen.org的域名是没有ipv6的,网关做了适配。我理解是如下适配:
1. ip地址16进制转化:118.89.53.151 -> 7659:3597
2. 增加网关前缀 `2001:2:0:1baa::`

部分VPN(我使用的)无法兼容

(观察到)

  1. 在NAT64下,开vpn有概率提示拉不到配置;
  2. 在NAT64下,开VPN,和没开差别不大,都是无法访问;

解决问题的方法

通过上面的观察,我理解解决方法有几种:

  1. 客户端兼容:通过dns查询到nat64网关的前缀+转化下ipv4,主动拼接一下。
  2. 服务端提供域名,弃用只提供ipv4的信息的方式,dns64 会自己做转化。
  3. 服务端主动 拼接方式1中可选的ipv6地址,客户端逐一尝试。

讨论

最后讨论一点,2001:2:0:1baa::这个前缀是不是所有苹果NAT64都公用的前缀?
目前我的两部电脑+同事的电脑+网络搜到的问题 ,基本上都是这个前缀.
不知道苹果审核是不是也是如此?

苹果应用提审与NAT64相关推荐

  1. 苹果AppStore提审时的出口合规信息相关处理

    在出口合规选项上,一般的是应该选否. 出口是指从美国出口到其它国家. 美国的一些加密算法不充许出口. app store在美国,有出口合规证明才填 true 常用的加密算法不在管制之列. 应用在美国的 ...

  2. 使用负载均衡SLB IPv6搞定苹果AppStore审核

    1.Greetings HI,大家好,我是负载均衡SLB产品经理添毅,今天我们来聊一聊苹果的IPv6审核,以及使用阿里云负载均衡SLB(IPv6)搞定AppStore IPv6审核. 2.Appsto ...

  3. 最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核

    摘要: 1.Greetings HI,大家好,我是负载均衡SLB产品经理添毅,今天我们来聊一聊苹果的IPv6审核,以及使用阿里云负载均衡SLB(IPv6)搞定AppStore IPv6审核. 2.Ap ...

  4. iOS内购 - 服务端票据验证及漏单引发的思考

    因业务需要实现了APP内购处理,但在过程中出现了部分不可控的因素,导致部分用户反映有充值不成并漏单的情况. 仔细考虑了几个付费安全上的问题,凡是涉及到付费的问题都很敏感,任何一方出现损失都是不能接受的 ...

  5. iOS 审核总被拒?如何提升 iOS 审核通过率!

    作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...

  6. iOS审核总被拒?腾讯教你提升iOS审核通过率!

    作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...

  7. ios 内购服务器验票(漏单处理)

    1.漏单必须要处理,玩家花RMB购买的东西却丢失了,是绝对不能容忍的.所谓的漏单就是玩家已经正常付费,却没有拿到该拿的道具. 解决:只要购买成功,便将购买记录(receipt等账单信息)保存下来,然后 ...

  8. iOS马甲包系统性全流程把控

    (一)开发者账号注册环节 1.尽量使用Windows电脑,不是很常用的ip,进行登录注册账号 2.手机号唯一,信用卡唯一,设备唯一,最多只能注册,两个账号(最好,只注册一个账号) 3.账单,发票地址, ...

  9. 《歌手》刘欢撒狗粮甜煞众人 许靖韵毕书尽踢馆结果揭晓

    上周五金典<歌手>激烈的淘汰赛落下帷幕,波琳娜强势逆袭登上冠军宝座,齐豫唱"文青朝圣曲"<欢颜>上演"终于等到你"圆梦现场,刘欢大摆京剧 ...

  10. iOS预审总被拒?腾讯教你提升iOS审核通过率!

    作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...

最新文章

  1. t6文件服务器怎么设置,t6 修改文件服务器地址
  2. 关于js中window.location.href、location.href 等如何跳转
  3. jenkins产生503错误的解决方法
  4. 如何使用 FFmpeg 减小视频大小
  5. 基于读取车载RFID标签自动开关车库门c#算法实现
  6. 【转载】Android S5PV210 fimc驱动分析 - fimc_regs.c
  7. centos 7增强命令补全
  8. Atitit doc mng 文档管理总结目录1. 主要几大内容 12. 存储管理 22.1. 一般来说 ,文档存储在IM网盘note邮箱blog wiki等地 22.2. 文档格式与体
  9. 靠政府补贴实现华丽财报的科大讯飞,它背后蕴含着怎样的生机
  10. JUC中的Atomic原子类
  11. 关于H5调用摄像头麦克风的权限问题
  12. [机器学习、Spark]Spark机器学习库MLlib的概述与数据类型
  13. 记录通过的阿里云认证
  14. QT在界面背景图设置后运行显示黑屏
  15. 百度云 x 宝宝知道 | 你的宝宝问题,这个APP都知道
  16. Docker安装Grafana
  17. 谷歌三篇大数据论文之mapreduce读后感
  18. 虚幻4快速上手实战系列 之 三维弹球
  19. oracle查看最近三十天的记录,以及排序一定要变成int类型
  20. 解决Win7启动时出现“windows未能启动。原因可能是最近更改了硬件或软件”的问题

热门文章

  1. bobsmith电路阻抗原理_网络变压器的介绍分类及工作原理
  2. 微信小程序消息推送至微信公众平台总结
  3. eclipse 虚拟机启动失败解决方案
  4. 计算机画图图形组合教案,绘制简单的图形教案
  5. python采集微信聊天信息_我用 Python 破解了微信聊天记录,自动同步微信文章
  6. 经验10年搞不过卖烧烤的!后入阿里我软件测试是怎么学废的,这些话我想送给一事无成的自学测试们...
  7. Guava之Joiner笔记
  8. 2022-2028全球针织捆包网行业调研及趋势分析报告
  9. MySQL索引原理以及查询优化
  10. 20145322何志威 《Java程序设计》课程总结