这篇文章上次修改于 2867 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

注:原创,转载请注明来处

背景:因为6月01号开始,苹果改为ipv6来审核应用,导致苹果审核时接口不能访问,所以要使接口支持ipv6的访问。研究了一天,解决,现将方法记录。

参考文档:

https://bbs.aliyun.com/read/285557.html

http://helloiamkitty.blog.163.com/blog/static/18967710120115306544362

环境:阿里云centos6.5的服务器,nginx+php

步骤:

1、开启阿里云的ipv6

    编辑 /etc/sysctl.conf 文件,将其中三条禁用IPv6的设置更改为:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

如果没有,就加上这三条。

运行命令:

sysctl -p

启动ipv6

运行命令

ifconfig

结果如下图出现ipv6 表示ipv6启动成功:

 

2、使用 https://tunnelbroker.net/ 网站,生成服务器ip对应的ipv6地址

    在左上角的地方注册账号登录。

    登录后按照下图步骤进行

   

 

 

  按照箭头步骤,第一处填写你的服务器IP

上图红色标出来的就是你的服务器对应的ipv6地址。

然后点击 Example Configurateions 选项,里选择 Linux-route2 的配置方法,示例命令如下:

modprobe ipv6
ip tunnel add he-ipv6 mode sit remote 216.218.*.* local 114.215.*.* ttl 255
ip link set he-ipv6 up
ip addr add 2001:470:18:126c::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr

将给出的命令在服务器上面执行一遍。

然后再使用ifconfig查看,出现he-ipv6,并且ipv6的开头已2001开头,则表示服务器ipv6绑定成功,如下图:

 

3、测试ipv6是否能够ping通:

 我是在本地win7系统里面做的测试,所有这里只说一下win7下面怎么ping ipv6

 1)、打开cmd,执行命令:

netsh int teredo show state

 出现 Teredo 参数 :
 若“ 状态 ”为 dormant / qualified ,则表示已连接服务器并获得 IPv6 地址。若不是请执行下面的命令:

netsh interface teredo set state server=teredo-debian.remlab.net

    注意,“teredo-debian.remlab.net”为公共Teredo服务器地址,若无法连通可替换为一下列表中的值:
    * teredo.remlab.net / teredo-debian.remlab.net (法国) (Miredo 默认设置)
    * teredo.autotrans.consulintel.com (西班牙)
    * teredo.ipv6.microsoft.com (美国 雷蒙德) (Windows XP/2003/Vista/7/2008 系统默认设置)
    * teredo.ngix.ne.kr (韩国)
    * teredo.managemydedi.com (美国 芝加哥)

此命令用于向 Teredo 服务器请求 IPv6 地址 。 之后需要稍等一阵 ,因为在请求连接 Teredo 服务器。

再执行命令:

netsh int ipv6 show teredo 

如下图:

若状态为 qualified ,则 OK。

执行命令:

ping -6 2001:470:18:*::*

若能ping通则表示ipv6绑定成功

4、将域名和ipv6绑定:

    我使用的是万网,所有登录万网,加入管理中心,加上一条AAAA记录就可以了。

   如果生成的ipv6的服务器和接口服务器是一台,则需要在nginx配置的server里面加上:

listen    [您的ipv6]:端口;

重启nginx,则大功告成。

若ipv6服务器和接口服务器不是同一台,则需要在ipv6服务器上面做nginx代理转发。示列如下:

server {
        listen    服务器ipv4地址:端口;
        listen    [服务器ipv6地址]:端口;
        server_name 域名;
        location /{
                proxy_pass http://要转发的ipv4地址:端口;
                proxy_set_header HOST $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

重启nginx。

5、使用curl测试

 curl -g -6 "http://你的域名"

返回正常则大功告成。