iOS之IPV6环境搭建测试

一、关于IPV6审核问题

最近上架爆出很多IPV6的问题,也不知道苹果怎么了。具体出现这个问题的原因众说纷纭,但是因为苹果不具体给出原因所以无法确定。
具体原因主要有以下几种:

  • 移动端iPhone端未支持IPV6
  • 服务器端未支持IPV6或者服务器所在的DNS服务器未支持IPV6地址的查询响应
  • 移动端iPhone端支持IPV6测试没问题,但是苹果测试的时候都是用PAD来测试的,所以我们也需要用PAD来测试下看是否也OK

解决办法有以下几种:

  • 确定iPhone端和iPad端都支持IPV6,然后服务器支持IPV6或者服务器所在的DNS服务器支持IPV6地址的查询响应,那么可以录制视频申诉
  • 购买海外或者香港服务器,审核的时候用海外或者香港服务器,过审核之后再切回国内服务器
二、搭建iOS端IPV6测试环境

具体的我们iOS端支不支持IPV6我们需要通过搭建测试环境来看,具体搭建步骤如下。
1、IPV6简介

  • 与IPV6一起相对的是IPV4,这是IP地址的两种表示方式.
  • IPV4是32位,采用点分十进制,分四段,每段8位,每一段将8位二进制化成十进制就有了点分十进制,示例如右:192.168.1.101。但是早在20年前就基本上快不够分了,具体的有ABCDE等几类地址,这个可以百度详查。32位可供用的地址的确不能满足日益庞大的网络用户去分,为了延缓这个问题,出了NAT(网络地址转换)技术,这个技术的核心思想是将地址分为公网地址和私网地址,然后私网地址在网络出口的时候转换成公网地址去访问公网资源。但是这毕竟只是延缓,不能解决根本问题。
  • IPV6地址,这个是128位的,采用:分割的方式,分8段,每一段16位,将每一段的16位二进制化成4位16进制,示例如右:2001:0000: 1F1F :0000:0000:0100: 11A0:ADDF。

2、搭建测试环境

  • 所需工具:MAC电脑一台,测试设备(iPhone)一台,网络转换口(下面附截图)一个
    • Belkin USB-C 至千兆以太网转换器
iOS之IPV6环境搭建测试_第1张图片
Snip20170517_185.png
  • Thunderbolt 至千兆以太网转接器
iOS之IPV6环境搭建测试_第2张图片
Snip20170517_186.png

这个苹果官网价格很贵,可以到天猫淘宝买一个几十块钱

  • 将MAC电脑连接网络转换口,一端接MAC电脑,一端接以太网口(RJ45口,具体百度),请确保这个以太网口另外一端是能连接外网的.然后确定MAC能通过这个以太网口去上网,而不是通过WiFi上网
  • 确保MAC通过有线上网后,我们就要开始搭建测试环境了,打开系统偏好设置,左上角苹果图标->系统偏好设置,如下:
iOS之IPV6环境搭建测试_第3张图片
Snip20170517_187.png
  • 找到共享,然后在系统偏好这个界面按住Option键+单击以上图示中的共享,出现如下画面:
iOS之IPV6环境搭建测试_第4张图片
Snip20170517_188.png
  • 勾选创建NAT64网络:
iOS之IPV6环境搭建测试_第5张图片
Snip20170517_189.png
  • 勾选共享来源:
iOS之IPV6环境搭建测试_第6张图片
Snip20170517_199.png
  • 如果是USB转RJ45的,那么选择类似以下的接口来共享


    iOS之IPV6环境搭建测试_第7张图片
    Snip20170517_200.png

  • 如果是Thunderbolt转RJ45的,那么选以下类似的接口来共享:
iOS之IPV6环境搭建测试_第8张图片
Snip20170517_201.png
  • 再勾选下图中的Wi-Fi:
iOS之IPV6环境搭建测试_第9张图片
Snip20170517_190.png
  • 点击下图中的创建NAT64网络右边的”Wi-Fi选项...“:
iOS之IPV6环境搭建测试_第10张图片
Snip20170517_195.png
  • 设置好Wi-Fi后,单击如下选项:
iOS之IPV6环境搭建测试_第11张图片
Snip20170517_192.png
  • 勾选互联网共享后,就会出现如下对话框:
iOS之IPV6环境搭建测试_第12张图片
Snip20170517_194.png
  • 点击启动后过十几秒就会发射一个kodiewifi出来,如果出现以下的情况证明网络已经建好:


    iOS之IPV6环境搭建测试_第13张图片
    Snip20170517_203.png
iOS之IPV6环境搭建测试_第14张图片
Snip20170517_205.png
  • 然后我们用测试设备连接这个WiFi来测试,此处选用iPhone来测试,连接WiFi后像如下情况就正常了:
iOS之IPV6环境搭建测试_第15张图片
Snip20170517_197.png

对比下普通的WiFi,明显能看到点分十进制和冒号的区别:

iOS之IPV6环境搭建测试_第16张图片
Snip20170517_207.png
  • 然后打开浏览器先测试下网络是否正常,如果正常,然后再行测试下你的工程项目是否能够正常运行,如果能够正常运行说明IPV6没有问题,然后最好将你的项目运行在iPad上再次测试一下。

备注

  • 在使用 IPv6 的热点时候,保证手机只在 Wi-Fi 下上网,以免手机在连接不到网络时候,会默认跳转到使用蜂窝移动网络(即2G、3G、4G流量)上网,而且苹果手机如果这个WiFi上不了网很容易自动切换到之前的WiFi去上,所以这个一定要注意哦~~~
  • 注意如果说你连上IPV6热点后,发现手机上不了网,请检查下如下配置是否开启:
iOS之IPV6环境搭建测试_第17张图片
Snip20170517_215.png
iOS之IPV6环境搭建测试_第18张图片
Snip20170517_216.png

以上默认是开启的,但是如果是升级Yosemit系统后不能设置IP地址上网请看以下解决方案:
打开终端按如下命令操作
1.列出你的网卡

networksetup -listallnetworkservices

2.关闭ipv6

networksetup -setv6off "网卡名字"

注:
关于”网卡名字“,有线网一般默认名字是Ethernet,无线网默认名字是Wi-Fi,在第1步的命令里可以看到。在2步中网卡名字有没有引号好像都可以。

iOS之IPV6环境搭建测试_第19张图片
Snip20170517_217.png

具体看 Mac收集的技巧及bug

还有其他设置网络的设置:

networksetup -listnetworkserviceorder
networksetup -listallnetworkservices
networksetup -listallhardwareports
networksetup -detectnewhardware
networksetup -getmacaddress 
networksetup -getcomputername
networksetup -setcomputername 
networksetup -getinfo 
networksetup -setmanual    
networksetup -setdhcp  [clientid]
networksetup -setbootp 
networksetup -setmanualwithdhcprouter   
networksetup -getadditionalroutes 
networksetup -setadditionalroutes  [    ]*
networksetup -setv4off 
networksetup -setv6off 
networksetup -setv6automatic 
networksetup -setv6LinkLocal 
networksetup -setv6manual   
networksetup -getv6additionalroutes networksetup -setv6additionalroutes [ ]* networksetup -getdnsservers networksetup -setdnsservers [dns2] [...] networksetup -getsearchdomains networksetup -setsearchdomains [domain2] [...] networksetup -create6to4service networksetup -set6to4automatic networksetup -set6to4manual networksetup -getftpproxy networksetup -setftpproxy networksetup -setftpproxystate networksetup -getwebproxy networksetup -setwebproxy networksetup -setwebproxystate networksetup -getsecurewebproxy networksetup -setsecurewebproxy networksetup -setsecurewebproxystate networksetup -getstreamingproxy networksetup -setstreamingproxy networksetup -setstreamingproxystate networksetup -getgopherproxy networksetup -setgopherproxy networksetup -setgopherproxystate networksetup -getsocksfirewallproxy networksetup -setsocksfirewallproxy networksetup -setsocksfirewallproxystate networksetup -getproxybypassdomains networksetup -setproxybypassdomains [domain2] [...] networksetup -getproxyautodiscovery networksetup -setproxyautodiscovery networksetup -getpassiveftp networksetup -setpassiveftp networksetup -getairportnetwork networksetup -setairportnetwork [password] networksetup -getairportpower networksetup -setairportpower networksetup -listpreferredwirelessnetworks networksetup -addpreferredwirelessnetworkatindex [password] networksetup -removepreferredwirelessnetwork networksetup -removeallpreferredwirelessnetworks networksetup -getnetworkserviceenabled networksetup -setnetworkserviceenabled networksetup -createnetworkservice networksetup -renamenetworkservice networksetup -duplicatenetworkservice networksetup -removenetworkservice networksetup -ordernetworkservices <...> networksetup -getMTU networksetup -setMTU networksetup -listvalidMTUrange networksetup -getmedia networksetup -setmedia [option1] [option2] [...] networksetup -listvalidmedia networksetup -createVLAN networksetup -deleteVLAN networksetup -listVLANs networksetup -listdevicesthatsupportVLAN networksetup -isBondSupported networksetup -createBond <...> networksetup -deleteBond networksetup -addDeviceToBond networksetup -removeDeviceFromBond networksetup -listBonds networksetup -showBondStatus networksetup -listpppoeservices networksetup -showpppoestatus networksetup -createpppoeservice [pppoe service name] networksetup -deletepppoeservice networksetup -setpppoeaccountname networksetup -setpppoepassword networksetup -connectpppoeservice networksetup -disconnectpppoeservice networksetup -getcurrentlocation networksetup -listlocations networksetup -createlocation [populate] networksetup -deletelocation networksetup -switchtolocation networksetup -listalluserprofiles networksetup -listloginprofiles networksetup -enablesystemprofile networksetup -enableloginprofile networksetup -enableuserprofile networksetup -import8021xProfiles networksetup -export8021xProfiles networksetup -export8021xUserProfiles networksetup -export8021xLoginProfiles networksetup -export8021xSystemProfile networksetup -settlsidentityonsystemprofile >networksetup -settlsidentityonuserprofile networksetup -deletesystemprofile networksetup -deleteloginprofile networksetup -deleteuserprofile networksetup -version networksetup -help networksetup -printcommands

下图中的设置分别是:

关闭:networksetup -setv6off
手动:networksetup -setv6automatic
本地:networksetup -setv6LinkLocal

iOS之IPV6环境搭建测试_第20张图片
Snip20170519_257.png
三、服务器端测试

苹果明确表示服务器不需要支持 IPv6,但是有一点苹果没有指出来需要说明一下:虽然你的服务器不用支持 IPv6,但是我苹果这边会用IPV6的地址来测试访问你的服务器域名,如果我们服务器所挂的DNS服务器不支持IPV6地址前来查询那么也就无法响应网络请求了。如果你的服务器是IPV4地址,那么DNS服务器上可以添加一条域名与IPV6地址的解析条目,然后解析出来的IPV6地址指向一台中转路由器(IPV6<=>IPV4),这样通过中转路由器出来的就是IPV4地址了,这样就可以大大方方响应你的网络请求了。
测试是否支持IPV6查询,终端输入以下命令:

dig +nocmd +nostats www.baidu.com AAAA

解析后的结果如下,那说明是支持的:

iOS之IPV6环境搭建测试_第21张图片
Snip20170621_20.png

具体的可参见:
App store 应用审核由于 IPv6 网络问题被拒的一点分析

【指南】本地如何搭建IPv6环境测试你的APP
搭建IPv6本地环境测试App

以上!!!

弹钢琴.gif

你可能感兴趣的:(iOS之IPV6环境搭建测试)