先运行systemctl list-units | grep -E "(NetworkManager|network|systemd-networkd)"确认激活的服务;再查/etc/sysconfig/network-scripts/(传统network)、/etc/netplan/(netplan)或nmcli connection show(NetworkManager)确定配置方式,避免冲突。

直接改配置文件就能生效,但必须确认发行版和网络管理工具——否则改了也白改,甚至断网。
怎么确认当前用的是哪种网络管理方式
Linux 静态 IP 的修改方式完全取决于底层网络服务:是 network-scripts(CentOS 7/8 传统模式)、NetworkManager(RHEL 8+/Ubuntu Desktop),还是 netplan(Ubuntu 18.04+、Debian 11+)。混用会导致配置被覆盖或冲突。
- 运行
systemctl list-units | grep -E "(NetworkManager|network|systemd-networkd)",看哪个 active - 查配置目录:
/etc/sysconfig/network-scripts/存在且有ifcfg-*文件 → 很可能是传统network服务 -
/etc/netplan/*.yaml存在 → 优先走netplan apply -
nmcli connection show能列出连接 → 正在用NetworkManager
CentOS/RHEL 7–8 手动改 ifcfg-xxx 文件
这是最常见也最容易出错的路径。关键不是“改什么”,而是“改完要不要重启服务、怎么重启”。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
BOOTPROTO必须设为static或none(二者等效),不能留dhcp - 必须显式写全:
IPADDR=192.168.1.100、NETMASK=255.255.255.0、GATEWAY=192.168.1.1、DNS1=8.8.8.8 -
ONBOOT=yes缺失会导致开机不启用该接口 - 改完后执行
systemctl restart network(CentOS 7)或nmcli connection reload && nmcli connection down "连接名" && nmcli connection up "连接名"(如果 NetworkManager 管理了该接口) - 别直接
ifconfig ens33 192.168.1.100—— 这种临时改法重启即丢,且可能和配置文件冲突
Ubuntu 20.04+ 用 netplan 修改静态 IP
netplan 不是“编辑完就生效”,它只是生成中间配置,最终靠 systemd-networkd 或 NetworkManager 渲染。YAML 缩进、冒号后空格、列表格式错一个字符就会 netplan apply 失败。
- 先查配置文件:
ls /etc/netplan/,通常是01-network-manager-all.yaml或50-cloud-init.yaml - 把原
dhcp4: true块整个替换成:
ethernets:
ens33:
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
- 注意:
addresses是带 CIDR 的字符串数组;gateway4不是gateway;nameservers下必须嵌套addresses - 执行
sudo netplan apply,失败时看错误提示里具体哪行 YAML 语法不对 - 不要手动改
/etc/resolv.conf—— netplan 会自动管理它,手改会被覆盖
为什么改完 ping 不通网关?三个高频漏点
配置看似正确,但实际不通,往往卡在这些地方:
- 物理网络不匹配:虚拟机用 NAT 模式时,Linux 的 IP 必须和宿主机 VMnet8 的子网一致(比如宿主机 VMnet8 是
192.168.88.0/24,网关192.168.88.2,那 Linux 就得配成192.168.88.3/24,不能写成192.168.1.100) - DNS 写错位置:在
ifcfg-ens33里写了DNS1,但NetworkManager没关,它会忽略这个字段,转而读/etc/resolv.conf或自己的连接设置 - 防火墙拦截:CentOS 7 默认开
firewalld,ping不通可能是 ICMP 被拒,先试curl -I http://192.168.1.1看 TCP 是否通
真正麻烦的不是“怎么写配置”,而是“谁在管这个接口、谁在生成 resolv.conf、谁在响应 ping”。不厘清这层关系,反复改文件只是在碰运气。

















