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、搭建测试环境

Snip20170517_185.png
Snip20170517_186.png

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

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


    Snip20170517_200.png

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


    Snip20170517_203.png
Snip20170517_205.png
  • 然后我们用测试设备连接这个WiFi来测试,此处选用iPhone来测试,连接WiFi后像如下情况就正常了:
Snip20170517_197.png

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

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

备注

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

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

networksetup -listallnetworkservices

2.关闭ipv6

networksetup -setv6off "网卡名字"

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

Snip20170517_217.png

具体看Mac收集的技巧及bug

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

networksetup -listnetworkserviceorder
networksetup -listallnetworkservices
networksetup -listallhardwareports
networksetup -detectnewhardware
networksetup -getmacaddress <hardwareport or device name>
networksetup -getcomputername
networksetup -setcomputername <name>
networksetup -getinfo <networkservice>
networksetup -setmanual <networkservice> <ip> <subnet> <router>
networksetup -setdhcp <networkservice> [clientid]
networksetup -setbootp <networkservice>
networksetup -setmanualwithdhcprouter <networkservice> <ip> 
networksetup -getadditionalroutes <networkservice>
networksetup -setadditionalroutes <networkservice> [ <dest> <mask> <gateway> ]*
networksetup -setv4off <networkservice>
networksetup -setv6off <networkservice>
networksetup -setv6automatic <networkservice>
networksetup -setv6LinkLocal <networkservice>
networksetup -setv6manual <networkservice> <networkservice> <address> <prefixlength> <router>
networksetup -getv6additionalroutes <networkservice>
networksetup -setv6additionalroutes <networkservice> [ <dest> <prefixlength> <gateway> ]*
networksetup -getdnsservers <networkservice>
networksetup -setdnsservers <networkservice> <dns1> [dns2] [...] 
networksetup -getsearchdomains <networkservice>
networksetup -setsearchdomains <networkservice> <domain1> [domain2] [...] 
networksetup -create6to4service <newnetworkservicename> 
networksetup -set6to4automatic <networkservice> 
networksetup -set6to4manual <networkservice> <relayaddress> 
networksetup -getftpproxy <networkservice>
networksetup -setftpproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
networksetup -setftpproxystate <networkservice> <on off>
networksetup -getwebproxy <networkservice>
networksetup -setwebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
networksetup -setwebproxystate <networkservice> <on off>
networksetup -getsecurewebproxy <networkservice>
networksetup -setsecurewebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
networksetup -setsecurewebproxystate <networkservice> <on off>
networksetup -getstreamingproxy <networkservice>
networksetup -setstreamingproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
networksetup -setstreamingproxystate <networkservice> <on off>
networksetup -getgopherproxy <networkservice>
networksetup -setgopherproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
networksetup -setgopherproxystate <networkservice> <on off>
networksetup -getsocksfirewallproxy <networkservice>
networksetup -setsocksfirewallproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
networksetup -setsocksfirewallproxystate <networkservice> <on off>
networksetup -getproxybypassdomains <networkservice>
networksetup -setproxybypassdomains <networkservice> <domain1> [domain2] [...] 
networksetup -getproxyautodiscovery <networkservice>
networksetup -setproxyautodiscovery <networkservice> <on off>
networksetup -getpassiveftp <networkservice>
networksetup -setpassiveftp <networkservice> <on off>
networksetup -getairportnetwork <device name>
networksetup -setairportnetwork <device name> <network> [password]
networksetup -getairportpower <device name>
networksetup -setairportpower <device name> <on off>
networksetup -listpreferredwirelessnetworks <device name>
networksetup -addpreferredwirelessnetworkatindex <device name> <network> <index> <security type> [password]
networksetup -removepreferredwirelessnetwork <device name> <network>
networksetup -removeallpreferredwirelessnetworks <device name>
networksetup -getnetworkserviceenabled <networkservice>
networksetup -setnetworkserviceenabled <networkservice> <on off>
networksetup -createnetworkservice <newnetworkservicename> <hardwareport>
networksetup -renamenetworkservice <networkservice> <newnetworkservicename>
networksetup -duplicatenetworkservice <networkservice> <newnetworkservicename>
networksetup -removenetworkservice <networkservice>
networksetup -ordernetworkservices <service1> <service2> <service3> <...>
networksetup -getMTU <hardwareport or device name>
networksetup -setMTU <hardwareport or device name> <value>
networksetup -listvalidMTUrange <hardwareport or device name>
networksetup -getmedia <hardwareport or device name>
networksetup -setmedia <hardwareport or device name> <subtype> [option1] [option2] [...]
networksetup -listvalidmedia <hardwareport or device name>
networksetup -createVLAN <VLAN name> <parent device name> <tag>
networksetup -deleteVLAN <VLAN name> <parent device name> <tag>
networksetup -listVLANs
networksetup -listdevicesthatsupportVLAN
networksetup -isBondSupported <hardwareport>
networksetup -createBond <bondname> <hardwareport1> <hardwareport2> <...>
networksetup -deleteBond <bonddevicename>
networksetup -addDeviceToBond <hardwareport> <bonddevicename>
networksetup -removeDeviceFromBond <hardwareport> <bonddevicename>
networksetup -listBonds
networksetup -showBondStatus <bonddevicename>
networksetup -listpppoeservices
networksetup -showpppoestatus <service name ie., MyPPPoEService>
networksetup -createpppoeservice <device name ie., en0> <service name> <account name> <password> [pppoe service name]
networksetup -deletepppoeservice <service name>
networksetup -setpppoeaccountname <service name> <account name>
networksetup -setpppoepassword <service name> <password>
networksetup -connectpppoeservice <service name>
networksetup -disconnectpppoeservice <service name>
networksetup -getcurrentlocation
networksetup -listlocations
networksetup -createlocation <location name> [populate]
networksetup -deletelocation <location name>
networksetup -switchtolocation <location name>
networksetup -listalluserprofiles
networksetup -listloginprofiles <service name>
networksetup -enablesystemprofile <service name> <on off>
networksetup -enableloginprofile <service name> <profile name> <on off>
networksetup -enableuserprofile <profile name> <on off>
networksetup -import8021xProfiles <service name> <file path>
networksetup -export8021xProfiles <service name> <file path> <yes no>
networksetup -export8021xUserProfiles <file path> <yes no>
networksetup -export8021xLoginProfiles <service name> <file path> <yes no>
networksetup -export8021xSystemProfile <service name> <file path> <yes no>
networksetup -settlsidentityonsystemprofile <service name> <file path> <passphrase>
>networksetup -settlsidentityonuserprofile <profile name> <file path> <passphrase>networksetup -deletesystemprofile <service name> 
networksetup -deleteloginprofile <service name> <profile name>
networksetup -deleteuserprofile <profile name>
networksetup -version
networksetup -help
networksetup -printcommands

下图中的设置分别是:

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

Snip20170519_257.png
三、服务器端测试

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

dig +nocmd +nostats www.baidu.com AAAA

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

Snip20170621_20.png

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

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

以上!!!

弹钢琴.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容