静态IP配不生效主因是BOOTPROTO未设为static、ONBOOT=no或重启命令错误;CentOS 7+需用systemctl restart NetworkManager(启用时)或network(禁用时),并确认网卡名、配置路径及DNS1/DNS2+PEERDNS=yes等关键字段。

静态IP配不生效,八成是 BOOTPROTO 没设对、ONBOOT 为 no,或重启方式错了——CentOS 7 以后 service network restart 已失效,必须用 systemctl restart NetworkManager 或 systemctl restart network(取决于是否启用 NetworkManager)。
确认网卡名和当前配置路径
别直接猜 eth0,现代系统多用 ens33、eno1、enp0s3 这类命名。运行:ip -br a 或 ls /sys/class/net/ 看真实设备名。
对应配置文件一定在:/etc/sysconfig/network-scripts/ifcfg-<em>设备名</em>(RHEL/CentOS)或 /etc/network/interfaces(Ubuntu/Debian)。
修改 ifcfg-* 文件的关键字段(RHEL/CentOS)
用 vi /etc/sysconfig/network-scripts/ifcfg-ens33 编辑,必须确保以下几项明确设置:
-
BOOTPROTO=static或none(二者等效,但static更语义清晰;dhcp会覆盖所有 IP 配置) -
ONBOOT=yes(否则重启后网卡根本不起,这是最常被忽略的点) -
IPADDR=192.168.1.100(不能写成 CIDR 格式,如192.168.1.100/24) -
NETMASK=255.255.255.0(不是PREFIX,也不是子网位数) -
GATEWAY=192.168.1.1(仅一个默认网关,多个需走route或ip route) -
DNS1=8.8.8.8和DNS2=114.114.114.114(写在 ifcfg 文件里,比改/etc/resolv.conf更可靠,因后者可能被 NetworkManager 覆盖)
重启网络服务时选对命令
CentOS 7+ 默认启用 NetworkManager,它会接管网卡管理。若你手动改了 ifcfg 文件但没通知它,配置不会加载:
- 如果启用了
NetworkManager(查systemctl is-active NetworkManager):先nmcli connection reload,再nmcli connection down "System ens33"→nmcli connection up "System ens33"(连接名可用nmcli connection show查) - 如果停用了
NetworkManager,只用传统network服务:运行systemctl restart network(service network restart是兼容别名,但底层已调用 systemctl) - 绝对不要只改文件就
reboot——浪费时间,且掩盖了配置是否真被识别的问题
DNS 不生效?优先检查生效顺序和覆盖逻辑
/etc/resolv.conf 是结果文件,不是源头。它的内容由三者之一生成:
- ifcfg 文件里的
DNS1/DNS2(经 NetworkManager 或 network 服务写入) -
/etc/sysconfig/network-scripts/network-functions中的逻辑(旧版 network 服务) - 手动写死(但会被 NetworkManager 自动清空,除非加
chattr +i /etc/resolv.conf,不推荐)
验证 DNS 是否真正生效:运行 systemd-resolve --status(systemd 系统)或 nmcli dev show | grep DNS,看输出里 DNS 服务器是不是你配的值。如果仍是 127.0.0.1 或空,说明 NetworkManager 没读取到 ifcfg 的 DNS 字段——大概率是 PEERDNS=yes 缺失(RHEL/CentOS 默认需要这个才写 DNS)。


















