nmcli配置静态IP本质是修改NetworkManager的连接配置,必须设ipv4.method manual、确认连接名正确且NetworkManager服务运行中,再用单条命令设置addresses/gateway/dns并down/up激活,最后通过nmcli device show和实际连通性验证。

nmcli 配置静态 IP 不是“改个地址就完事”,它本质是修改 NetworkManager 管理的连接配置(connection),不是直接操作网卡设备(device)。没设 ipv4.method manual,其他全白配;连接名写错、NetworkManager 没跑,命令就等于没执行。
确认 NetworkManager 正在运行且目标连接名正确
先看服务有没有真在干活:systemctl is-active NetworkManager 必须输出 active,不是 inactive 或报错。再查当前激活的是哪个连接:nmcli connection show --active。注意:输出的是连接名(如 Wired connection 1 或 ens33),不是设备名(如 eth0 或 enp0s3)。设备名错当连接名,所有 nmcli connection modify 命令都无效。
如果 nmcli connection show --active 没输出,说明没有活跃连接。此时先用 nmcli device connect ens33(把 ens33 换成你的真实设备名)激活设备,NetworkManager 通常会自动生成一个连接。
连接名含空格时,后续所有命令里必须加英文引号,比如 "Wired connection 1" —— 不加引号会报错 No such connection。
一次性设置 ipv4.addresses、gateway、dns 和 method
别分五条命令慢慢敲,容易漏掉关键项。用一条 nmcli connection modify 把所有必要参数塞进去:
nmcli connection modify "Wired connection 1" \ ipv4.addresses "192.168.1.100/24" \ ipv4.gateway "192.168.1.1" \ ipv4.dns "223.5.5.5,119.29.29.29" \ ipv4.method manual
ipv4.addresses 必须带前缀(如 /24),不能写 255.255.255.0,否则报 invalid address;ipv4.dns 多个 DNS 必须用英文逗号分隔,空格或分号会导致只认第一个;ipv4.method manual 是开关,不设它,前面三项全被忽略,仍走 DHCP。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
如果想保留原有 DNS 并追加一个,用 +ipv4.dns:nmcli connection modify "Wired connection 1" +ipv4.dns "1.1.1.1"。
down/up 连接后验证 DNS 是否真正落地
改完只是存进连接定义,不重启连接不会生效:nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"。
验证时别只看 /etc/resolv.conf —— 如果开头没有 # Generated by NetworkManager,说明 DNS 没生效。常见原因有两个:
- 系统同时启用了
systemd-resolved,这时要手动软链:sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf -
ipv4.ignore-auto-dns被误设为yes,导致手动 DNS 被跳过,补一句:nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns no
更直接的验证方式是:nmcli device show ens33 | grep IP4.DNS,这行输出反映 NetworkManager 实际下发到设备的 DNS 值,比 /etc/resolv.conf 更可信。
远程操作时最易断连的坑
用 SSH 远程配网卡,nmcli connection down && up 这一步极可能中断连接。不要分两行执行,必须写成一行加 &&;更稳妥的做法是加个超时保底:nmcli connection down "Wired connection 1" && sleep 2 && nmcli connection up "Wired connection 1"。
另外,ip addr show 只能看 IP 是否绑定成功,ip route | grep default 才能确认网关路由是否写入。DNS 生效与否,最终得靠 ping -c 1 www.baidu.com 或 dig @223.5.5.5 baidu.com +short 实测,光看配置文件没用。

















