转自: http://blog.csdn.net/lvshaorong/article/details/52209060
苹果2016年5月4日向开发者发出提醒,App Store将于今年6月1日实施全新策略,届时所有提交至苹果App Store的iOS应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议--IPv6-only标准。
首先来评论一下,不得不说ipv6在国外的普及程度要比中国快的多,包括一些第三世界国家。但是中国除了少数的教育网之外,运营商卖给家庭的宽带是不会给你ipv6地址的,有些地区甚至给你个公网的ipv4都是奢侈的事情。究其原因,不外乎一下几点:
1、ipv6硬件设施设置建设投入巨大。如果是在国内网络基础设施水平为0的状态下铺设ipv6的线路不是难题,问题是国内已经部署了太多的ipv4设备,而要淘汰更新这些设备会造成巨大的开支,而且对于运营商来说,这并不在近几年的日程上,所以国内ipv6地址非常难得,一般用户是无法体验ipv6环境的。这给开发者兼容ipv6工作带来了极大的不方便。
2、ipv6的ip浩如烟海,无法有效的做到屏蔽。比如GFW在屏蔽ipv4中发挥了极大的作用,像facebook,google等网站几乎做的滴水不漏。一些服务提供商如果做的太过火,用不了几分钟GFW的工作人员就能全部封死。也就是说,ipv4为GFW的健壮性提供了必要的基础。而ipv6本事网段就非常庞大,再加上IPSec等协议的加密,对GFW提出了极高的挑战。目前一些教育网ipv6用户可以用极高的速度访问youtube,google等,如果普及开来后果不堪设想。
但是作为一名开发人员,不能因为办公室的网络条件不行就等着被app store拒绝,只能硬着头皮没有条件制造条件也要上,下面主要说一下怎样在国内ipv4的环境下创造一个ipv6环境测试app的ipv6支持性。以下所讲的方法一开始我也不知道,是我去g+上问了一下,很多专业人士给出的建议
方案一:4to6的隧道
方案二:自建VPS S-S服务器
方案三:购买支持ipv6的VPN
方案一:6plat.org+openVPN(无需资金投入)
先从官网摘一段介绍:
“IPv6应用实验平台”(以下简称“6Plat”)是由下一代互联网国家工程中心(CFIEC)发起的实验性的IPv6过渡技术测试平台。目的是为了推动IPv6应用落地,充实IPv6资源,加快IPv6过渡步伐。同时也为需要进行IPv6测试的企业和个人提供一个优质和开放的测试环境。
“6Plat”集成了以下IPv6过渡功能:
IPv4到IPv6接入功能;
IPv6到IPv4转换功能;
企业IPv6接入功能。
“6Plat”所有功能都基于现有开源软件搭建而成,IPv6资源由CFIEC提供,因此“6Plat”完全面向公众开放,并且供免费使用。
方案优点:无需资金投入,部署迅速,可以访问国内ipv6站点和一部分国外被封锁的ipv6站点
缺点:
1、带宽有限,无法进行大批量的传输;
2、无法通过wifi或者代理的方式进行分享;
这里我们主要使用的是6plat.org提供的“46模块——IPv4到IPv6”功能,需要配合openVPN这个软件,支持windows,MAC os,Android,IOS。
原理是使用openVPN在你的电脑上建立一个虚拟网卡,然后建立一条ipv4到ipv6的隧道,将电脑上的请求封包后通过ipv4网络传送到ipv6网络中的服务主机,然后封成ipv6包发到目标服务器,然后主机接收ipv6包的服务器响应,将ipv6包封入ipv4包后发回客户端,客户端收到ipv4包后解包,然后处理里面的ipv6包。
本人经过测试,使用在6Plat.org提供的 4to6隧道,其体验和教育网的ipv6相似,可以通过修改host文件或者直接访问ipv6地址的形式访问google和youtube。具体的搭建方式我直接copy一下官网的说明,对于电脑和手机来说都不困难。
Windows平台:
首先需要下载OpenVPN的Windows客户端,然后根据官网给出的配置文本新建6plat.o文件,然后向官网发邮件申请个人的帐号(免费),之后就可以使用OpenVPN的客户端和申请到的用户名密码上ipv6网站了。
官网地址:http://bbs2.6plat.org/d/19
OpenVPN Windows客户端下载地址:http://d.6plat.org/open-install-2.4.0-I601.exe.zip
申请个人账号:申请入口
6plat.o下载(Windows,MAC,Android,IOS等全平台适用):http://download.csdn.net/detail/lvshaorong/9845367
用ipconfig /all命令查看网卡参数:
测试连通性:
测试网址ipv6-test.com
现在已经成功接入IPv6网络,您可以畅游IPv6世界了。
Android平台:
使用方法同Windows版类似,同样需要6plat.o文件,并发邮件申请帐号密码,只是OpenVPN客户端需要另行下载
原理同Windows平台一样,首先需要去网上下载一个openVPN的客户端(使用上面zip包里面的apk安装包也可以),我这里用的是非官方的
安装完毕之后,从压缩包里取出o文件传送到手机sd卡上,然后打开openVPN,点击右上角的加号
点“导入”,选择刚刚放进sd卡的o文件,然后点击右上角的对号
然后退到配置文件列表,点击刚刚添加的配置文件,在用户名和密码均输入6plat.org然后点击确定
然后看着日志一行一行的打印出来,openVPN就开启成功,然后登陆ipv6-test.com测试一下就好
注:这里的用户名密码应改为你自己发邮件申请的用户名和密码
其他平台(IOS,Mac,Linux):
ios客户端的配置与Android差不多,不过IOS估计下载不到openVPN软件,需要使用美国账号。
客户端和配置文件可以到6plat.org自行下载
配置好了ipv6通道以后,除了通过专业的测试站点,再推荐给大家几个站点来测试ipv6的效果
1、ipv6.baidu.com,此站点ipv4和ipv6均能连通,但是ipv4看到也页面是一个错误提示,而ipv6用户直接跳到了百度首页
2、ipv6.taobao.com,此站点只支持ipv6的访问,会显示淘宝首页,ipv4用户访问是空白或者404
3、通过ipv6上谷歌:
6plat.org提供的ipv6服务器地址在国内,使用域名如ipv6.google.com是不能上谷歌的,但是直接访问ipv6域名可以,方法如下:
首先使用nslookup命令行命令查询ipv6.google.com的ipv6地址,然后用浏览器访问该ipv6地址,结果如下
点击网页中的google图标,你就进入谷歌首页啦!
在谷歌首页搜索youtube,点击第一条搜索结果,你就进Youtube啦,现在你就可以看视频了,只不过由于的原因,速度并不快,但是据说在原生ipv6环境下是非常快的。
方案二:S-S
方案优点:
通过代理访问,速度较快带宽较大,而且可以通过代理的方式进行分享
网上有很多销售SS账号的,就像卖VPN一样,需要选择一个支持IPv6的SS节点
缺点:
1、如果没有现成别人搭好的SS服务器,可以自己租用一个有IPv6和IPv4线路接入VPS服务器,需要一定的资金投入。
g+上的专业人士说,就socks5协议来说,不用管客户端是ipv4还是ipv6协议,只要服务端是ipv6协议就可以让客户端畅通无阻的在ipv6环境下进行通讯。我也买过一个支持IPv6的节点,效果还不错,对于IPv6的站点畅通无阻,而且我本地还是IPv4 only环境,实在找不到自己部署一台ipv6环境的VCS来做代理服务器。不过要注意该服务器ping ipv6.google.com能ping同才算是ipv6服务器哦。
获得相应的SS账号之后配置客户端即可,Android直接下载SS APP,IOS可以使用Wingy这个免费APP,如果是电脑,在Linux可以使用Privoxy进行socks5转HTTP代理,Windows下可以使用Proxifier进行SS全局代理
下面是Android客户端使用SS代理之后测试IPv6的结果
方案三:购买支持ipv6的VPN
ipv4的VPN和SS比较易得,而且价格也非常实惠,一个月只需一顿工作餐的价格就能享受很高的网速和稳定的连接。但是支持ipv6的真的是太难找了,一些VPN提供商为了让你提高网速,还会主建议你关闭ipv6,所以对于庞大的VPN市场来说,ipv4才是主流客户的需要,也是商家销售的主要商品。商家为了节省贷款,提高速度,会尽量的ipv6屏蔽掉,所以这个也非了我很长一段时间来寻找销售ipv6-support的VPN服务。
注:如果想要平衡价格和方便性,请参考方案二的自己搭建VPS服务器。
下面就给大家推荐一个服务的提供商:https://www.perfect-privacy.com/-with-ipv6-support/
它在官网上明确指明了自己支持ipv6,而且还是客户端为ipv4-only环境下的ipv6服务支持,但是价格确实比较贵,以欧元计算。。。大家有时间慢慢算吧。这个服务比较适合懒得动手但是不差钱的用户,公司要是给报销也是极好的,下面引用它官网的一段原文:
从这段介绍中能看出它的功能和实现方法,我个人感觉还是挺靠谱的,但是由于资金问题,我也没有亲自测试过,官网也不提供试用,需要的童鞋需要自己做判断。
后记:
查询一个域名所对应的IPv6地址,在windows下可以使用nslookup命令,加-qt参数,如:nslookup -qt=AAAA ipv6.baidu.com 114.114.114.114
在linux下可以使用dig 加AAAA参数,如:dig @208.67.222.222 service.qraved.io AAAA
就可以仅显示ipv6结果,如果不这样设置的话,一般只能查询到ipv4地址
另外再推荐一个网站http://www.webdnstools.com 通过它可以防止国内DNS污染的情形,检验本地DNS结果是否正确,还能查询IPv6的DNS,查看DNS请求的Trace Route等,可以检查DNS查询的过程和路由上的耗时