nmcli 配静态 IP:Rocky 9 的网络配置与 keyfile 格式
什么时候该用它
Section titled “什么时候该用它”新机器要固定 IP、换网关、加 DNS,或者网络配置「改了不生效」。Rocky 9 的网络由 NetworkManager 管理,nmcli 是它的命令行;配置最终落在 /etc/NetworkManager/system-connections/ 的 keyfile 里。
先理解:连接(connection)与设备(device)
Section titled “先理解:连接(connection)与设备(device)”NetworkManager 把「设备」和「连接配置」分开:网卡是 device,静态 IP/DHCP 是 connection,一个 device 可以挂多个 connection(按优先级/自动连接)。
配置存放在 keyfile 里,权限必须是 600:
-rw------- 1 root root 182 ... enp1s0.nmconnection内容长这样(来自 rockylinux:9 容器里的实际文件,uuid/id 已脱敏):
[connection]id=<id>uuid=<uuid>type=ethernetinterface-name=enp1s0
[ethernet]
[ipv4]method=auto
[ipv6]addr-gen-mode=eui64method=automethod=auto 就是 DHCP;静态 IP 会写成 method=manual 加 address1=...、gateway=...、dns=...。
容器里 nmcli 为什么用不了
Section titled “容器里 nmcli 为什么用不了”nmcli --versionnmcli general statusnmcli tool, version 1.54.3-5.el9_8Error: Could not create NMClient object: Could not connect: No such file or directory.nmcli 本身在,但它要通过 D-Bus 连 NetworkManager 守护进程;容器里没有 systemd 和 NM 服务,所以连不上。下面这些命令需要在真实系统执行(本文标注为「未在本环境实测」)。
配静态 IP(真实系统执行)
Section titled “配静态 IP(真实系统执行)”nmcli connection shownmcli connection add type ethernet ifname enp1s0 con-name static-enp1s0 \ ipv4.method manual ipv4.addresses 192.0.2.10/24 \ ipv4.gateway 192.0.2.1 ipv4.dns "192.0.2.53 1.1.1.1"nmcli connection up static-enp1s0要点:
ipv4.method manual是静态的关键,auto是 DHCP;ipv4.addresses可写多个,逗号分隔;- 改完必须
connection up(或nmcli device reapply)才生效。
nmcli -p connection show static-enp1s0ip -4 addr show enp1s0ip route show defaultcat /etc/resolv.confping -c 2 192.0.2.1检查顺序:连接状态 activated → ip 里有地址 → 默认路由指向网关 → DNS 有 nameserver → 网关能 ping 通。
- 改完不 up:
nmcli connection modify只改配置,不重启连接; - keyfile 手动改坏权限:
600是硬要求,改成 644 后 NM 会忽略该文件; - 同时用 nmcli 和手写 ifcfg:EL9 默认走 keyfile 后端,手写
/etc/sysconfig/network-scripts/ifcfg-*可能根本不生效。
练习:把 DHCP 改成静态并验证
Section titled “练习:把 DHCP 改成静态并验证”前置:一台 Rocky 9 虚拟机,控制台或 SSH 可用(改网络有断连风险,建议用控制台)。
nmcli connection shownmcli connection modify "<现有连接名>" ipv4.method manual \ ipv4.addresses 192.0.2.10/24 ipv4.gateway 192.0.2.1 ipv4.dns 192.0.2.53nmcli connection up "<现有连接名>"检查:
nmcli -f ipv4.method,ipv4.addresses connection show "<连接名>"→manual与目标地址ip -4 addr show→ 地址已生效ip route show default→ 默认路由是192.0.2.1cat /etc/resolv.conf→ 有nameserver 192.0.2.53- 重启后
nmcli connection show --active→ 连接仍为激活
- 防火墙放行:firewall-cmd 放行端口
- 安装后核对:安装后 7 项核对
- 离线装包:离线环境装包