栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

苹果应用提审与NAT64

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

苹果应用提审与NAT64

背景、如何开启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:1
          RX 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都公用的前缀?
目前我的两部电脑+同事的电脑+网络搜到的问题 ,基本上都是这个前缀.
不知道苹果审核是不是也是如此?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868814.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号