如何在阿里云ECS上部署原生ipv4/ipv6双栈网站

阿里云老早就在“呼和浩特”地域开放了ECS部署原生ipv6的能力,现在处于公测中。不排除会在其他地域开放此能力

此篇文章引导读者一步一步,使用 CentOS7 部署阿里云ipv6网站,ipv4不赘述。

网络上绝大多数使用he.net的免费转换服务,把he.net提供的ipv6地址和自己的服务器建立一个基于ipv4的网络隧道。这个虽然是切实可行的,架不住延迟大,不稳定。毕竟国内ipv6用户要使用ipv6协议访问到国内的服务器上,要绕道香港、新加坡或者日本。

另外阿里云和其他云厂商提供了收费的ipv6转换服务,当用户的ipv6请求过来后,ipv6转换服务会把网络包转换成ipv4的协议,再发送给ECS、SLB等等服务。

这些转换服务都不是原生的ipv6能力,需要依赖ipv4协议栈工作,而且不方便拿到客户端的ipv6地址,不推荐。

1、买服务器(ECS)

选择“呼和浩特”地域,选择实例的时候 要选择支持ipv6的。这里的“支持ipv6”是机房设备上支持,如果机房设备不支持,ECS玩出花儿来也不行

2、VPC开通ipv6能力

ECS创建好之后,找到对应的vpc(虚拟网络),找到如下图所示的交换机:

点击“开通ipv6”,在弹出的对话框,选择自动开启VPC内所有交换机IPv6功能,然后单击确定。开通后,系统会为您的VPC从IPv6地址池中分配一个56位掩码的IPv6网段并创建一个免费版的IPv6网关。

这个时候,虚拟网络里面已经有了ipv6的内网访问全部能力,需要将ipv6连接到互联网,我们还需要购买一个服务

3、配置IPv6公网带宽(内容来自阿里云)

默认IPv6地址只具备私网通信能力。如果您需要通过该IPv6地址访问互联网或被互联网中的IPv6客户端访问,您需要该IPv6地址购买公网带宽。完成以下操作,购买公网带宽:

  1. 在专有网络控制台的左侧导航栏,单击IPv6网关
  2. 找到目标IPv6网关,然后单击管理
  3. 在左侧导航栏,单击IPv6公网带宽
  4. 找到ECS实例使用的IPv6地址,然后单击开通公网带宽
  5. 选择一种费方式和公网带宽,然后完成支付。

这里建议使用“流量计费”模式,测试用,走不了多少流量,下图是作者当前的ipv6公网访问配置

4、设置ipv6防火墙

这里没有什么太深奥的地方,设置一下ipv6协议下面,22、80、443等常用端口的入方向访问

5、开启CentOS ipv6协议栈

阿里云纯净版的CentOS7 禁用了ipv6,现在需要打开ipv6的系统支持。

好在阿里云提供了一个shell脚本,快速方便在ecs中开启ipv6

先使用ssh连接到ecs,拿到shell

运行:

wget http://ecs-image-utils.oss-cn-hangzhou.aliyuncs.com/ipv6/rhel/ecs-utils-ipv6

下载脚本到ecs上面,给个可执行权限

chmod +x ./ecs-utils-ipv6

30秒不到就执行完毕,再看看本机ip地址

ip addr

如图所示,已经拿到了ipv6 2408开头的ipv6地址。fe80开头的ipv6地址是临时地址,一般此类型的地址,是访问不了互联网的。中国的ipv6地址大多是以24xx开头。可以简单使用ipv6地址开头判断ECS是否配置了正确的ipv6地址

6、安装web环境

作者不是专业运维岗,一般喜欢使用lnmp.org提供的lnmp一键安装工具

具体安装教程请参考 https://lnmp.org/install.html 作者不再赘述

7、配置nginx虚拟主机

帖一份生效https+ipv6的虚拟主机的vhost.conf文件内容。再写一份80端口配置即可支持双栈

server
{ 
	listen 443 default ssl;
	listen [::]:443 ipv6only=on default ssl;
	ssl_certificate certs/v6.yinghualuo.cn.pem;
	ssl_certificate_key certs/v6.yinghualuo.cn.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;

	server_name ipv6.yinghualuo.cn;
	index index.html index.htm index.php default.html default.htm default.php;
	
        root  /home/wwwroot/v6.yinghualuo.cn/public;

	include rewrite/laravel.conf;
	include enable-php-pathinfo.conf;

	location ~ /\.
	{
		deny all;
	}
	  
	access_log  /home/wwwlogs/v6.yinghualuo.cn.log;
}     

8、使用第三方工具测试此网站

很多读者的网络还不支持ipv6,我们利用第三方工具来测试我们网站是否原生支持ipv6

打开 https://ipv6-test.com/validate.php 输入好网址,选择https类型

看到上图,三个勾说明此网站已经原生支持ipv6的访问

后记

想要快速体验到ipv6接入互联网,使用手机流量即可。中国的三大运营商在绝大部分地区开通了ipv6接入。

如何判断自己的宽带是否支持ipv6,打开 https://ipv6-test.com/ 或者 https://test-ipv6.com/ 来测试,自己的宽带是否支持ipv6互联网访问

其他云厂的现状

腾讯云:中国大陆、中国香港地域不支持ipv6原生能力,只在海外开通了ipv6原生能力

华为云:开通了ipv6原生能力,但是ipv6公网带宽每个月需要收费几百元

西部数码:在“ MY10G-1”和其他部分集群上开通了ipv6原生能力,开始随机选的集群不支持ipv6,换个集群需要20块,购买云服务器时要慎选

总结,想快速测试ipv6应用,还是西部数码的方便,ipv6能力无需额外费用。如果域名备案在阿里云,推荐阿里云,操作复杂点,费用也低。华为云不推荐,ipv6能力收费高。腾讯云在大厂中支持ipv6执行力最差,这个团队的进取心还是跟以前cdn产品出来一样差

此文章禁止转载,转载必究