本博客其实很久之前就已经支持IPV4/IVP6双栈网络了,最近阿里云来了个“在家学习”活动又送了台2C4G的T5 ECS,那就介绍一下如何在阿里云使用IPV6网络吧。
准备工作
首先目前阿里云的IPV6尚处于公测中,且只支持乌鲁木齐、北京、深圳三个地区的部分ECS(XN4、N4类型的ECS不支持IPV6)。确定ECS能使用IPV6网络后,便可在专有网络VPC里点击开通IPV6,此时会提示尚未有公测权限,点击进入申请页面,填写相关信息后等待最长15个工作日即可公测通过。(如下图)
此时再回到专有网络VPC,点击IPV6即可为专有网络开启IPV6。(记得勾选自动开启VPC内所有交换机的IPV6功能,如果忘记勾选可以自行进入交换机设置处开启)
开启后会给你的VPC分配一个/56的IPV6网段,同时所有交换机也会被自动分配到一个/64的IPV6网段(貌似无法自定义)。
为ECS分配IPV6
VPC、交换机分配到IPV6网段后,进入云服务器ECS控制台,在实例配置信息里会有一个IPV6地址项,有一个「管理辅助私网IP」按钮,点击该按钮。在IPV6地址栏下点击分配新IP,输入后缀(如果不输入的话会自动随机分配),点击确定之后即分配成功。
开头公网访问权限
分配好的IPV6不能访问公网,只能通过内网访问,点击IPV6地址会跳转到IPV6网关设置项,开通公网访问。
在IPV6网关设置项里,点击管理。
然后在左侧栏里,点击IPV6公网带宽。
然后点击开头公网带宽,点击后会跳转到购买页面。
阿里云的IPV6是和IPV4分开计费的,所以已购买的IPV4公网带宽不能用在IPV6上。带宽计费1Mbps目前是0.96/天(30天就是28.8),流量计费是0.8/GB,流量计费价格和弹性公网IPV4价格一致。
我这里选流量计费,付费购买后就开通公网访问了。(如果选了流量计费但是账号里每余额的话记得充值少量余额)
在ECS的操作系统中配置启用IPV6
未开通IPV6的ECS默认在操作系统中禁用IPV6,所以需要修改部分设置。
阿里云提供了一个ecs-util-ipv6工具,可以自动为未启用IPV6的ECS启用并配置IPV6地址。
点击这里可以下载:https://help.aliyun.com/document_detail/108465.html
阿里云官方说明里提到Debian系只支持Ubuntu14.04/16.04,Ubuntu18.04以上需要自行配置netplan,为了方便起见也可先运行以下脚本启用IPV6环境。
wget下载后(下载链接记得去掉spf参数)执行以下命令即可配置IPV6。
chmod +x ./ecs-utils-ipv6
./ecs-utils-ipv6
./ecs-utils-ipv6 --enable
Ubuntu18.04以上需要配置netplan,netplan配置文件位于/etc/netplan目录内,示例如下
cd /etc/netplan
ls
# 此时能看到该目录下有一个形如99-netcfg.yaml的配置文件
vim 99-netcfg.yaml
# 以下为配置文件全文
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
dhcp6: no
addresses: ["你的IPV6地址/64"]
gateway6: "你的IPV6网关"
# 以上为配置文件全文
修改保存后使用netplan try可以检查配置文件是否错误,如果因为错误导致断网,等待1分钟后他会自动恢复原配置,可以重新连上ssh连接检查配置文件是否错误。如果没有断网或者报错就一般没问题,按下Enter即可保存配置。
输入ifconfig可查到IPV6地址
此时ECS的IPV6已配置完毕(记得在安全组中为IPV6开启相关端口,IPV6的安全组规则是和IPV4分开的,如果该端口开放给所有IP,则填::/0,对应ipv4的0.0.0.0/0)。
为SSH服务启用IPV6
阿里云官方镜像中的SSH服务默认不监听IPV6。取消/etc/ssh/sshd_config文件中的AddressFamily any项并且重启SSH服务即可。
使用netstat -a命令可以看到ssh已监听IPV6的22端口了。
后记
其实腾讯云和华为云也支持IPV6双栈了。但是腾讯云要求IPV6只能按带宽计费(我的服务器本身是带宽计费)而且价格高昂(1Mbps要上百元),所以就不开了。华为云目前也支持双栈VPC,但仅限北京区的某个可用区,我的服务器不在该区,无法配置,不过华为云有弹性公网IPV6功能(类似于IPV6负载均衡),可以申请一个弹性公网IPV6,其流量将通过内网转发给服务器,可以实现单向IPV6访问(即外部可以使用IPV6访问服务器,服务器不能使用IPV6地址访问IPV6网站)。