静态ip配置不生效的主因是bootproto未设为static、onboot=no或重启命令错误;须先用ip -br a确认网卡名,再通过systemctl is-active networkmanager判断网络管理器,依此选用nmcli、netplan或ifcfg方式配置,并严格遵循各工具语法与激活流程。

静态 IP 配不生效,八成是 BOOTPROTO 没设对、ONBOOT 为 no,或者重启命令用错了——别改完文件就 reboot,先验证配置是否被系统识别。
确认网卡名和当前网络管理器
别猜 eth0,现代系统多用 ens33、enp0s3、eno1 这类名字。运行:ip -br a 或 ls /sys/class/net/ 看真实设备名。
再查当前谁在管网络:systemctl is-active NetworkManager
返回 active 表示 NetworkManager 在接管;返回 inactive 则走传统 network 服务(常见于 CentOS/RHEL Server)。
nmcli 修改静态 IP(NetworkManager 启用时)
这是桌面版 Ubuntu、Fedora、RHEL 8+ 最稳妥的方式,改完立刻生效,不依赖文件重载顺序。
关键点:
• 连接名不是网卡名,用 nmcli connection show 查,常见如 "Wired connection 1" 或 "System ens33"
• ipv4.addresses 必须带 CIDR(如 192.168.1.100/24),不能只写 IP
• ipv4.method manual 是开关,漏了就还是 DHCP
• DNS 要用英文逗号分隔,且不能有空格:"8.8.8.8,114.114.114.114"
执行顺序示例:nmcli connection modify "Wired connection 1" ipv4.method manualnmcli connection modify "Wired connection 1" ipv4.addresses 192.168.1.100/24nmcli connection modify "Wired connection 1" ipv4.gateway 192.168.1.1nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8,114.114.114.114"nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
Netplan 配置(Ubuntu 17.10+ 默认)
YAML 缩进敏感,addresses 和 gateway4 必须在同一缩进层级,且 renderer 要匹配后端服务(NetworkManager 或 networkd)。
常见坑:
• dhcp4: no 和 addresses: 必须同时存在,只关 DHCP 不加地址,接口会没 IP
• gateway4 不能写成 gateway,否则 netplan apply 报错
• DNS 写法必须是 nameservers: {addresses: [8.8.8.8, 114.114.114.114]},少一层括号或冒号就失效
示例片段:
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
改完运行:
sudo netplan applyifcfg-* 文件配置(RHEL/CentOS 7+ 传统方式)
文件路径固定为 /etc/sysconfig/network-scripts/ifcfg-<em>网卡名</em>,编辑时注意:
• BOOTPROTO=static(不是 none,虽等效但语义易混淆)
• IPADDR 和 NETMASK 分开写,不能用 CIDR 格式
• GATEWAY 只能写一个,多个网关要额外配 route-<em>网卡名</em> 文件
• DNS1/DNS2 写这里比改 /etc/resolv.conf 更可靠,后者常被 NetworkManager 覆盖
• ONBOOT=yes 是硬性要求,设成 no 就算配置全对,开机也不起卡
重启命令取决于 NetworkManager 状态:
若 NetworkManager 活着,先 nmcli connection reload,再 nmcli connection down "System ens33" && nmcli connection up "System ens33"
若已禁用 NetworkManager,才用 systemctl restart network
实际生效前,一定用 ip a 看 IP 是否出现在对应网卡下,再用 ip route 确认默认路由存在,最后 ping -c3 192.168.1.1 和 ping -c3 8.8.8.8 分步验证连通性——跳过这三步,等于没配。











