最常踩的坑是netmask与ipaddr、gateway不在同一子网,导致网络不通;必须确保三者逻辑自洽,推荐用prefix(如prefix=24)替代netmask以避免手误,且prefix优先级高于netmask。

直接改 NETMASK 就行,但必须和 IP、网关在同一个子网里,否则网络不通——这是最常踩的坑。
修改 /etc/sysconfig/network-scripts/ifcfg-<interface></interface> 中的 NETMASK
子网掩码不是独立配置项,它和 IPADDR、GATEWAY 必须逻辑自洽。比如你设了 IPADDR=192.168.157.130,那 NETMASK 就不能乱填:
-
NETMASK=255.255.255.0(即 /24)→ 合法,对应网络号是192.168.157.0,网关192.168.157.2在此范围内 -
NETMASK=255.255.0.0(即 /16)→ 看似能通,但网关192.168.157.2仍属该网段,实际可能引发路由冲突或 DNS 失败 -
NETMASK=255.255.255.240(即 /28)→ 要求网关必须落在192.168.157.128/28这个子网内,否则systemctl restart network后连 ping 都失败
编辑时注意:不要删掉 BOOTPROTO=static,也不要漏掉 ONBOOT=yes,否则重启后配置不生效。
用 PREFIX 替代 NETMASK 更安全
CentOS 7 支持 CIDR 表示法,推荐用 PREFIX(如 PREFIX=24)代替 NETMASK=255.255.255.0:
- 语义更清晰,避免手误输错掩码(比如写成
255.255.255.254) - 与
nmcli和现代工具兼容性更好 - 如果同时写了
NETMASK和PREFIX,PREFIX优先级更高,NETMASK会被忽略
示例:IPADDR=192.168.137.100 + PREFIX=24 → 自动等价于 NETMASK=255.255.255.0,无需手动换算。
service network restart 不生效?检查这三点
改完配置文件,执行 service network restart 或 systemctl restart network 后没反应,大概率是以下问题:
- 网卡名写错:用
ip link show确认真实接口名(如ens33、eth0),别硬套教程里的名字 -
NETWORK或BROADCAST字段值与IPADDR+NETMASK冲突:这两个字段可删,不建议手动填 - NetworkManager 正在接管:运行
systemctl stop NetworkManager再试;若需长期共存,改用nmcli配置而非直接改 ifcfg 文件
子网掩码本身不难改,难的是它牵一发而动全身——IP、网关、DNS、VMware 虚拟网段、甚至宿主机的 VMnet8 设置,全得对得上。改之前先用 ipcalc 或在线子网计算器验证一遍,比反复重启省事得多。











