Linux实例中本地网卡的DHCP配置检查与修复

概述

ECS实例默认使用DHCP(动态主机设置协议,Dynamic Host Configuration Protocol)为弹性网卡自动分配IP地址,并获得IP地址租约到期时间。正常情况下,Linux实例的dhclient进程会定期向DHCP服务器更新租约到期时间,以确保实例IP地址的可用性。以下情况可能引发Linux实例的DHCP服务出现异常,导致实例网络不通:

  • 网卡配置文件存在错误

  • 网卡对应的dhclient进程未运行

本文主要介绍如何检查本地网卡的DHCP配置,以及出现异常时的修复方法。

详细信息

说明
  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

  1. 远程登录Linux实例。关于如何远程登录,请参见ECS连接方式概述

    说明

    如果您无法通过SSH的方式登录Linux实例,请参见 无法通过SSH远程登录Linux实例时的排查指引

  2. 为避免误操作产生数据安全风险,请您通过快照备份ECS实例。关于如何创建快照,请参见创建快照

  3. 在Linux实例中执行以下命令,检查并记录Linux实例已有的本地网卡。

    ls -al /sys/class/net/

    系统显示如下图,其中eth0为本地网卡。此处以一个本地网卡为例,如果您为ECS实例添加过辅助弹性网卡,则以实际情况为准。

  4. 如果Linux实例只有一个本地网卡,则继续以下步骤进行检查。如果Linux实例存在多个本地网卡,请参考步骤5至步骤8,依次对每个本地网卡进行检查和修复。

  5. 在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://help.aliyun.com/document_detail/57803.html
    #
    BOOTPROTO=dhcp
    DEVICE=[$Eth]
    ONBOOT=yes
    STARTMODE=auto
    TYPE=Ethernet
    USERCTL=no

    根据以下情况进行处理:

    • 本地网卡使用非DHCP的方式获取IP地址:请您与服务器管理员确认修改IP地址获取方式的原因,如果不需要使用DHCP的方式获取IP地址,则无需参考本文进行排查。

    • 本地网卡使用DHCP的方式获取IP地址:请参考上述网卡配置文件的示例,确认您Linux实例中的网卡配置文件不存在拼写错误,继续下一步操作。

  6. 在Linux实例中执行以下命令,检查对应网卡的dhclient进程运行状态。

    ps aux | grep dhclient | grep [$Eth]

    根据以下情况进行处理:

    • 系统返回本地网卡对应的dhclient进程,说明此网卡的DHCP服务正常。

      说明

      此处以eth0网卡为例,现场以实际情况为准。

    • 系统无返回结果,说明dhclient进程未运行,请继续下一步操作。

  7. 在Linux实例中执行以下命令,重新启动对应网卡的dhclient进程。

    ifup [$Eth]
  8. 再次执行以下命令,确认对应网卡的dhclient进程处于运行状态。

    ps aux | grep dhclient | grep [$Eth]

相关文档

适用于

  • 云服务器ECS