最近公司项目迭代开发中因为IPV6被拒,甚是郁闷。咱们先来唠唠这个IPV6。
自从苹果在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务的时候 我们已经做好了心里准备。但后来看了官方一段话 也没再过问。
"using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses"
简单翻译一下 :
使用高层次的网络API,例如NSURLSession和CFNetwork的框架,您可以通过名称连接,您应该不需要改变任何东西为你的应用程序使用IPv6地址工作。
1、 IPV6简介
IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,号称可以为全世界的每一粒沙子编上一个网址。大学课堂老师都有普及这里不做过多解释。
2、苹果为啥强制支持IPv6-only网络
由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。除了解决IPv4耗尽问题外,IPv6比IPv4更有效率。
例如,IPv6:
- 避免需要网络地址转换(NAT)。
- 通过使用简化的标头提供更快的通过网络的路由。
- 防止网络破碎。
- 避免广播用于邻居地址解析。
看来苹果还是有先见之明,又抢先了别人一步。
3、解决办法
我们整个项目中都是使用AFNetWorking,官方文档已经明确指出使用例如NSURLSession和CFNetwork的框架是支持IPV6的。查了很多资料证实客户端是没有问题的。代码没问题那就是服务器端的问题了。我们服务器是使用阿里云的,让后台同事查了一下的确是阿里云不支持IPV6需要设置一下。
找了两篇文章希望能帮到你
通过 IPV6 地址访问域名
阿里云服务器如何设置IPV6通过App Store的审核
4、IPV6测试方法
4.1 终端命令
终端 dig +nocmd + nostats 你的域名 AAAA
查看Got answer 如果 status的状态是NO ERROR 那就是支持IPV6 就没啥问题。如果status 的状态是SERVFAIL那就是不支持了。
4.2 本地搭建IPV6环境进行检测
- 确保您的Mac连接到互联网,但不能通过Wi-Fi。
- 从Dock,LaunchPad或Apple菜单启动系统偏好设置。
-
按Option键,然后单击共享。不要释放Option键。
打开共享首选项
4.在共享服务列表中选择Internet共享。
配置Internet共享
5.释放Option键。
6.选中“创建NAT64网络”复选框。
7.选择提供Internet连接的网络接口,如Thunderbolt以太网。
选择要共享的网络接口
8.选中Wi-Fi复选框。
启用Wi-Fi上的共享
9.单击Wi-Fi选项,并配置网络的网络名称和安全选项。
访问Wi-Fi网络选项
设置本地Wi-Fi网络选项
10.选中“Internet共享”复选框以启用本地网络。
启用Internet共享
11.当系统提示您确认要开始共享时,单击开始。
启动Internet共享
共享激活后,您应该看到一个绿色状态指示灯和一个标签,表示Internet Sharing:On。在Wi-Fi菜单中,您还将看到一个小而微弱的箭头向上,表示启用了Internet共享。您现在有一个IPv6 NAT64网络,可以从其他设备连接到它,以测试您的应用程序。
重要提示:
要确保测试严格在本地IPv6网络上进行,请确保测试设备没有其他活动的网络接口。例如,如果您正在使用iOS设备进行测试,请确保移动服务已禁用,因此您只能通过Wi-Fi进行测试。
5、参考文献
官方文档
http://www.jianshu.com/p/ba627e73e5b4
https://help.aliyun.com/knowledge_detail/39813.html
http://www.cnblogs.com/vijayfly/p/6612771.html
网友评论