跳转到内容
搜索 Rocky Linux 文档

    浏览当前文档目录

    nmcli 配静态 IP:Rocky 9 的网络配置与 keyfile 格式

    新机器要固定 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=ethernet
    interface-name=enp1s0
    [ethernet]
    [ipv4]
    method=auto
    [ipv6]
    addr-gen-mode=eui64
    method=auto

    method=auto 就是 DHCP;静态 IP 会写成 method=manual 加 address1=...、gateway=...、dns=...。

    Terminal window
    nmcli --version
    nmcli general status
    nmcli tool, version 1.54.3-5.el9_8
    Error: Could not create NMClient object: Could not connect: No such file or directory.

    nmcli 本身在,但它要通过 D-Bus 连 NetworkManager 守护进程;容器里没有 systemd 和 NM 服务,所以连不上。下面这些命令需要在真实系统执行(本文标注为「未在本环境实测」)。

    Terminal window
    nmcli connection show
    nmcli 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)才生效。
    Terminal window
    nmcli -p connection show static-enp1s0
    ip -4 addr show enp1s0
    ip route show default
    cat /etc/resolv.conf
    ping -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-* 可能根本不生效。

    前置:一台 Rocky 9 虚拟机,控制台或 SSH 可用(改网络有断连风险,建议用控制台)。

    Terminal window
    nmcli connection show
    nmcli connection modify "<现有连接名>" ipv4.method manual \
    ipv4.addresses 192.0.2.10/24 ipv4.gateway 192.0.2.1 ipv4.dns 192.0.2.53
    nmcli connection up "<现有连接名>"

    检查:

    1. nmcli -f ipv4.method,ipv4.addresses connection show "<连接名>" → manual 与目标地址
    2. ip -4 addr show → 地址已生效
    3. ip route show default → 默认路由是 192.0.2.1
    4. cat /etc/resolv.conf → 有 nameserver 192.0.2.53
    5. 重启后 nmcli connection show --active → 连接仍为激活