元旦期待已久的iso版本,苦苦等到1.7号方值被拒了,原因是不支持ip6,现要改造支持ipv6,公司用的aliyun服务器 nginx做反向代理 服务器的操作系统是linux,通过ping6的方式可以之道网址是否支持ipv6
ping6 ipv6.xxxx.com
ping6 ipv6的ip
请参考:http://lesca.me/archives/how-to-ping-ipv6-address.html
在gogole后国内大部分都是不支持ipv6,包括aliyun都是禁用状态,在google之后发现了破解之道
一.确认系统版本
# cat /proc/version (Linux查看当前操作系统版本信息)
Linux version 2.6.32-431.23.3.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Thu Jul 31 17:20:51 UTC 2014
# uname -a (Linux查看版本当前操作系统内核信息
Linux iZ28jhy70mhZ 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
二.linux支持ipv6
2.1.确认linux是否启用了ipv6通过以下命令,能看到ipv6的字样说明支持
# lsmod | grep ipv6
ipv6 318183 90 sit
# ifconfig
# ip a
inet6 addr: fe80::216:6eff:xx:1bab/64 Scope:Link (inet6字样)
2.2配置启用ipv6
由于国内目前并不支持ipv6,阿里就索性把ipv6的模块给禁用了。可以在内核加载模块中看到禁用的文件:
#cat /etc/modprobe.d/disable_ipv6.conf
alias net-pf-10 off
alias ipv6 off
options ipv6 disable=1
并且在网络配置中,也看到了对ipv6的禁用:
cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=iZ28jhy70mhZ
NETWORKING_IPV6=no
PEERNTP=no
GATEWAY=115.29.xxx.247
因此要开启ipv6的支持修改 /etc/sysconfig/network中的NETWORKING_IPV6=yes,并且注释掉/etc/modprobe.d/disable_ipv6.conf的内容或删除该文件。
2.3配置好以后重启阿里云服务器
# shutdown -r now
三.Nginx支持ipv6
进入到nginx下,看是否有编译模块 --with-ipv6
# cd /etc/nginx/sbin/
# ./nginx -V
nginx version: nginx/1.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --with-openssl=../openssl-1.0.1k --with-http_stub_status_module
--with-http_ssl_module --with-http_realip_module --with-http_gunzip_module --with-http_gzip_static_module
--with-http_secure_link_module --with-http_auth_request_module --with-file-aio --with-ipv6
如果有则下一步,如果没有需要重新编译下依赖模块
四.配置ipv6隧道
4.1.注册登陆 https://www.tunnelbroker.net/ (需要邮箱验证)
4.2.Create Regular Tunnel(输入外网ip地址,也就nginx所在的服务器外网地址,并选择亚洲:HK)
4.3 tab到 ExampleConfigurateions到栏目下 select 与自己操作系统对应的名称,我选择的是Linux-route2 ,copy展示出来的命令在终端中执行
modprobe ipv6
ip tunnel add he-ipv6 mode sit remote 216.218.221.6 local 115.39.xx.505 ttl 255
ip link set he-ipv6 up
ip addr add 4001:470:18:2d1::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr
回去之后会看到
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::516:4eff:fe02:1bab/64 scope link
valid_lft forever preferred_lft forever
ping6 x001:4x0:18:2f1::2 (HE中ipv6的地址,如果能ping6通说明配置成功)
五.配置nginx支持ipv6
listen 80;
listen [::]:80 ipv6only=on;
server_name xxx.xxx.com;
HTTPS的配置
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name xxx.xxx.com;
执行以下命令就看到监听的端口是否支持ipv6
# netstat -lan|grep LISTEN
# netstat -tulpn | grep :80
tcp 0 0 10.165.40.56:80 0.0.0.0:* LISTEN 1147/nginx
tcp 0 0 :::80 :::* LISTEN 1147/nginx
tcp 0 0 :::8080 :::* LISTEN 1168/java
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 1168/java
tcp 0 0 :::7080 :::* LISTEN 1203/java
tcp 0 0 :::8009 :::* LISTEN 1168/java
六.配置 DNS 使其支持 IPv6 解析
6.1AAAA解析,值填 HE里的Client IPv6 Address,去掉最后的/64即可,如4001:370:200:100::2
6.2 ping6 demo.test.com (配置好的域名)看到正常输入就说明配置成功了
七.需要IOS移动端做适配处理。
参考地址:
http://lesca.me/archives/how-to-ping-ipv6-address.html --正确pingipv6
https://ilazycat.com/posts/2016/12/aliyun-ecs-ipv6-configuration.html --
https://jiandanxinli.github.io/2016-08-06.html --
https://tunnelbroker.net/ --隧道配置网址
https://ilazycat.com/posts/2016/12/aliyun-ecs-ipv6-configuration.html
http://www.itdadao.com/articles/c15a1011825p0.html