nmcli修改连接后必须down/up才生效,仅modify只写入配置不应用;需先nmcli connection down再up,否则仍用旧DHCP地址;连接名非网卡名,须用nmcli connection show确认。

nmcli 修改连接后必须 down/up 才生效
用 nmcli connection modify 改完地址、网关、DNS 和 ipv4.method manual,配置只是写进连接定义里,并不自动应用。必须显式执行 nmcli connection down "ens33" 再 nmcli connection up "ens33",否则旧 DHCP 地址还在用。
常见错误:只改不重启连接,ip addr show 看到的还是老 IP,ping 网关失败却以为是配置写错了。
- 连接名不是网卡名(比如
ens33),而是nmcli connection show列出的名称,常见如"Wired connection 1"或"System ens33" - 如果 down/up 报错
No suitable device found for this connection,说明网卡物理未就绪或驱动异常,先检查ip link show ens33的状态是否为UP -
nmcli connection up失败时,用journalctl -u NetworkManager --since "1 minute ago"查具体原因
netplan apply 不等于 reload 配置文件
sudo netplan apply 会解析 YAML、生成后端配置(如 systemd-networkd 或 NetworkManager 的 runtime config),再触发重载——它不读取旧缓存,也不跳过语法校验。一旦 YAML 缩进错、冒号漏、列表格式不对,就会直接报错退出,IP 一个都不会配。
典型坑点:
-
addresses必须是列表形式:addresses: [192.168.1.100/24],写成addresses: 192.168.1.100/24会解析失败 -
renderer值只能是networkd或NetworkManager,大小写敏感,写成networkmanager无效 - 修改完文件后忘记
sudo权限保存,导致netplan apply读的是旧内容
临时用 ip addr add 但别指望它持久
ip addr add 192.168.1.100/24 dev eth0 立刻生效,适合调试或应急,但它完全绕过网络管理服务,重启即丢,且不会自动加路由或 DNS。
如果你只运行这一条命令:
- 缺默认路由:得额外补
ip route add default via 192.168.1.1 - 缺 DNS:
/etc/resolv.conf不变,ping google.com会卡住 - NetworkManager 可能检测到冲突,几秒后自动覆盖掉你加的地址
所以除非明确知道在做什么,否则别把它当“配置静态 IP”的正经手段。
/etc/network/interfaces 在 Ubuntu Server 上仍有效但有前提
Ubuntu 22.04+ 默认启用 Netplan,但如果你手动装了 ifupdown 并禁用了 Netplan(比如删了 /etc/netplan/*.yaml),那 /etc/network/interfaces 就接管了。
关键条件:
-
systemctl is-enabled networking返回enabled,否则systemctl restart networking没反应 - 网卡段必须以
auto eth0开头,且iface eth0 inet static后紧跟address、netmask、gateway -
dns-nameservers行不能缩进,也不能写成dns或nameserver
注意:Ubuntu Desktop 默认不启用 networking 服务,强行 systemctl restart networking 会失败,此时必须用 Netplan 或 nmcli。


















