概述
ECS執行個體預設使用DHCP(動態主機設定協議,Dynamic Host Configuration Protocol)為彈性網卡自動分配IP地址,並獲得IP地址租約到期時間。正常情況下,Linux執行個體的dhclient進程會定期向DHCP伺服器更新租約到期時間,以確保執行個體IP地址的可用性。以下情況可能引發Linux執行個體的DHCP服務出現異常,導致執行個體網路不通:
網卡設定檔存在錯誤
網卡對應的
dhclient進程未運行
本文主要介紹如何檢查本地網卡的DHCP配置,以及出現異常時的修複方法。
詳細資料
如果您對執行個體或資料有修改、變更等風險操作,務必注意執行個體的容災、容錯能力,確保資料安全。
如果您對執行個體(包括但不限於ECS、RDS)等進行配置與資料修改,建議提前建立快照或開啟RDS記錄備份等功能。
如果您在阿里雲平台授權或者提交過登入帳號、密碼等安全資訊,建議您及時修改。
遠程登入Linux執行個體。關於如何遠程登入,請參見ECS串連方式概述。
說明如果您無法通過SSH的方式登入Linux執行個體,請參見 無法通過SSH遠程登入Linux執行個體時的排查指引。
為避免誤操作產生資料安全風險,請您通過快照備份ECS執行個體。關於如何建立快照,請參見建立快照。
在Linux執行個體中執行以下命令,檢查並記錄Linux執行個體已有的本地網卡。
ls -al /sys/class/net/系統顯示如下圖,其中eth0為本地網卡。此處以一個本地網卡為例,如果您為ECS執行個體添加過輔助彈性網卡,則以實際情況為準。

如果Linux執行個體只有一個本地網卡,則繼續以下步驟進行檢查。如果Linux執行個體存在多個本地網卡,請參考步驟5至步驟8,依次對每個本地網卡進行檢查和修複。
在Linux執行個體中執行以下命令,檢查本地網卡的設定檔。
cat /etc/sysconfig/network-scripts/ifcfg-[$Eth]說明[$Eth]指本地網卡名稱,現場需替換為需要檢查的網卡名稱,例如:eth0。
系統顯示如下,其中
BOOTPROTO=dhcp表示本地網卡使用DHCP的方式擷取IP地址。# Created by cloud-init on instance boot automatically, do not edit. # If you don't want cloud-init genrated automatically,you can disable it in /etc/cloud/cloud.cfg # For more information, please refer to: https://www.alibabacloud.com/help/document_detail/57803.html # BOOTPROTO=dhcp DEVICE=[$Eth] ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no根據以下情況進行處理:
本地網卡使用非DHCP的方式擷取IP地址:請您與伺服器管理員確認修改IP地址擷取方式的原因,如果不需要使用DHCP的方式擷取IP地址,則無需參考本文進行排查。
本地網卡使用DHCP的方式擷取IP地址:請參考上述網卡設定檔的樣本,確認您Linux執行個體中的網卡設定檔不存在拼字錯誤,繼續下一步操作。
在Linux執行個體中執行以下命令,檢查對應網卡的
dhclient進程運行狀態。ps aux | grep dhclient | grep [$Eth]根據以下情況進行處理:
系統返回本地網卡對應的
dhclient進程,說明此網卡的DHCP服務正常。
說明此處以eth0網卡為例,現場以實際情況為準。
系統無返回結果,說明
dhclient進程未運行,請繼續下一步操作。
在Linux執行個體中執行以下命令,重新啟動對應網卡的
dhclient進程。ifup [$Eth]再次執行以下命令,確認對應網卡的
dhclient進程處於運行狀態。ps aux | grep dhclient | grep [$Eth]
相關文檔
適用於
Elastic Compute Service