自2006.6月上appstore商城的app需要支持ipv6-only以后各种拒绝,很简单网络不通人家根本登录不上你的游戏,上人家平台看人家脸色,只好自己想办法了。

1.服务器方面打通相关隧道服务:

使用的是阿里云服务器专有网络,提交阿里工单几次回复很机械复制黏贴,大意不是强调服务器支持ipv6,而是app支持ipv6,然后扔了个论坛连接过来,

https://bbs.aliyun.com/read/284958.html?spm=5176.bbsr284958.0.0.VUP7lS&page=9

确实帮到不少,按照上面一步一步来先去HE上面注册个新账号,https://tunnelbroker.net/

注册账号就不用说了,完了以后去申请create reqular tunnel 建立隧道:

如图:

appstore 审核ipv6被拒_第1张图片

图1

借用原来版主dongshan8的图片:

Ipv4 Endpoint(your side):填写自己的公网ip会测试下可以用不可以,一般会让打开icmp可以ping,Available Tunnel servers选择上可以拿这些ip在服务器上做个测试,那个快用哪个,然后拉到最下面有个按钮提交,然后就进入分配的页面如图2

appstore 审核ipv6被拒_第2张图片

图2

121.43.110.72自己的ipv4公网ip,下面是ipv6地址;

分配完ipv6地址以后,其实HE还是蛮贴心的,直接可以选择操作系统生成相应的命令,在服务器上面执行就可以了如图3,图4,图5;

appstore 审核ipv6被拒_第3张图片

图3

appstore 审核ipv6被拒_第4张图片

 

图4

appstore 审核ipv6被拒_第5张图片

 

图5

注以上借用阿里论坛版主dongshan8的图。

完了之后可以在服务器上面测试ipv6是否正常:

 

C:\\Users\\Administrator>netsh interfaceipv6 show interface 
 
Idx  Met   MTU   状态          名称 
---  ---  -----  -----------  ------------------- 
  1   504294967295  connected    LoopbackPseudo-Interface 1 
15   10  1280  connected    IP6Tunnel 
10   10  1500  connected    本地连接 
22   50  1280  disconnected  本地连接* 12 
23   50  1280  disconnected  本地连接* 13 
11   10  1500  connected    本地连接2 
 
 
C:\\Users\\Administrator>ping -6 2001:470:18:401::2 
 
正在Ping 2001:470:18:401::2 从 2001:470:18:401::2 具有 32 字节的数据: 
来自2001:470:18:401::2 的回复:时间<1ms< span=""> 
来自2001:470:18:401::2 的回复:时间<1ms< span=""> 
 
2001:470:18:401::2 的 Ping 统计信息: 
    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 
往返行程的估计时间(以毫秒为单位): 
    最短 = 0ms,最长 = 0ms,平均 = 0ms 
Control-C 
^C 
C:\\Users\\Administrator>ping -6 ipv6.google.com 
 
正在Ping ipv6.l.google.com [2404:6800:4008:800::200e] 从 2001:470:18:401::2 具 
有32 字节的数据: 
来自2404:6800:4008:800::200e 的回复: 时间=401ms 
来自2404:6800:4008:800::200e 的回复: 时间=400ms

虽然延迟很高但是通了,小有进步一下;

因为苹果是要求app兼容支持ipv6的。他的测试环境是ipv6,通过dns64和nat64转换的,所以现在要做的一步是把域名解析成AAAA记录支持ipv6,当解析生效以后可以在服务器上面测试,当然最好在国外网站上面测试啦;

http://ipv6-test.com/validate.php?

可以在这个网站上面做测试,默认是80端口;如果正常的话就是图6的状态,那么恭喜你隧道相关服务正常了;

appstore 审核ipv6被拒_第6张图片

图6

2.搭建测试环境:

简单的正如苹果所说可以通过自己的Mac来搭建本地IPv6网络环境:见图7,图8

 

appstore 审核ipv6被拒_第7张图片

Ipv6通过DNS64/NAT64转换访问ipv4的;

图7

appstore 审核ipv6被拒_第8张图片

图8

Ipv6访问服务器时先请求dns64服务器应答是ipv6的话直接回复,不是的话就转换到dns4回应, ipv6转换成ipv4来实现访问;

 

下面是搭建本地IPv6网络的步骤:

说明:下面的配图是从苹果官网上搬过来的,所以配图中是英文提示的,步骤说明中是按照中文版介绍的;此处只是作为自己的随笔来当做记录的,如果要看原文可以去官网地址。

1. 首先确保Mac已经连入因特网,但不是通过Wi-Fi连入的;

2. 通过Dock或LaunchPad或苹果菜单中开启“系统偏好设置”;

3. 按住'Option'按键的同时点选“共享”图标,注意:不要放开'Option'按键,就是pc键盘的ALT键,一直按住不放;见图9

 

 

appstore 审核ipv6被拒_第9张图片

图9

4. 打开“共享”窗口后在共享服务列表中选择‘互联网共享’,点选后同时放开‘Option’ALT按键;见图10

appstore 审核ipv6被拒_第10张图片

图10

5. 此时在窗口底部就可以看到一个带有Checkbox的选项 “创建 NAT64 网络”,进行选中;见图11

appstore 审核ipv6被拒_第11张图片

图11

6. 在窗口右侧提供的“共享以下来源的链接”列表中选择一个网络端口,例如Thunderbolt网桥;图12

appstore 审核ipv6被拒_第12张图片

图12

7. 在“用以下端口共享给电脑”列表中再选择“Wi-Fi”选项;图13

appstore 审核ipv6被拒_第13张图片

图13

8. 接着点击“Wi-Fi选项”按钮并在新窗口中配置网络名称和一些安全选项;图14,15

appstore 审核ipv6被拒_第14张图片


图14

appstore 审核ipv6被拒_第15张图片

图15

9. 配置好"Wi-Fi选项"后点击"OK"确认关闭后,在窗口左侧列表中勾选“互联网共享”开启本地网络,验证是否开启在右侧上方会有绿色按钮展现;图16

appstore 审核ipv6被拒_第16张图片

图16

10. 选中的同时会出现二次确认框,选择“开始”;图17

appstore 审核ipv6被拒_第17张图片

图17

一旦分享被激活,在顶栏中会看到一个绿色状态和网络分享已经开启的提示。同时在 Wi-Fi 菜单中将会看到一个很小的指向上方的箭头标志代表网络分享已开启。那么现在已经搭建好了NAT64网络,可以使用其它的设备来连接并测试你的app了。 

注意:要确认是处在IPv6网络环境中进行测试,检查你的测试设备中是否存在其它激活的网络接口;例如在你测试的iOS设备中是否开启了蜂窝移动网络,若开启状态要进行关闭,确保只在Wi-Fi接口中测试。

这样的话测试环境就可以,用飞行模式连接到刚分享的wifi中测试你的app吧。

3后记

其实最简单的方法是客户端兼容支持ipv6就可以,没那么麻烦,开始程序说兼容ipv6的,在一通折腾以后还是被拒不通过,至少网络上没问题以后,程序开始认证审查代码,最后提交了一版新代码以后ipv6根本没用到就审核过了。能从代码上面改就直接改代码,实在不行只好折腾服务器,都有成本做什么都是把复杂事情简单化,而不是简单事情复杂化。