最稳方式是直接编辑/etc/sysconfig/network-scripts/ifcfg-*文件,需先用ip -br a或nmcli d确认活跃接口名(如ens33),再修改BOOTPROTO=static、ONBOOT=yes、IPADDR、NETMASK、GATEWAY和DNS1等关键项,最后执行nmcli con down/up生效,避免断连与DNS丢失。

直接改 /etc/sysconfig/network-scripts/ifcfg-* 文件最稳,nmcli 命令容易断连且不保存 DNS,临时用 ip addr add 只能撑到网卡重载。
怎么确认该改哪个 ifcfg- 文件
先跑 ip -br a 或 nmcli d 看活跃接口名(比如 ens33、eth0),别凭印象写 ifcfg-eth0 —— CentOS 7+ 默认用 ens* 命名,写错文件白改。
- 输出里带
UP状态的才是当前生效的物理口 -
lo是环回口,别动它 - 如果看到多个
ens*,用ethtool -i ens33 2>/dev/null | grep bus-info确认哪块是主网卡(尤其在 VMware/VirtualBox 里)
编辑 ifcfg- 文件必须改的关键项
用 vi /etc/sysconfig/network-scripts/ifcfg-ens33 打开后,只动这几行,其余保持原样:
-
BOOTPROTO=static(必须设为static,dhcp或空值会覆盖你填的 IP) -
ONBOOT=yes(设成no会导致重启后网卡压根不启) -
IPADDR=192.168.1.100(填你要的地址,别和网关/其他设备冲突) -
NETMASK=255.255.255.0或PREFIX=24(二者选一,NETMASK兼容性更好) -
GATEWAY=192.168.1.1(只写一个,默认路由走这里) -
DNS1=223.5.5.5(/etc/resolv.conf会被 NetworkManager 覆盖,DNS 必须写进 ifcfg 文件)
别碰 UUID 和 HWADDR —— 改了可能让 NetworkManager 拒绝加载这个连接。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
改完怎么生效不掉线
执行 nmcli con down "System ens33" 再 nmcli con up "System ens33",比 systemctl restart network 更可靠(后者在 CentOS 7+ 上常报错或静默失败)。
- 连接名不一定是
System ens33,用nmcli con show确认真实名称(通常带System前缀) - 如果 Xshell 断开,说明新 IP 不在原网络段——检查
IPADDR和NETMASK是否匹配宿主机 VMnet8 的 DHCP 范围(例如宿主机 NAT 网段是192.168.122.0/24,你却配了10.0.0.100) - 生效后立刻跑
ip route | head -1看默认路由是否指向你填的GATEWAY
为什么 nmcli mod 命令经常失效
因为 nmcli con mod 只改内存里的连接定义,不写入 ifcfg 文件;一旦 NetworkManager 重启或 reload,就退回原始配置。
- 想持久化,必须加
--permanent参数,例如:nmcli con mod "System ens33" ipv4.addresses 192.168.1.100/24 --permanent - 但即使加了
--permanent,DNS 仍不会写进 ifcfg,得手动补ipv4.dns "223.5.5.5"和ipv4.ignore-auto-dns yes - 最省事的方案:别用 nmcli mod,直接编辑 ifcfg 文件 +
nmcli con reload+nmcli con down/up
真正麻烦的不是改 IP,而是改完发现 SSH 连不上、DNS 解析失败、或者重启后变回 DHCP —— 核心就三点:接口名别写错、ONBOOT=yes 别漏、DNS 必须塞进 ifcfg 里。

















