問題描述
使用自訂鏡像建立VPC網路的ECS執行個體後,可能出現網路無法連通的異常情況。
問題原因
出現該問題的可能原因較多,本文以CentOS 7系統為例。
- 自訂鏡像的
/etc/sysconfig/network
網路設定檔中配置了GATEWAY參數。配置該參數後,通過自訂鏡像建立的ECS執行個體仍然存在該參數配置,ECS執行個體雖然通過DHCP擷取到了IP地址,但是預設路由不正確,最終網路不可用。 - 自訂鏡像的
/etc/udev/rules.d/70-persistent-net.rules
檔案中存在網路規則。比如存在下面的網路規則,則通過自訂鏡像建立的ECS執行個體啟動後無法擷取擷取eth0網卡對應的IP地址。SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3f:00:65:a8", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
- 自訂鏡像中的網路設定為非DHCP擷取的方式。比如自訂鏡像中使用靜態IP地址,則建立的ECS執行個體仍然使用靜態IP地址,可能與已有的IP地址衝突或者不在同一個子網,導致網路不可用。
解決方案
問題原因不同對應的解決方案不同,建議參考如下步驟,在產生自訂鏡像前先確認網路設定情況,然後再產生自訂鏡像。
註:對於如下步驟中涉及的檔案修改操作,請在操作前先備份或者建立快照。
- 遠程登入產生自訂鏡像的ECS執行個體。
- 執行如下命令,確認設定檔中不存在GATEWAY參數。如果存在,可以通過注釋的方式禁用。
註:不同環境的GATEWAY參數可能存在差異,以現場實際情況為準。
cat /etc/sysconfig/network
系統顯示類似如下。# Created by anaconda
- 檢查如下設定檔,如果其中存在網路規則,則刪除對應網卡的規則。
/etc/udev/rules.d/70-persistent-net.rules
- 執行如下命令,檢查設定檔。
cat /etc/sysconfig/network-scripts/ifcfg-eth0
系統顯示類似如下,確認存在返回結果中的3個配置,並且不存在靜態IP、GATEWAY的參數配置。如果存在,可以通過注釋的方式禁用。DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
適用於
- Elastic Compute Service