Linux 动态 IP(DHCP)配置经验分享
2026-07-22
基础学习笔记
00

目录

Linux 动态 IP(DHCP)配置经验分享
一、先确认网卡名和当前状态
二、临时动态获取(重启失效,救急首选)
三、永久配置(按发行版 / 版本区分)
1. Debian / Ubuntu 系
旧版(Ubuntu 16.04 及以前、Debian 9 及以前):/etc/network/interfaces
新版(Ubuntu 18.04+ / Debian 10+):Netplan(YAML)
2. RHEL / CentOS 系
CentOS 6 / RHEL 6(传统 ifcfg,网卡名多为 eth0)
CentOS 7 / RHEL 7(ifcfg + NetworkManager 并存,网卡名多为 ens33)
CentOS 8+ / RHEL 8/9/10 / Rocky / Alma(NetworkManager 统一管理)
3. openSUSE / SLES(简要)
四、验证是否拿到地址
五、常见问题排查
六、经验提醒
七、参考资料(来自「Linux运维」知识库)

Linux 动态 IP(DHCP)配置经验分享

本文记录在不同 Linux 发行版上把网卡配置为**动态获取 IP(DHCP)**的几种做法。场景通常是:新装系统联网、临时恢复网络、或内网客户端不想固定地址。这些步骤照着做基本能一次配通,命令均可在终端直接执行。


一、先确认网卡名和当前状态

不同发行版、不同年代的网卡命名不一样(老的是 eth0,新的是 ens33/ens160/enp3s0 等)。动手前先认清楚设备名:

bash
ip addr show # 列出所有网卡和已分配的 IP,推荐 # 或老工具(不一定预装) ifconfig -a

只看网卡状态(是否 UP、是否拿到 IP):

bash
ip link show nmcli device status # 用 NetworkManager 的发行版(CentOS 7+/RHEL/Ubuntu 18.04+)可用

确认要操作的网卡名(下文统一用 <网卡名> 占位,例如 ens33)。


二、临时动态获取(重启失效,救急首选)

适合"现在就要联网、不想改配置文件"的场合。

方式 1:用 ip 先把网卡拉起,再向 DHCP 服务器要地址

bash
sudo ip link set <网卡名> up # 先启用网卡 sudo dhclient <网卡名> # 向 DHCP 服务器请求地址 ip addr show <网卡名> # 确认是否已拿到 inet 地址

方式 2:用 NetworkManager 的 nmcli 临时切到自动获取

bash
sudo nmcli connection modify <连接名或网卡名> ipv4.method auto sudo nmcli connection up <连接名或网卡名>

说明:dhclient 是传统的 DHCP 客户端;现代发行版大多由 NetworkManager 在后台代管 DHCP,所以 nmcliauto 更"正统"。


三、永久配置(按发行版 / 版本区分)

永久配置的核心差异在于配置文件位置和格式。下面按三大系分别给。

1. Debian / Ubuntu 系

旧版(Ubuntu 16.04 及以前、Debian 9 及以前):/etc/network/interfaces

bash
sudo vi /etc/network/interfaces

写入(把 eth0 换成你的网卡名):

ini
auto eth0 iface eth0 inet dhcp

生效:

bash
sudo systemctl restart networking

新版(Ubuntu 18.04+ / Debian 10+):Netplan(YAML)

配置文件在 /etc/netplan/*.yaml(常见文件名 50-cloud-init.yaml01-netcfg.yaml)。动态获取只需 dhcp4: yes

bash
sudo vi /etc/netplan/50-cloud-init.yaml
yaml
network: version: 2 renderer: networkd # 服务器常用 networkd;桌面版用 NetworkManager ethernets: ens33: dhcp4: yes # 开启 IPv4 动态获取 dhcp6: no # 不需要 IPv6 时关掉

注意 YAML 缩进只能用空格、不能用 Tab,冒号后必须有空格。

先验证语法再应用(避免改错直接断网):

bash
sudo netplan try # 限时 120 秒,无误自动保留;有问题回滚 sudo netplan apply # 正式生效

2. RHEL / CentOS 系

CentOS 6 / RHEL 6(传统 ifcfg,网卡名多为 eth0)

bash
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
ini
DEVICE=eth0 BOOTPROTO=dhcp # 关键:dhcp 表示动态获取 ONBOOT=yes # 开机自动激活网卡(最易漏的参数)

生效:

bash
sudo service network restart

CentOS 7 / RHEL 7(ifcfg + NetworkManager 并存,网卡名多为 ens33)

bash
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
ini
TYPE=Ethernet NAME=ens33 DEVICE=ens33 BOOTPROTO=dhcp # 动态获取 ONBOOT=yes

生效(两种任选):

bash
sudo systemctl restart network # 或 sudo ifdown ens33; sudo ifup ens33

CentOS 8+ / RHEL 8/9/10 / Rocky / Alma(NetworkManager 统一管理)

这些版本默认不再生成 ifcfg 文件,推荐直接用 nmcli 命令:

bash
# 把指定连接切到 DHCP 自动获取并立即生效 sudo nmcli connection modify ens33 ipv4.method auto sudo nmcli connection up ens33

如果想用连接名而非网卡名:

bash
nmcli connection show # 先看连接名(NAME 列) sudo nmcli connection modify <连接名> ipv4.method auto sudo nmcli connection up <连接名>

紧急恢复网络(误操作断网、临时拉起一张新网卡用 DHCP):

bash
sudo nmcli connection add type ethernet ifname ens33 ipv4.method auto

直接改底层配置文件的话(文件在 /etc/NetworkManager/system-connections/ens33.nmconnection),把 [ipv4] 段改成:

ini
[ipv4] method=auto

改完必须重载:

bash
sudo nmcli connection reload sudo nmcli connection up ens33

3. openSUSE / SLES(简要)

  • SLES 11/12/15(wicked / ifup 体系):/etc/sysconfig/network/ifcfg-eth0 里写 BOOTPROTO='dhcp',重启用 sudo rcnetwork restart
  • SLES 16(已切 NetworkManager):同 RHEL 8+ 的 nmcli 做法,method=auto

四、验证是否拿到地址

无论哪种方式配置完,都建议逐项确认:

bash
ip addr show <网卡名> # 看是否有 inet 地址(非 127.0.0.1) ip route show # 看 default via 网关是否存在 cat /etc/resolv.conf # 看 DNS(nameserver)是否被 DHCP 正确下发 ping -c 4 8.8.8.8 # 测外网连通 ping -c 4 www.baidu.com # 测 DNS 解析

五、常见问题排查

现象可能原因处理
重启后没拿到 IPONBOOT=no(CentOS 6/7)或网卡未设自动连接ONBOOT=yes / nmcliconnection.autoconnect yes 后重启网络
ip 有地址但 dhclient 报错已有别的 DHCP 客户端占用pkill dhclient 再重试,或直接用 nmcli 管理
能 ping IP 但域名不通DNS 没下发 / /etc/resolv.conf 为空检查 DHCP 服务器是否下发 DNS;或临时 echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
多网卡环境只其中一块拿到 IP另一块没设 ONBOOT/autoconnect按上面方法单独启用
虚拟机桥接拿不到 IP桥接模式 / MAC 绑定问题确认宿主机 DHCP 池;或用 nmcli con add ... ipv4.method auto 拉起

排查顺序建议:网卡 UP 了吗 → 拿到 IP 了吗 → 网关通吗 → DNS 通吗,逐层定位。


六、经验提醒

  • 服务器生产环境慎用 DHCP:DHCP 租约到期后地址可能变化,会导致 SSH 断连、服务访问异常。需要固定地址请改用静态 IP 配置
  • 改永久配置前先备份sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak(Ubuntu);sudo cp ifcfg-ens33 ifcfg-ens33.bak(CentOS)。
  • Ubuntu 优先用 netplan try:它有 120 秒回滚保护,比直接 apply 安全。
  • RHEL 8+ 别再找 ifcfg 文件:那是老习惯,新系统用 nmcli*.nmconnection 文件。

七、参考资料(来自「Linux运维」知识库)

  • 《主流Linux操作系统各版本网卡配置方法汇总》—— 运维网工
  • 《运维新手必看 | 5分钟掌握Linux网络配置命令 nmcli》—— 网络运维刘师傅
  • 《RHEL/SLES/Ubuntu主流Linux发行版网络配置与差异》—— 小飞锅实施运维笔记
  • 《Linux 网络管理速查:ip/ifconfig/Netplan 配置指南》

ai协作,人工编辑

本文作者:张老板

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!