[iOS] 测试应用在 IPv6 环境下是否能够正常工作

前面的文章中我们为服务器分配了一个 IPv6 的地址,但是仅仅有它还是不够的。就我的应用环境来说,为了通过苹果的 IPv6 Only 环境的兼容测试,我需要我的 Web 服务器能够在 IPv6 的地址上进行监听并进行响应。我的 Web 服务器使用的是 nginx,默认的编译方式下,并没有启用 IPv6,我们需要重新下载 nginx 源码并在调用 ./configure 时使用 –with-ipv6 选项进行编译后覆盖原来的安装(注意要先停掉 nginx 服务)。

安装完成后,修改网络的配置,将原来的

listen 80;#如果提供服务的端口号不是80,则为实际的端口号,下同

替换为:

listen 80;

listen [::]:80 ipv6only=on;

然后调用 service nginx start 启动 nginx 服务,如果一切顺利,则我们调用 netstat -na 查看时,可以看到已经监听 :::80 的 tcp 记录了。

至此,服务器端的准备工作才算彻底完事。现在我们来在 OS X 客户端验证我们的IPv6 访问是否正常:

  1. 如果客户端有公网IP,那最好了,直接和前面的文章一样,申请一个 IPv6 地址,然后配置下就好。如果没有,则可以到 6plat 申请一个 IPv6 的 VPN(不要指望运行速度有多快,我们只是要用它来验证配置),按官网的文档安装并配置后登录 VPN,获取一个 IPv6 地址。
    6plat
  2. 在 OS X 中打开一个终端,输入  host 我们的Web服务器域名,以确定前面配置的 IPv6 的 AAAA 地址解析记录已经生效。正常生效后的记录的格式类似于下:
    :~xxx$ host aaa.bbb.com
    aaa.bbb.com has address 1.2.3.4
    aaa.bbb.com has IPv6 address xxx:xxx:xx:xx::xxx
  3. 现在,我们使用 curl 来尝试连接到服务器,来测试服务器 IPv6 是否已经能够正常对外提供服务:
    curl -v -6 http://aaa.bbb.com

    我们可以看 curl 的输出,以确定是否正常连接到服务器上:

    * Rebuilt URL to: http://aaa.bbb.com/
    *   Trying xxx:xxx:xxx:xxx::xxx...
    * Connected to aaa.bbb.com (xxx:xxx:xxx:xxx::xxx) port 80 (#0)
    > GET / HTTP/1.1
    > Host: ddb.b86400.com:75
    > User-Agent: curl/7.43.0
    > Accept: */*
    > 
    < ...

    如果看到类似于上面的输出,则说明 IPv6 的 Web 服务端已经工作正常。如果你客户端程序使用标准的 THttpClient 来访问服务器端数据的话,应该一切工作正常了。

分享到:

0 条评论

沙发空缺中,还不快抢~