更新时间:2024-04-18 GMT+08:00

Linux实例IP地址丢失怎么办?

问题描述

当ECS实例在未重启的情况下连续运行超过一定时间后,出现IP丢失、实例断网、网络瘫痪的情况,如图1所示。

图1 故障现象

可能原因

ECS实例的网络配置为DHCP(Dynamic Host Configuration Protocol,动态主机设置协议)方式。

以CentOS 7的ECS为例,如果网络配置为DHCP方式,当ECS实例启动时,Linux系统的NetworkManager服务会启动dhclient进程,dhclient进程会向DHCP服务器请求分配IP地址,并获得IP地址租约到期时间。

正常情况下,dhclient进程会定期向DHCP服务器更新租约到期时间,以确保实例IP地址的可用性,如下图:

图2 正常情况

当用户误操作停止了NetworkManager服务,并清理了dhclient进程时,会导致ECS实例无法自动更新IP地址的续租到期时间。当租约到期后,ECS实例的IP地址会被释放,导致网络不通。

解决方案

  1. 远程登录ECS实例。
  2. 执行以下命令,重启NetworkManager服务,并设置为开启自启动。

    systemctl restart NetworkManager

    systemctl enable NetworkManager

  3. 执行以下命令,查看NetworkManager服务状态。

    systemctl status NetworkManager

    图3 查看NetworkManager服务状态
  4. 执行以下命令,查看网络状态。

    ip ad

    图4 查看网络状态

    若出现如图4所示结果,表示ECS实例的网络恢复正常。

附录

常见操作系统的默认网络服务配置,建议不修改,直接采用默认值。

表1 常见操作系统的默认网络服务配置

操作系统

网络服务

是否内置DHCP功能

CentOS 6

Network

否,有单独的dhclient进程

CentOS 7

NetworkManager

否,有单独的dhclient进程

CentOS 8

NetworkManager

Ubuntu 16.04

NetworkManager

否,有单独的dhclient进程

Ubuntu 18.04

NetworkManager

否,有单独的dhclient进程

Ubuntu 20.04

NetworkManager

Ubuntu 22.04

NetworkManager