网站改造升级使支持IPV6
分类:环境 别名:site-upgraded-to-support-ipv6

什么是ipv6

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍 。
互联网数字分配机构(IANA)在2016年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持IPv6,不再兼容IPv4。

2016年初起,苹果要求上架iOS App Store的应用要兼容IPv6,因为苹果审核ipv6的标准是应用在ipv6的网络环境下和最新的ios系统下,应用也能正常连接。所以公司向腾讯云申请了IPv6/IPv4双栈的内测,并且通过。得此机会,我自己的服务也被支持了ipv6。

我的服务器系统是centos 7.6 linux
其他系统配置方法大同小异

执行ifconfig查看网卡是否已经取得了fe80开头的linklocal地址

如果获取表示系统已经开启了 IPv6 功能

如果没有获取,请按以下方法操作,否则跳过。

vim /etc/sysconfig/network-scripts/ifcfg-eth0
在网卡配置文件增加`DHCPV6C=yes`

获取ipv6地址后,如果无法ping通公网,先检查一下路由文件

vim /etc/sysconfig/network-scripts/route6-eth0
编辑如下内容 :default dev eth0

使用以下命令尝试ping公网

service network restart
或者
systemctl restart network

如果能ping通,服务器就支持ipv6了

服务器支持ipv6后,需要服务器应用也支持,本站是通过nginx代理springboot运行的,所以需要在nginx.conf开启监听ipv6地址

需先判断nginx是否支持ipv6模块

./nginx -V

[root@VM_0_6_centos sbin]# ./nginx -V
nginx version: nginx/1.17.7
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi --with-http_stub_status_module --with-http_ssl_module

如果有with-ipv6,表示已安装此模块,否则需要重新编译安装

在nginx 1.11.5 11 Oct 2016以后的版本,默认是支持ipv6配置,无需重新编译

我的nginx.conf如下

server {
        listen 443 ssl;
        listen [::]:443;  # <= 这是重点
        server_name liaozixu.com;
        ssl_certificate /liaozixu.com_bundle.crt;
        ssl_certificate_key /liaozixu.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $proxy_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

域名做AAAA解析即可

C:\Users\liaozixu>ping -6 liaozixu.com

Pinging liaozixu.com [2402:4e00:1010:c401:0:8f6e:e870:99ab] with 32 bytes of data:
Reply from 2402:4e00:1010:c401:0:8f6e:e870:99ab: time=8ms
Reply from 2402:4e00:1010:c401:0:8f6e:e870:99ab: time=7ms
Reply from 2402:4e00:1010:c401:0:8f6e:e870:99ab: time=7ms
Reply from 2402:4e00:1010:c401:0:8f6e:e870:99ab: time=8ms

Ping statistics for 2402:4e00:1010:c401:0:8f6e:e870:99ab:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 7ms, Maximum = 8ms, Average = 7ms

C:\Users\liaozixu>ping -4 liaozixu.com

Pinging liaozixu.com [119.29.79.178] with 32 bytes of data:
Reply from 119.29.79.178: bytes=32 time=8ms TTL=53
Reply from 119.29.79.178: bytes=32 time=8ms TTL=53
Reply from 119.29.79.178: bytes=32 time=8ms TTL=53
Reply from 119.29.79.178: bytes=32 time=8ms TTL=53

Ping statistics for 119.29.79.178:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 8ms, Maximum = 8ms, Average = 8ms
关闭