最稳妥方法是直接修改配置文件:编辑/etc/sysconfig/network-scripts/ifcfg-*中的NETMASK或PREFIX(二者选一),确保BOOTPROTO=static且ONBOOT=yes,并处理NetworkManager冲突。

直接改配置文件最稳妥
CentOS 7 及之后版本(包括 CentOS Stream)修改子网掩码,核心就是改 /etc/sysconfig/network-scripts/ifcfg-* 文件里的 NETMASK 或 PREFIX。临时用 ip addr 加的掩码重启就丢,生产环境别这么干。
操作前先确认网卡名:ip -br a 或 ls /sys/class/net/,常见如 ens33、eth0;再备份原文件:cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
-
NETMASK=255.255.255.0:写点分十进制格式,兼容性最好,所有 CentOS 版本都认 -
PREFIX=24:等价于NETMASK=255.255.255.0,更简洁,但某些老旧脚本可能忽略它(尤其带自定义网络服务的场景) - 二者不能同时存在,如果都有,
NETMASK优先级更高;删掉其中一个,只留一个 - 改完必须确保
BOOTPROTO=static(或none),否则NETMASK不生效
改完不生效?检查这三处
常见现象是改了文件、重启了 network 服务,ip addr show 显示的掩码还是旧的。大概率卡在这几个地方:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
-
ONBOOT=yes缺失或为no:网卡根本没被拉起来,自然不读配置 - 网卡名写错:比如文件叫
ifcfg-ens33,但实际接口是enp0s3,systemctl restart network根本不会碰它 - NetworkManager 和 network 服务冲突:CentOS 7 默认启用了
NetworkManager,它会接管接口并覆盖/etc/sysconfig/network-scripts/的静态配置。查状态:systemctl status NetworkManager;若启用,要么停掉它(systemctl stop NetworkManager && systemctl disable NetworkManager),要么改用nmtui配置(它会自动同步到脚本)
临时改掩码只用于调试
测试用可以跳过配置文件,用 ip 命令即时生效:
- 加一个带新掩码的地址:
ip addr add 192.168.10.100/24 dev ens33(注意是 CIDR 格式,不是点分十进制) - 删掉旧地址(如果不想共存):
ip addr del 192.168.10.100/25 dev ens33 - 别用
ifconfig:它在 CentOS 7+ 已被废弃,不更新内核路由表,容易导致连通性异常 - 这种改法重启网卡或服务器就失效,仅限快速验证
为什么 service network restart 有时没反应
CentOS 7+ 默认使用 systemd,service network restart 实际调用的是 systemctl restart network,但它依赖 network.service 单元。这个单元在某些最小化安装或容器化环境中可能压根没装,或者被 NetworkManager 抢占了控制权。
- 先确认服务是否存在:
systemctl list-unit-files | grep network,看有没有network.service - 如果不存在,说明系统走的是纯
NetworkManager路线,得用nmtui或nmcli改 - 如果存在但失败,看日志:
journalctl -u network -n 30 --no-pager,常看到 “Ignoring invalid configuration” 这类提示,基本就是配置文件语法错误或参数冲突
真正容易被忽略的是:改掩码不只是改一个数字,它直接影响本地路由表、ARP 行为、甚至防火墙 zone 划分。比如把 /24 改成 /16 后,原来同网段的机器可能突然变“不可达”,因为内核认为它们不在直连网络里了——这不是配置没生效,而是网络逻辑本身变了。

















