问题描述
使用自定义镜像创建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}=="XX:XX:XX:XX:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
自定义镜像中的网络配置为非DHCP获取的方式。比如自定义镜像中使用静态IP地址,则创建的ECS实例仍然使用静态IP地址,可能与已有的IP地址冲突或者不在同一个子网,导致网络不可用。
解决方案
如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
问题原因不同对应的解决方案不同,建议参考如下步骤,在生成自定义镜像前先确认网络配置情况,然后再生成自定义镜像。
对于如下步骤中涉及的文件修改操作,请在操作前先备份配置文件或者创建快照以备份ECS实例。
远程登录生成自定义镜像的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
适用于
云服务器ECS