Fedora 网络配置:NetworkManager 与 nmcli 实操
Fedora 上配网络不是改 /etc/network/interfaces(那是 Debian 系),也不是手写 ifcfg-*(那是旧版 RHEL)。正路是 NetworkManager,配置落在 keyfile 里。下面是 F45 上的实测。
先看现状:设备与连接是两回事
Section titled “先看现状:设备与连接是两回事”nmcli dev statusnmcli con showDEVICE TYPE STATE CONNECTIONens19 ethernet connected Wired connection 1eth0 ethernet connected cloud-init eth0lo loopback connected (externally) lo
NAME UUID TYPE DEVICEWired connection 1 cf212e00-8e4d-3de6-8857-6c482a96bf14 ethernet ens19cloud-init eth0 1dd9a779-d327-56e1-8454-c65e2556c12c ethernet eth0lo 0bbf4b30-87a7-4515-846a-350b23d9eda8 loopback lo设备(device)是硬件,连接(connection)是配置。一个设备可以套不同连接,一块没配置的网卡在 dev status 里是 disconnected,而 con show 里可能根本没有它。
配置文件的真实位置:
ls /etc/NetworkManager/system-connections/cloud-init-eth0.nmconnectionip -br addrip routelo UNKNOWN 127.0.0.1/8 ::1/128eth0 UP 192.168.2.247/24 fe80::be24:11ff:fe92:6176/64ens19 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 100192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.247 metric 101有两条以上默认路由时,metric 小的优先。双网卡的机器”上不了网”经常是有线网卡抢走了默认路由。

改成静态地址
Section titled “改成静态地址”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 nosudo nmcli con up "Wired connection 1"改回 DHCP:
sudo nmcli con mod "Wired connection 1" ipv4.method autosudo nmcli con up "Wired connection 1"常用改动一览
Section titled “常用改动一览”| 目的 | 命令 |
|---|---|
| 看设备状态 | nmcli dev status |
| 看连接配置 | nmcli con show |
| 改静态地址 | nmcli con mod "<名字>" ipv4.method manual ipv4.addresses … |
| 改回 DHCP | nmcli con mod "<名字>" ipv4.method auto |
| 改 DNS | nmcli 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 <域名> |
DNS 由谁负责
Section titled “DNS 由谁负责”cat /etc/resolv.confresolvectl status | head -8nameserver 127.0.0.53options edns0 trust-adsearch hicyou.de127.0.0.53 是 systemd-resolved 的本地存根——真正的上游 DNS 由 resolved 管理,顺序是:NetworkManager 从连接里拿到 DNS → 交给 resolved → resolved 在 127.0.0.53 应答。
所以手改 /etc/resolv.conf 通常无效:它是被接管的目标。要改 DNS 就改连接:
sudo nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5"sudo nmcli con up "Wired connection 1"只测解析、不测连通:
getent hosts fedoraproject.org连不上时按这个顺序查
Section titled “连不上时按这个顺序查”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 问题,不是”网络不通”。这一条能把大半排查工作砍掉。
- 报错速查 — 网络类报错的原文与处置
- 防火墙 firewalld — 端口放行与区域
- SELinux — 端口类型与布尔值(服务监听新端口时要看)
- 存储与文件系统 — 磁盘与挂载
- 命令速查 — 网络相关命令
- 官方:Configuring IP networking with nmcli