跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    Fedora 网络配置:NetworkManager 与 nmcli 实操

    Fedora 上配网络不是改 /etc/network/interfaces(那是 Debian 系),也不是手写 ifcfg-*(那是旧版 RHEL)。正路是 NetworkManager,配置落在 keyfile 里。下面是 F45 上的实测。

    先看现状:设备与连接是两回事

    Section titled “先看现状:设备与连接是两回事”
    Terminal window
    nmcli dev status
    nmcli con show
    DEVICE TYPE STATE CONNECTION
    ens19 ethernet connected Wired connection 1
    eth0 ethernet connected cloud-init eth0
    lo loopback connected (externally) lo
    NAME UUID TYPE DEVICE
    Wired connection 1 cf212e00-8e4d-3de6-8857-6c482a96bf14 ethernet ens19
    cloud-init eth0 1dd9a779-d327-56e1-8454-c65e2556c12c ethernet eth0
    lo 0bbf4b30-87a7-4515-846a-350b23d9eda8 loopback lo

    设备(device)是硬件,连接(connection)是配置。一个设备可以套不同连接,一块没配置的网卡在 dev status 里是 disconnected,而 con show 里可能根本没有它。

    配置文件的真实位置:

    Terminal window
    ls /etc/NetworkManager/system-connections/
    cloud-init-eth0.nmconnection
    Terminal window
    ip -br addr
    ip route
    lo UNKNOWN 127.0.0.1/8 ::1/128
    eth0 UP 192.168.2.247/24 fe80::be24:11ff:fe92:6176/64
    ens19 UP 192.168.50.21/24 fe80::be24:11ff:fe5b:3961/64
    default via 192.168.50.1 dev ens19 proto dhcp src 192.168.50.21 metric 100
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.247 metric 101

    有两条以上默认路由时,metric 小的优先。双网卡的机器”上不了网”经常是有线网卡抢走了默认路由。

    F45 上实测 nmcli dev status 列出 ens19、eth0、lo 三个设备与各自的连接名;ip -br addr 显示两条已配置地址

    Terminal window
    sudo nmcli con mod "Wired connection 1" \
    ipv4.method manual \
    ipv4.addresses 192.168.2.60/24 \
    ipv4.gateway 192.168.2.1 \
    ipv4.dns "223.5.5.5 192.168.2.1" \
    ipv4.may-fail no
    sudo nmcli con up "Wired connection 1"

    改回 DHCP:

    Terminal window
    sudo nmcli con mod "Wired connection 1" ipv4.method auto
    sudo nmcli con up "Wired connection 1"
    目的命令
    看设备状态nmcli dev status
    看连接配置nmcli con show
    改静态地址nmcli con mod "<名字>" ipv4.method manual ipv4.addresses …
    改回 DHCPnmcli con mod "<名字>" ipv4.method auto
    改 DNSnmcli con mod "<名字>" ipv4.dns "223.5.5.5"
    让改动生效nmcli con up "<名字>" 或 nmcli dev reapply <设备>
    新建连接nmcli con add type ethernet ifname <设备> con-name <名字>
    删除连接nmcli con delete "<名字>"
    只测解析getent hosts <域名>
    Terminal window
    cat /etc/resolv.conf
    resolvectl status | head -8
    nameserver 127.0.0.53
    options edns0 trust-ad
    search hicyou.de

    127.0.0.53 是 systemd-resolved 的本地存根——真正的上游 DNS 由 resolved 管理,顺序是:NetworkManager 从连接里拿到 DNS → 交给 resolved → resolved 在 127.0.0.53 应答。

    所以手改 /etc/resolv.conf 通常无效:它是被接管的目标。要改 DNS 就改连接:

    Terminal window
    sudo nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5"
    sudo nmcli con up "Wired connection 1"

    只测解析、不测连通:

    Terminal window
    getent hosts fedoraproject.org
    Terminal window
    ip -br link # 1) 网卡起来了吗(UP?)
    ip -br addr # 2) 有地址吗
    ip route # 3) 默认路由指向谁
    ping -c1 <网关IP> # 4) 二层通不通
    ping -c1 223.5.5.5 # 5) 出网通不通(IP 不打域名)
    getent hosts fedoraproject.org # 6) 解析通不通
    ss -tlnp # 7) 本机在听哪些端口

    关键分界在第 5 和第 6 步之间:IP 通但域名不通 = DNS 问题,不是”网络不通”。这一条能把大半排查工作砍掉。