操作場景
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 |
//ecs-hy.obs.cn-gz1.daliqc.cn/ipv6-setup/ipv6-setup-rhel |
| Debian | Ubuntu 16/18 Debian 8/9 |
//ecs-hy.obs.cn-gz1.daliqc.cn/ipv6-setup/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。