动态获取ipv6地址-九游平台
操作场景
ipv6的使用,可以有效弥补ipv4网络地址资源有限的问题。如果当前云服务器使用ipv4,那么启用ipv6后,云服务器可在双栈模式下运行,即云服务器可以拥有两个不同版本的ip地址:ipv4地址和ipv6地址,这两个ip地址都可以进行内网/公网访问。
按照约束与限制中的网络环境要求创建的云服务器,有些不能动态获取到ipv6地址,需要进行相关配置才行。如果云服务器使用的是公共镜像,则支持情况如下:
- windows公共镜像默认已开启ipv6动态获取功能,无需配置,文中的windows 2012操作系统和windows 2008操作系统部分供您验证、参考。
- linux公共镜像开启动态获取ipv6功能时,需要先判断是否支持ipv6协议栈,再判断是否已开启动态获取ipv6。目前,所有linux公共镜像均已支持ipv6协议栈。
约束与限制
- 请确保云服务器所在的子网已开启ipv6功能。
若云服务器所在子网未开启ipv6功能,需参考开启网卡ipv6功能进行开启,开启后不允许关闭。
- 请确保云服务器规格支持ipv6功能。
不同区域、不同可用区支持ipv6双栈的云服务器规格不同。ecs是否支持ipv6双栈,请选择区域、可用区后,以控制台的显示为准,查询方法如下图所示。图1 查询支持ipv6的ecs规格
当ecs规格列表中包含“ipv6”参数,且取值为“是”时,表示该ecs规格支持ipv6。
规格是否支持ipv6由“可用区”和“规格”两个参数决定。
如果设置“可用区”后,规格列表中不显示“ipv6”参数或参数值为“否”,表示当前规格不支持ipv6。
- 请确保创建云服务器时已选择“自动分配ipv6地址”。
图2 选择“自动分配ipv6地址”
- 云服务器启动之后动态插拔的网卡不支持ipv6地址动态获取功能。
- 仅弹性云服务器支持ipv6双栈,裸金属服务器不支持。
- 同一个网卡上,只能绑定一个ipv6地址。
- 云服务器网络配置需处于正常状态。
检查网络配置是否正常的方法,请参见检查云服务器网络配置状态。
如果网络配置不正常,请提交工单获取九游平台的技术支持。
操作导航
- windows系统:本文以windows 2012版本、windows 2008版本为例,介绍windows操作系统启用ipv6的方法,如表1所示。
- linux系统:本文提供了自动配置、手动配置两种方式启用ipv6,推荐您使用自动配置方法,如表1所示。
对于centos 6.x和debian操作系统,云服务器内部配置ipv6自动获取功能之后,将该云服务器制作为私有镜像,使用该镜像在非ipv6网络环境中创建云服务器时,由于等待获取ipv6地址超时,导致云服务器启动较慢,此时您可以参考设置云服务器获取ipv6地址超时时间操作。
操作系统 |
方式 |
操作指导 |
---|---|---|
windows 2012 |
自动配置启用ipv6 |
|
windows 2008 |
自动配置启用ipv6 |
|
linux |
自动配置启用ipv6(推荐) |
|
linux |
手动配置启用ipv6 |
windows 2012操作系统
- 检查是否启用ipv6。
打开cmd窗口,执行如下命令,查看当前云服务器是否启用ipv6。
ipconfig
- 配置动态获取ipv6。
- 单击“开始 > 控制面板”。
- 单击“网络和共享中心”。
- 单击以太网连接。
图6 以太网连接
- 在以太网状态的弹窗中单击左下角的“属性”。
- 勾选“internet协议版本 6 (tcp/ipv6)”,然后单击“确定”。
图7 配置动态获取ipv6
- 执行1检查是否已开启动态获取ipv6。
- 启用和配置ipv6。
- 在“internet 协议版本 6(tcp/ipv6)属性”弹窗中,配置云服务器的ipv6地址和dns服务器地址。
- ipv6地址:创建云服务器时分配的ipv6地址,请从控制台云服务器的列表页面获取。
- 子网前缀长度:64
- dns服务器:推荐使用240c::6666
图8 在控制台获取ipv6地址 - (可选配置)根据操作系统不同请分别执行以下命令。
windows server 2012操作系统云服务器请在powershell或者cmd中执行如下命令:
set-netipv6protocol -randomizeidentifiers disabled
- 执行1检查是否已开启动态获取ipv6。
- 在“internet 协议版本 6(tcp/ipv6)属性”弹窗中,配置云服务器的ipv6地址和dns服务器地址。
windows 2008操作系统
- 检查是否启用ipv6。
打开cmd窗口,执行如下命令,查看当前云服务器是否启用ipv6。
ipconfig
- 配置动态获取ipv6。
- 单击“开始 > 控制面板”。
- 单击“网络和共享中心”。
- 左键单击“更改适配器设置”。
- 右键单击网络连接并选择“属性”。
- 勾选“internet协议版本 6 (tcp/ipv6)”,然后单击“确定”。
图12 配置动态获取ipv6
- 执行1检查是否已开启动态获取ipv6。
- 启用和配置ipv6。
- 选择“开始 > 控制面板 > 网络连接 > 本地连接”。
- 选择“属性”,确认勾选以下选项后单击“安装”。
图13 启用和配置ipv6
- 选择“协议”,然后单击“添加”。
图14 添加协议
- 在网络协议列表中选择“microsoft tcp/ip版本 6”,然后单击“确定”。
图15 网络协议列表
- (可选配置)根据操作系统不同请分别执行以下命令。
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,然后再重新制作私有镜像。
- 执行如下命令,查看当前云服务器是否启用ipv6。
ip addr
- 如果没有开启ipv6协议栈,则只能看到ipv4地址,如下图所示,请参考设置云服务器获取ipv6地址超时时间先开启ipv6协议栈。
图16 云服务器未开启ipv6协议栈
- 如果已开启ipv6协议栈,则可以看到lla地址(fe80开头)。
图17 云服务器已开启ipv6协议栈
- 如果已开启ipv6协议栈并且已获取到ipv6地址,则会看到如下地址:
图18 云服务器已开启ipv6协议栈并且已获取到ipv6地址
linux公共镜像均已开启ipv6协议栈,如图17所示;
- 如果没有开启ipv6协议栈,则只能看到ipv4地址,如下图所示,请参考设置云服务器获取ipv6地址超时时间先开启ipv6协议栈。
- 开启linux云服务器ipv6协议栈。
- 执行如下命令,确认内核是否支持ipv6协议栈。
sysctl -a | grep ipv6
- 如果有输出信息,表示内核支持ipv6协议栈。
- 如果没有任何输出,说明内核不支持ipv6协议栈,需要执行2.b加载ipv6模块。
- 执行以下命令,加载ipv6模块。
modprobe ipv6
- 修改“/etc/sysctl.conf”配置文件,增加如下配置:
net.ipv6.conf.all.disable_ipv6=0
- 保存配置并退出,然后执行如下命令,加载配置。
sysctl -p
- 执行如下命令,确认内核是否支持ipv6协议栈。
- 自动配置启用ipv6。
- 下载对应系统版本的工具ipv6-setup-rhel或ipv6-setup-debian,并上传至待操作的云服务器。
ipv6-setup-xxx工具会添加或者修改网卡设备的配置文件,添加ipv6动态获取的配置信息,然后重启网卡或者网络服务。ipv6-setup-rhel和ipv6-setup-debian的工具下载地址如表2所示。
表2 工具下载地址 系列
发行版
下载地址
rhel
- centos 6/7
- euleros 2.2/2.3
- fedora 25
debian
- ubuntu 16/18
- debian 8/9/10
- 执行以下命令,添加执行权限。
chmod x ipv6-setup-xxx
- 执行以下命令,指定一个网卡设备,配置动态获取ipv6地址。
./ipv6-setup-xxx --dev [dev]
示例:
./ipv6-setup-xxx --dev eth0
- 如需对所有网卡配置动态获取ipv6地址,命令为./ipv6-setup-xxx,即不带参数。
- 如需查询工具的用法,请执行命令./ipv6-setup-xxx --help。
- 下载对应系统版本的工具ipv6-setup-rhel或ipv6-setup-debian,并上传至待操作的云服务器。
linux操作系统(手动配置启用ipv6)

centos 6.x和debian操作系统的云服务器内部配置ipv6自动获取功能之后,将该云服务器制作为私有镜像,使用该镜像在非ipv6网络环境中创建云服务器时,由于等待获取ipv6地址超时,导致云服务器启动较慢,您可以参考设置云服务器获取ipv6地址超时时间设置获取ipv6地址超时时间为30s,然后再重新制作私有镜像。
- 执行如下命令,查看当前云服务器是否启用ipv6。
ip addr
- 如果没有开启ipv6协议栈,则只能看到ipv4地址,如下图所示,请参考2先开启ipv6协议栈。
图19 未开启ipv6协议栈
- 如果已开启ipv6协议栈,则可以看到lla地址(fe80开头)。
图20 已开启ipv6协议栈
- 如果已开启ipv6协议栈并且已获取到ipv6地址,则会看到如下地址:
图21 已开启ipv6协议栈并且已获取到ipv6地址
linux公共镜像均已开启ipv6协议栈,如图20所示;
- 如果没有开启ipv6协议栈,则只能看到ipv4地址,如下图所示,请参考2先开启ipv6协议栈。
- 开启linux云服务器ipv6协议栈。
- 执行如下命令,确认内核是否支持ipv6协议栈。
sysctl -a | grep ipv6
- 如果有输出信息,表示内核支持ipv6协议栈。
- 如果没有任何输出,说明内核不支持ipv6协议栈,需要执行2.b加载ipv6模块。
- 执行以下命令,加载ipv6模块。
modprobe ipv6
- 修改“/etc/sysctl.conf”配置文件,增加如下配置:
net.ipv6.conf.all.disable_ipv6=0
- 保存配置并退出,然后执行如下命令,加载配置。
sysctl -p
- 执行如下命令,确认内核是否支持ipv6协议栈。
- 手动配置启用ipv6。操作系统不同,步骤有所差别。
- ubuntu 18.04/20.04操作系统云服务器配置动态获取ipv6。
- 执行以下命令,进入“/etc/netplan/”。
cd /etc/netplan
- 执行以下命令,查询配置文件名。
ls
图22 查询配置文件名 - 执行以下命令,编辑“01-network-manager-all.yaml”配置文件。
vi 01-network-manager-all.yaml
- 在“01-network-manager-all.yaml”下增加如下内容,注意yaml文件格式及缩进:
ethernets: eth0: dhcp6: true
图23 修改结果修改完成后保存退出。
- 执行以下命令,使更改生效。
sudo netplan apply
- 执行以下命令,进入“/etc/netplan/”。
- ubuntu 22.04操作系统云服务器配置动态获取ipv6。
- 执行以下命令,进入“/etc/netplan/”。
cd /etc/netplan
- 执行以下命令,查询配置文件名。
ls
图24 查询配置文件名 - 执行以下命令,编辑“01-netcfg.yaml”配置文件。
vi 01-netcfg.yaml
- 在“01-netcfg.yaml”中增加如下内容,注意yaml文件格式及缩进:
ethernets: eth0: dhcp6: true
图25 修改结果修改完成后保存退出。
- 执行以下命令,使更改生效。
sudo netplan apply
- 执行以下命令,编辑“/etc/networkmanager/networkmanager.conf”文件。
vi /etc/networkmanager/networkmanager.conf
- 在“networkmanager.conf”中增加如下内容,注意文件格式及缩进:
[main] plugins=ifupdown,keyfile dhcp=dhclient [ifupdown] managed=true [device] wifi.scan-rand-mac-address=no
图26 修改结果 - 执行以下命令,使配置生效。
systemctl restart networkmanager
- 执行以下命令,进入“/etc/netplan/”。
- debian操作系统云服务器配置动态获取ipv6。
- 编辑“/etc/network/interfaces”文件,使之包含以下内容:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp iface eth0 inet6 dhcp pre-up sleep 3
- 如果有多个网卡,则在“/etc/network/interfaces”文件中,增加对应网卡的配置,以eth1为例,需要增加:
auto eth1 iface eth1 inet dhcp iface eth1 inet6 dhcp pre-up sleep 3
- 执行如下命令重启网络服务。
service networking restart
如果将网卡进行down/up操作之后无法获取ipv6地址,也可以通过此命令重启网络服务。
- 执行步骤1检查是否已开启动态ipv6。
- 编辑“/etc/network/interfaces”文件,使之包含以下内容:
- centos/euleros/fedora操作系统云服务器配置动态获取ipv6。
- 编辑主网卡配置文件“/etc/sysconfig/network-scripts/ifcfg-eth0”。
补充如下配置项:
ipv6init=yes dhcpv6c=yes
- 编辑“/etc/sysconfig/network”,按如下所示添加或修改以下行。
networking_ipv6=yes
- 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规则。操作如下:
- 执行以下命令,添加ip6tables规则。
ip6tables -a input -m state --state new -m udp -p udp --dport 546 -d fe80::/64 -j accept
- 执行以下命令,保存ip6tables规则。
service ip6tables save
图27 命令示例
- 执行以下命令,添加ip6tables规则。
- (可选配置)centos 7/centos 8系列需要将扩展网卡的ipv6 lla地址模式修改为eui64。
- 执行如下命令查看网卡信息。
nmcli con
图28 查看网卡信息 - 将eth1的ipv6 lla地址模式按以下命令修改为eui64:
nmcli con modify "wired connection 1" ipv6.addr-gen-mode eui64
centos不同系列,网卡信息存在差异,命令中的“wired connection 1”需要根据实际查询的网卡信息的“name”列进行替换。
- 通过ifconfig命令将eth1进行down/up操作。
ifdown eth1
ifup eth1
- 执行如下命令查看网卡信息。
- 重启网络服务。
- centos 6系列执行以下命令,重启网络服务。
service network restart
- centos 7/euleros/fedora系列执行以下命令,重启网络服务。
systemctl restart networkmanager
- centos 6系列执行以下命令,重启网络服务。
- 执行步骤1检查是否已开启动态ipv6。
- 编辑主网卡配置文件“/etc/sysconfig/network-scripts/ifcfg-eth0”。
- suse/opensuse/coreos操作系统云服务器配置动态获取ipv6。
suse 11 sp4不支持ipv6自动获取。
suse 12 sp1、suse 12 sp2无需特殊配置。
opensuse 13.2、opensuse 42.2无需特殊配置。
coreos 10.10.5无需特殊配置。
- ubuntu 18.04/20.04操作系统云服务器配置动态获取ipv6。
检查云服务器网络配置状态
- 执行以下命令,检查云服务器网络服务状态是否正常。
systemctl status networkmanager
如果网络服务状态正常,则执行结果中服务处于active (running)状态且是enable的。
图29 网络服务器状态 - 执行以下命令,检查云服务器网卡获取ip地址的方式。
cat /etc/sysconfig/network-scripts/ifcfg-ethx
- “ethx”需替换为具体的网卡,例如eth0。
- 该命令以centos 7为例进行介绍。
图30 网卡获取ip地址的方式 - 如果云服务器网卡通过动态dhcp获取ip地址,则需要执行以下命令,确认dhcp相关进程是否正常。
systemctl status networkmanager
回显中包含相关网卡的dhclient进程则代表正常。
图31 检查dhcp进程 - 如果云服务器网卡通过静态配置的方式设置网络,则需要执行以下命令,确认ip地址配置是否生效。
ip a
回显中ip配置字段是forever则代表配置已经生效。
图32 检查静态配置
设置云服务器获取ipv6地址超时时间
centos 6.x和debian操作系统的云服务器内部配置ipv6自动获取功能之后,将该云服务器制作为私有镜像,使用该镜像在非ipv6网络环境中创建云服务器时,由于等待获取ipv6地址超时,导致云服务器启动较慢,您可以参考本节操作设置获取ipv6地址超时时间为30s,然后再重新制作私有镜像。
- centos 6.x:
- 执行以下命令编辑“dhclient.conf”文件。
vi /etc/dhcp/dhclient.conf
- 按“i”进入编辑模式,在文件中增加timeout属性。
timeout 30;
- 输入:wq保存后退出。
- 执行以下命令编辑“dhclient.conf”文件。
- debian 7.5:
- 执行以下命令编辑“networking”文件。
vi /etc/init.d/networking
- 按“i”进入编辑模式,增加延迟命令timeout,修改点如下图所示。
图33 修改点1图34 修改点2
- 执行以下命令编辑“networking”文件。
- debian 8.2.0/8.8.0
- 执行以下命令编辑“network-pre.conf”文件。
vi /lib/systemd/system/networking.service.d/network-pre.conf
- 按“i”进入编辑模式,在文件中增加timeout属性。
[service] timeoutstartsec=30
- 执行以下命令编辑“network-pre.conf”文件。
- debian 9.0
- 执行以下命令编辑“networking.service”文件。
vi /etc/system/system/network-online.target.wants/networking.service
- 按“i”进入编辑模式,将timeoutstartsec=5min改为timeoutstartsec=30。
- 执行以下命令编辑“networking.service”文件。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨