本文主要介紹如何開啟或關閉Alibaba Cloud Linux 2操作系統中的IPv6。
前提條件
選用的實例規格必須支持IPv6。更多信息,請參見實例規格族。
創建的實例必須在支持開通IPv6網段的地域下,并搭建了IPv6專有網絡。具體操作,請參見搭建IPv6專有網絡。
背景信息
Alibaba Cloud Linux 2鏡像在aliyun-2.1903-x64-20G-alibase-20190829.vhd
及之前的版本未開啟IPv6,從aliyun_2_1903_x64_20G_alibase_20200221.vhd
版本開始默認開啟了IPv6。
開啟IPv6
暫時開啟
暫時開啟IPv6后,實例一旦停止或重啟,開啟IPv6的相關配置會失效,請您謹慎選擇。
在鏡像aliyun_2_1903_64_20G_alibase_20190619.vhd
及之前的版本中,/etc/systemd/network/目錄下的.network文件只配置了DHCP=ipv4
,您可以按照以下步驟修改文件內容來暫時開啟IPv6。
遠程連接ECS實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
運行以下命令進入/etc/systemd/network/目錄。
cd /etc/systemd/network/
使用命令
ls
查詢該目錄下的.network文件。本文以50-dhcp.network文件為例。
修改文件50-dhcp.network內容。
vi /etc/systemd/network/50-dhcp.network
按i進入編輯模式。
將
[Network]
下的信息修改為DHCP=yes
。說明文件內參數
Name=eth*
表示適配所有網絡接口,所有網絡接口都將通過DHCP配置IP地址與路由。如果只需要配置指定的網絡接口,可以修改參數Name
為指定的網絡接口,例如,Name=eth0
表示只適配eth0
網絡接口。更多關于network的信息請參見systemd.network。[Match] Name=eth* [Network] DHCP=yes
修改完成后按Esc鍵,并輸入
:wq
后按下回車鍵,保存并退出。運行以下命令開啟IPv6。
開啟所有網絡接口。
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
開啟指定網絡接口示例。
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
持久開啟
以下操作步驟將持久化開啟IPv6,實例重啟后配置仍然生效。
遠程連接ECS實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
修改
/etc/sysctl.conf
配置文件。vi /etc/sysctl.conf
按i進入編輯模式。使用以下任一方式修改文件內容。
刪除下列配置信息。
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
修改對應的配置信息為如下內容。
net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0
如果需要開啟指定網絡接口,修改信息示例如下。
net.ipv6.conf.eth0.disable_ipv6 = 0
修改完成后按Esc鍵,并輸入
:wq
后按下回車鍵,保存并退出。驗證
/etc/sysctl.conf
配置信息是否與initramfs中的/etc/sysctl.conf
存在差異。diff -u /etc/sysctl.conf <(lsinitrd -f /etc/sysctl.conf)
說明Alibaba Cloud Linux 2配置了initramfs(initram file system)。如果initramfs中的
/etc/sysctl.conf
文件與IPv6的配置文件/etc/sysctl.conf
存在差異,系統可能會生效新的配置,與您需求的配置混淆。如果兩個配置文件存在差異,您可以執行以下命令重新生成initramfs。
sudo dracut -v -f
重啟實例。
sudo reboot
執行
ifconfig
命令判斷是否已開啟IPv6。如果網絡配置信息包含以下信息,表示IPv6已開啟。
inet6 <以fe80::開頭的單播地址> inet6 <ECS實例的IPv6地址>
關閉IPv6
暫時關閉
以下命令將暫時關閉IPv6。
暫時關閉IPv6后,實例一旦停止或重啟,關閉IPv6的相關配置會失效,請您謹慎選擇。
關閉所有網絡接口。
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
關閉指定網絡接口示例。
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
持久關閉
以下操作步驟將持久化關閉IPv6,實例重啟后配置仍然生效。您可以通過以下任一方式關閉IPv6。
通過以下任一命令行參數持久化關閉IPv6。
sudo grubby --args="ipv6.disable_ipv6=1" --update-kernel=/boot/vmlinuz-$(uname -r)
sudo grubby --args="ipv6.disable=1" --update-kernel=/boot/vmlinuz-$(uname -r)
說明參數
--args="ipv6.disable_ipv6=1"
與--args="ipv6.disable=1"
均能實現關閉IPv6的功能,區別在于設置--args="ipv6.disable_ipv6=1"
參數只關閉網絡接口IPv6;而設置--args="ipv6.disable=1"
參數直接禁用了IPv6的內核模塊,詳情請參見Linux內核IPv6說明。通過修改/etc/sysctl.conf文件持久化關閉IPv6。
修改
/etc/sysctl.conf
配置文件。vi /etc/sysctl.conf
按i進入編輯模式,將對應的配置信息修改為如下所示。
net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1
如果需要關閉指定網絡接口,修改示例如下。
net.ipv6.conf.eth0.disable_ipv6=1
重啟實例。
sudo reboot
執行
ifconfig
命令判斷是否已關閉IPv6。如果網絡配置信息沒有包含以下信息,表示IPv6已關閉。
inet6 <以fe80::開頭的單播地址> inet6 <ECS實例的IPv6地址>
支持多網卡配置
如果您需要配置多個IPv6地址,可以參見下述方式進行配置。
遠程連接ECS實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
運行以下命令進入
/etc/systemd/network/
目錄。cd /etc/systemd/network/
使用命令
ls
查詢該目錄下的.network
文件。例如,
10-eth0.network
文件。使用命令
cp
復制一個新的配置文件。例如:
cp 10-eth0.network 20-dhcp.network
運行以下命令修改配置文件。
sed -i 's/^Name.*$/Name=*/g' /etc/systemd/network/20-dhcp.network
重啟systemd-networkd服務使配置生效。
sudo systemctl restart systemd-networkd