Linux配置静态IP永久生效的关键是先确认网络管理机制:运行ip -br a查网卡名、ip route | grep default查网关、cat /etc/resolv.conf看DNS来源,再通过ls /etc/netplan/、nmcli connection show或ls /etc/sysconfig/network-scripts/ifcfg-*判断后端服务,最后按Netplan、NetworkManager或network-scripts对应方式配置并验证。

Linux 配置静态 IP 并永久生效,关键不是“怎么写命令”,而是先搞清系统用哪套网络管理机制。硬套教程、改错文件、重启无效,八成是没对上后端服务。下面分三步讲清楚:确认机制 → 选对方法 → 避开高频坑。
先确认你系统用的是什么网络管理器
别跳过这步,90% 的配置失败源于此。在终端依次运行:
ip -br a —— 找出真实网卡名(比如 ens33、enp0s3,不是 lo 或 docker0)
ip route | grep default —— 看当前网关和走哪个接口(如 via 192.168.1.1 dev ens33)
cat /etc/resolv.conf | head -2 —— 如果开头有 # Generated by NetworkManager 或 # systemd-resolved,说明 DNS 是动态注入的,别直接改这个文件
再查后端服务:
- ls /etc/netplan/ 有 .yaml 文件 → Ubuntu 18.04+、Debian 11+、CentOS Stream 默认走 Netplan
- nmcli connection show 有输出,且 systemctl is-active NetworkManager 返回 active → 优先用 nmcli
- ls /etc/sysconfig/network-scripts/ifcfg-* 存在 → RHEL/CentOS/Fedora/Alibaba Cloud Linux 风格
- cat /etc/network/interfaces 有 iface 块 → Debian/Ubuntu Server 传统 ifupdown
按机制选对应配置方式
● Netplan(Ubuntu 18.04+ / Debian 11+)
编辑 /etc/netplan/*.yaml(如 01-network-manager-all.yaml),确保缩进全用空格(Tab 会解析失败):
- 把 dhcp4: true 改为 dhcp4: false
- 添加 addresses: [192.168.1.100/24](必须是列表格式,不能写成单个字符串)
- 加路由:routes: [{to: default, via: 192.168.1.1}]
- DNS 写全:nameservers: {addresses: [8.8.8.8, 114.114.114.114]}(漏掉 addresses: 键,DNS 就不生效)
- 保存后执行:sudo netplan apply(加 --debug 可定位语法错误)
● NetworkManager(桌面版 Ubuntu/Fedora/RHEL 启用 NM 时)
不用改任何文件,用 nmcli 统一管理:
- 查连接名:nmcli connection show(常见名如 "System ens33" 或 "Wired connection 1")
- 设为手动模式:nmcli connection modify "System ens33" ipv4.method manual
- 必须一次性配齐:ipv4.addresses 192.168.1.100/24、ipv4.gateway 192.168.1.1、ipv4.dns "8.8.8.8 114.114.114.114"
- 最后激活:nmcli connection down "System ens33" && nmcli connection up "System ens33"
● network-scripts(RHEL/CentOS 7+/Rocky Linux 禁用 NM 时)
编辑 /etc/sysconfig/network-scripts/ifcfg-ens33:
- BOOTPROTO=static(别留 dhcp,也别写 none)
- ONBOOT=yes(最常被忽略!否则重启网卡根本不启)
- IPADDR=192.168.1.100(纯 IP,不带 /24)
- NETMASK=255.255.255.0(不是 prefix,不是 24)
- GATEWAY=192.168.1.1(仅一个,多个要走 ip route)
- DNS1=8.8.8.8 和 DNS2=114.114.114.114(写这里比改 resolv.conf 更稳)
- 重启服务:sudo systemctl restart network(若 NM 正在运行,先 nmcli connection reload 再 down/up 连接)
验证与排错要点
配置完别急着 reboot,快速验证三件事:
- ip -br a 看 IP 是否已出现在网卡上
- ip route | grep default 确认网关路由存在且接口正确
- ping -c3 192.168.1.1 → 通网关;ping -c3 www.baidu.com → 通外网(不通先看 DNS 是否生效)
常见静默失败原因:
– Netplan YAML 缩进用了 Tab 或 addresses 写成字符串
– nmcli 只改了 method 没设 gateway/dns,NM 自动 fallback 回 DHCP
– ifcfg 文件里 ONBOOT=no 或 BOOTPROTO 仍为 dhcp
– 改了 ifcfg 却没重启 network 服务,或 NM 正在运行却没 reload 连接











