使用自定义镜像创建VPC网络实例后网络出现异常

问题描述

使用自定义镜像创建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实例。

  1. 远程登录生成自定义镜像的ECS实例。

  2. 执行如下命令,确认配置文件中不存在GATEWAY参数。如果存在,可以通过注释的方式禁用。

    说明

    不同环境的GATEWAY参数可能存在差异,以现场实际情况为准。

    cat /etc/sysconfig/network

    系统显示类似如下。

    # Created by anaconda
  3. 检查如下配置文件,如果其中存在网络规则,则删除对应网卡的规则。

    /etc/udev/rules.d/70-persistent-net.rules
  4. 执行如下命令,检查配置文件。

    cat /etc/sysconfig/network-scripts/ifcfg-eth0

    系统显示类似如下,确认存在返回结果中的3个配置,并且不存在静态IP、GATEWAY的参数配置。如果存在,可以通过注释的方式禁用。

    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes

适用于

  • 云服务器ECS