Linux系统中释放DHCP租约最通用的方法是执行sudo dhclient -r <接口名>,该命令向DHCP服务器发送DHCPRELEASE报文并清除本地租约记录,确保IP地址被正确回收。

Linux系统中释放当前网卡占用的DHCP租约,是为了让网卡主动通知DHCP服务器“我不再使用这个IP”,避免IP地址冲突、路由异常或后续无法获取新地址等问题,尤其在切换网络、调试故障或远程维护时必须精准执行。
用dhclient命令释放租约
这是最通用、最底层的方法,适用于所有使用isc-dhcp-client的发行版(Ubuntu、CentOS、Debian、openEuler等)。
第一步:确认正在使用的网络接口名称。运行 ip -br a 或 ls /sys/class/net/,找出带IPv4地址且状态为UP的接口,常见名称如 eth0、ens33、enp0s3、wlan0。
第二步:执行释放命令。假设接口是 ens33,运行:sudo dhclient -r ens33
这一步会向DHCP服务器发送 DHCPRELEASE 报文。如果网络中没有DHCP服务器响应,命令仍会成功退出,但本地租约文件(如 /var/lib/dhcp/dhclient.leases)中的对应记录会被清除,接口IP地址随即消失。
【必须加sudo,否则权限不足无法操作网络栈】
第三步:验证是否已释放。运行 ip addr show ens33 | grep "inet ",输出应为空;若仍有 inet 行,说明释放失败或该接口未走DHCP(比如配置了静态IP)。
用NetworkManager管理连接时的释放方式
如果你的系统启用 NetworkManager(桌面版Ubuntu、Fedora默认开启),直接调用 dhclient 可能被NM接管逻辑覆盖,此时应通过 nmcli 操作。
方法一:断开再重连指定连接nmcli connection down "Wired connection 1" → 等待2秒 → nmcli connection up "Wired connection 1"
注意:连接名称需用双引号包裹,且必须与 nmcli connection show 列出的 NAME 字段完全一致,大小写和空格都不能错。
方法二:仅清空DHCP租约不中断连接(较隐蔽)sudo nmcli device set ens33 managed no → sudo nmcli device set ens33 managed yes
这会触发NM重新初始化接口,等效于释放+重获,但不改变连接启用状态,适合不想断SSH会话的场景。
释放前必查的两个关键点
先运行 ps aux | grep dhclient,确认当前是否有 dhclient 进程在后台运行。如果有多个进程(如同时监听 eth0 和 wlan0),单独对某个接口执行 -r 只影响对应实例,其余不受干扰。
检查租约文件是否存在并可写:ls -l /var/lib/dhcp/dhclient.*.leases。若该目录被挂载为只读(如某些嵌入式或容器环境),dhclient -r 仍会尝试发包,但无法更新本地租约记录,下次获取IP时可能复用过期信息。


















