这篇文章上次修改于 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://你的域名"
返回正常则大功告成。
没有评论