操作场景
IPv6的使用,可以有效弥补IPv4网络地址资源有限的问题。如果当前云主机使用IPv4,那么启用IPv6后,云主机可在双栈模式下运行,即云主机可以拥有两个不同版本的IP地址:IPv4地址和IPv6地址,这两个IP地址都可以进行内网/公网访问。
按照约束与限制中的网络环境要求创建的云主机,有些不能动态获取到IPv6地址,需要进行相关配置才行。如果云主机使用的是公共镜像,则支持情况如下:
- Windows公共镜像默认已开启IPv6动态获取功能,无需配置,文中的Windows 2012操作系统和Windows 2008操作系统部分供您验证、参考。
- Linux公共镜像开启动态获取IPv6功能时,需要先判断是否支持IPv6协议栈,再判断是否已开启动态获取IPv6。目前,所有Linux公共镜像均已支持IPv6协议栈,并且Ubuntu 16操作系统已默认开启动态获取IPv6。即Ubuntu 16操作系统无需配置,其他Linux公共镜像需要执行开启动态获取IPv6的操作。
约束与限制
- 请确保云主机所在的子网已开启IPv6功能。
- 不同区域、不同可用区支持IPv6双栈的云主机规格不同。ECS是否支持IPv6双栈,请选择区域、可用区后,以控制台的显示为准。
如上图查询支持IPv6的ECS规格所示,当ECS规格列表中包含“IPv6”参数,且取值为“是”时,表示该ECS规格支持IPv6。
- 请确保创建云主机时已选择“自动分配IPv6地址”。 选择“自动分配IPv6地址”
- 云主机启动之后动态插拔的网卡不支持IPv6地址动态获取功能。
- 仅弹性云主机支持IPv6双栈,物理机不支持。
- 同一个网卡上,只能绑定一个IPv6地址。
操作步骤
- Windows系统:本文以Windows 2012版本、Windows 2008版本为例,介绍Windows操作系统启用IPv6的方法,如表 89所示。
- Linux系统:本文提供了自动配置、手动配置两种方式启用IPv6,推荐您使用自动配置方法,如表 89所示。 对于CentOS 6.x和Debian操作系统,云主机内部配置IPv6自动获取功能之后,将该云主机制作为私有镜像,使用该镜像在非IPv6网络环境中创建云主机时,由于等待获取IPv6地址超时,导致云主机启动较慢,此时您可以参考设置云主机获取IPv6地址超时时间操作。
表 不同操作系统启用IPv6操作指导
操作系统 | 方式 | 操作指导 |
---|---|---|
Windows 2012 | 自动配置启用IPv6 | Windows 2012操作系统 |
Windows 2008 | 自动配置启用IPv6 | Windows 2008操作系统 |
Linux | 自动配置启用IPv6(推荐) | Linux操作系统(自动配置启用IPv6) |
Linux | 手动配置启用IPv6 | Linux操作系统(手动配置启用IPv6) |
Windows 2012操作系统
步骤 1检查是否启用IPv6。
打开cmd窗口,执行如下命令,查看当前云主机是否启用IPv6。
ipconfig
- 如果已启用IPv6,则会显示IPv6的地址。 显示IPv6的地址
- 如果显示只有本地链接IPv6地址,则表示无法动态获取到IPv6地址。请执行步骤2。 图 本地链接IPv6地址
- 如果未启用IPv6,则不会显示IPv6的地址。请执行步骤3。 未启用IPv6
说明:
Windows公共镜像默认已经配置了IPv6动态获取功能,即回显为情况一,无需特殊配置。
步骤 2 配置动态获取IPv6。
- 单击“开始 > 控制面板”。
- 单击“网络和共享中心”。
- 单击以太网连接。
以太网连接
- 在以太网状态的弹窗中单击左下角的“属性”。
- 勾选“Internet协议版本 6 (TCP/IPv6)”,然后单击“确定”。
配置动态获取IPv6
- 执行步骤1检查是否已开启动态获取IPv6。
步骤 3启用和配置IPv6。
- 在“Internet 协议版本 6(TCP/IPv6)属性”弹窗中,配置云主机的IPv6地址和DNS服务器地址。
− IPv6地址:创建云主机时分配的IPv6地址,请从控制台云主机的列表页面获取。
− 子网前缀长度:64
− DNS服务器:推荐使用240c::6666
在控制台获取IPv6地址
- (可选配置)根据操作系统不同请分别执行以下命令。
Windows Server 2012操作系统云主机请在PowerShell或者cmd中执行如下命令:
Set-NetIPv6Protocol -RandomizeIdentifiers disabled
- 执行步骤1检查是否已开启动态获取IPv6。
Windows 2008操作系统
步骤 1检查是否启用IPv6。
打开cmd窗口,执行如下命令,查看当前云主机是否启用IPv6。
ipconfig
- 如果已启用IPv6,则会显示IPv6的地址。 显示IPv6的地址
- 如果显示只有本地链接IPv6地址,则表示无法动态获取到IPv6地址。请执行步骤2。
- 如果未启用IPv6,则不会显示IPv6的地址。请执行步骤3。 未启用IPv6
说明:
Windows公共镜像默认已经配置了IPv6动态获取功能,即回显为情况一,无需特殊配置。
步骤 2 配置动态获取IPv6。
- 单击“开始 > 控制面板”。
- 单击“网络和共享中心”。
- 左键单击“更改适配器设置”。
- 右键单击网络连接并选择“属性”。
- 勾选“Internet协议版本 6 (TCP/IPv6)”,然后单击“确定”。
配置动态获取IPv6
- 执行步骤1检查是否已开启动态获取IPv6。
步骤 3启用和配置IPv6。
- 选择“开始 > 控制面板 > 网络连接 > 本地连接”。
- 选择“属性”,确认勾选以下选项后单击“安装”。
启用和配置IPv6
- 选择“协议”,然后单击“添加”。
添加协议
- 在网络协议列表中选择“Microsoft TCP/IP版本 6”,然后单击“确定”。
网络协议列表
- (可选配置)根据操作系统不同请分别执行以下命令。
Windows Server 2008操作系统云主机请在PowerShell或者cmd中执行如下命令:
netsh interface ipv6 set global randomizeidentifiers=disable
设置云主机先禁用本地连接,再重启本地连接。
禁用本地连接:单击“开始 > 控制面板 > 网络和共享中心 > 更改适配器配置”,选择本地连接,单击右键选择“禁用”。
重启本地连接:单击“开始 > 控制面板 > 网络和共享中心 > 更改适配器配置”,选择本地连接,单击右键选择“启用”。
- 执行步骤1检查是否已开启动态获取IPv6。
Linux操作系统(自动配置启用IPv6)
ipv6-setup-xxx工具能为开启IPv6协议栈的Linux操作系统自动配置动态获取IPv6地址。其中,xxx表示工具系列:rhel或debian。
您也可以参考Linux操作系统(手动配置启用IPv6)手动配置启用IPv6。
注意:
- ipv6-setup-xxx工具运行时会自动重启网络服务,导致网络短暂不可用。
- CentOS 6.x和Debian操作系统的云主机内部配置IPv6自动获取功能之后,将该云主机制作为私有镜像,使用该镜像在非IPv6网络环境中创建云主机时,由于等待获取IPv6地址超时,导致云主机启动较慢,您可以参考设置云主机获取IPv6地址超时时间设置获取IPv6地址超时时间为30s,然后再重新制作私有镜像。
步骤 1执行如下命令,查看当前云主机是否启用IPv6。
ip addr
- 如果没有开启IPv6协议栈,则只能看到IPv4地址,如下图所示,请参考步骤2先开启IPv6协议栈。 云主机未开启IPv6协议栈
- 如果已开启IPv6协议栈,则可以看到LLA地址(fe80开头)。 云主机已开启IPv6协议栈
- 如果已开启IPv6协议栈并且已获取到IPv6地址,则会看到如下地址: 云主机已开启IPv6协议栈并且已获取到IPv6地址
说明:
Linux公共镜像均已开启IPv6协议栈(即情况二);Ubuntu 16公共镜像不仅已开启IPv6协议栈,而且可以获取到IPv6地址(即情况三),无需特殊配置。
步骤 2 开启Linux云主机IPv6协议栈。
- 执行如下命令,确认内核是否支持IPv6协议栈。
sysctl -a | grep ipv6
− 如果有输出信息,表示内核支持IPv6协议栈。
− 如果没有任何输出,说明内核不支持IPv6协议栈,需要执行步骤2.2加载IPv6模块。
- 执行以下命令,加载IPv6模块。
modprobe ipv6
- 修改“/etc/sysctl.conf”配置文件,增加如下配置:
net.ipv6.conf.all.disable_ipv6=0
- 保存配置并退出,然后执行如下命令,加载配置。
sysctl -p
步骤 3自动配置启用IPv6。
下载对应系统版本的工具ipv6-setup-rhel或ipv6-setup-debian,并上传至待操作的云主机。
ipv6-setup-xxx工具会添加或者修改网卡设备的配置文件,添加IPv6动态获取的配置信息,然后重启网卡或者网络服务。ipv6-setup-rhel和ipv6-setup-debian的工具下载地址如表 90所示。
表 工具下载地址
系列 | 发行版 | 下载地址 |
---|---|---|
RHEL | CentOS 6/7 EulerOS 2.2/2.3 Fedora 25 |
https://ipv6-setup.obs.cn-jssz1.ctyun.cn/RHEL/ipv6-setup-rhel |
Debian | Ubuntu 16/18 Debian 8/9 |
https://ipv6-setup.obs.cn-jssz1.ctyun.cn/Debian/ipv6-setup-debian |
- 执行以下命令,添加执行权限。
chmod +x ipv6-setup-xxx
- 执行以下命令,指定一个网卡设备,配置动态获取IPv6地址。
./ipv6-setup-xxx --dev [dev]
示例:
./ipv6-setup-xxx --dev eth0
说明:
- 如需对所有网卡配置动态获取IPv6地址,命令为./ipv6-setup-xxx,即不带参数。
- 如需查询工具的用法,请执行命令./ipv6-setup-xxx --help。
Linux操作系统(手动配置启用IPv6)
注意:
CentOS 6.x和Debian操作系统的云主机内部配置IPv6自动获取功能之后,将该云主机制作为私有镜像,使用该镜像在非IPv6网络环境中创建云主机时,由于等待获取IPv6地址超时,导致云主机启动较慢,您可以参考设置云主机获取IPv6地址超时时间设置获取IPv6地址超时时间为30s,然后再重新制作私有镜像。
步骤 1执行如下命令,查看当前云主机是否启用IPv6。
ip addr
- 如果没有开启IPv6协议栈,则只能看到IPv4地址,如下图所示,请参考步骤2先开启IPv6协议栈。 未开启IPv6协议栈
- 如果已开启IPv6协议栈,则可以看到LLA地址(fe80开头)。 已开启IPv6协议栈
- 如果已开启IPv6协议栈并且已获取到IPv6地址,则会看到如下地址: 已开启IPv6协议栈并且已获取到IPv6地址
说明:
Linux公共镜像均已开启IPv6协议栈(即情况二);Ubuntu 16公共镜像不仅已开启IPv6协议栈,而且可以获取到IPv6地址(即情况三),无需特殊配置。
步骤 2 开启Linux云主机IPv6协议栈。
- 执行如下命令,确认内核是否支持IPv6协议栈。
sysctl -a | grep ipv6
− 如果有输出信息,表示内核支持IPv6协议栈。
− 如果没有任何输出,说明内核不支持IPv6协议栈,需要执行步骤2.2加载IPv6模块。
- 执行以下命令,加载IPv6模块。
modprobe ipv6
- 修改“/etc/sysctl.conf”配置文件,增加如下配置:
net.ipv6.conf.all.disable_ipv6=0
- 保存配置并退出,然后执行如下命令,加载配置。
sysctl -p
步骤 3手动配置启用IPv6。操作系统不同,步骤有所差别。
- Ubuntu操作系统云主机配置动态获取IPv6。
说明:
Ubuntu 18.04和20.04请执行以下操作步骤;Ubuntu 16.04操作系统已默认启用IPv6,不需要做任何配置操作。
a. 执行以下命令,进入“/etc/netpaln/”。
cd /etc/netplan
b. 执行以下命令,查询配置文件名。
ls
查询配置文件名
c. 执行以下命令,编辑“01-network-manager-all.yaml”配置文件。
vi 01-network-manager-all.yaml
d. 在“01-network-manager-all.yaml”下增加如下内容,注意yaml文件格式及缩进:
ethernets:
eth0:
dhcp6: true
修改结果
修改完成后保存退出。
e. 执行以下命令,使更改生效。
sudo netplan apply
- Debian操作系统云主机配置动态获取IPv6。 a. 编辑“/etc/network/interfaces”文件,使之包含以下内容:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp
pre-up sleep 3
b. 如果有多个网卡,则在“/etc/network/interfaces”文件中,增加对应网卡的配置,以eth1为例,需要增加:
auto eth1
iface eth1 inet dhcp
iface eth1 inet6 dhcp
pre-up sleep 3
c. 执行如下命令重启网络服务。
service networking restart
说明:
如果将网卡进行down/up操作之后无法获取IPv6地址,也可以通过此命令重启网络服务。
d. 执行步骤步骤1检查是否已开启动态IPv6。
-
CentOS/EulerOS/Fedora操作系统云主机配置动态获取IPv6。 a. 编辑主网卡配置文件“/etc/sysconfig/network-scripts/ifcfg-eth0”。
补充如下配置项:
IPV6INIT=yes
DHCPV6C=yes
b. 编辑“/etc/sysconfig/network”,按如下所示添加或修改以下行。
NETWORKING_IPV6=yes
c. CentOS 6系列从网卡需要编辑对应的配置文件,以eth1为例,编辑“/etc/sysconfig/network-scripts/ifcfg-eth1”。
补充如下配置项:
IPV6INIT=yes
DHCPV6C=yes
CentOS 6.3系统中默认ip6tables会过滤dhcpv6-client请求,所以CentOS 6.3除了需要编辑“ifcfg-eth*”文件外,还需要额外添加一条允许dhcpv6-client请求的ip6tables规则。操作如下:
i. 执行以下命令,添加ip6tables规则。
ip6tables -A INPUT -m state --state NEW -m udp -p udp --dport 546 -d fe80::/64 -j ACCEPT
ii. 执行以下命令,保存ip6tables规则。
service ip6tables save
命令示例
d. (可选配置)CentOS 7/CentOS 8系列需要将扩展网卡的IPv6 LLA地址模式修改为EUI64。
i. 执行如下命令查看网卡信息。
nmcli con
查看网卡信息
ii. 将eth1的IPv6 LLA地址模式按以下命令修改为EUI64:
nmcli con modify "Wired connection 1" ipv6.addr-gen-mode eui64
说明:
CentOS不同系列,网卡信息存在差异,命令中的“Wired connection 1”需要根据实际查询的网卡信息的“NAME”列进行替换。
iii. 通过ifconfig命令将eth1进行down/up操作。
ifdown eth1
ifup eth1
e. 重启网络服务。
i. CentOS 6系列执行以下命令,重启网络服务。
service network restart
ii. CentOS 7/EulerOS/Fedora系列执行以下命令,重启网络服务。
systemctl restart NetworkManager
f. 执行步骤步骤1检查是否已开启动态IPv6。
l SUSE/openSUSE/CoreOS操作系统云主机配置动态获取IPv6。
SUSE 11 SP4不支持IPv6自动获取。
SUSE 12 SP1、SUSE 12 SP2无需特殊配置。
openSUSE 13.2、openSUSE 42.2无需特殊配置。
CoreOS 10.10.5无需特殊配置。
设置云主机获取IPv6地址超时时间
CentOS 6.x和Debian操作系统的云主机内部配置IPv6自动获取功能之后,将该云主机制作为私有镜像,使用该镜像在非IPv6网络环境中创建云主机时,由于等待获取IPv6地址超时,导致云主机启动较慢,您可以参考本节操作设置获取IPv6地址超时时间为30s,然后再重新制作私有镜像。
- CentOS 6.x:
a. 执行以下命令编辑“dhclient.conf”文件。
vi /etc/dhcp/dhclient.conf
b. 按“i”进入编辑模式,在文件中增加timeout属性。
timeout 30;
c. 输入:wq保存后退出。
- Debian 7.5:
a. 执行以下命令编辑“networking”文件。
vi /etc/init.d/networking
b. 按“i”进入编辑模式,增加延迟命令timeout,修改点如下图所示。
修改点1
修改点2
-
Debian 8.2.0/8.8.0 a. 执行以下命令编辑“network-pre.conf”文件。
vi /lib/systemd/system/networking.service.d/network-pre.conf
b. 按“i”进入编辑模式,在文件中增加timeout属性。
[Service]
TimeoutStartSec=30
-
Debian 9.0 a. 执行以下命令编辑“networking.service”文件。
vi /etc/system/system/network-online.target.wants/networking.service
b. 按“i”进入编辑模式,将TimeoutStartSec=5min改为TimeoutStartSec=30。