本文主要介紹如何開啟或關閉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