先运行 ip -br a 和 ip route | grep default 确认网卡名、默认网关及 dhcp 状态,再通过 cat /etc/resolv.conf、netplan、nmcli 或 ifcfg- 文件判断当前网络管理机制,明确 renderer 和活跃服务后再配置。

怎么确认当前网卡名和网络环境
别急着改配置,先看清系统用的是什么网卡、走哪条路。运行 ip -br a 或 ip addr,找状态为 UP 的有线接口,常见名是 ens33、enp0s3、eth0——注意不是 lo 或带 @ 的虚拟接口。
同时看一眼当前是不是 DHCP 获取的 IP:ip route | grep default 能看到网关,再查对应接口有没有 dhcp 字样(比如 dhclient -v ens33 会报错或显示租约);cat /etc/resolv.conf 看 DNS 是否由 NetworkManager 或 systemd-resolved 动态写入——这决定了你该用哪套配置机制。
- 如果输出里有
renderer: networkd或renderer: NetworkManager,说明系统在用 Netplan,优先走/etc/netplan/ - 如果
ls /etc/sysconfig/network-scripts/ifcfg-*有文件,且systemctl is-active network是active,大概率是 RHEL/CentOS 系风格 - 如果
nmcli connection show有输出,且systemctl is-active NetworkManager是active,说明 NM 在管,nmcli最稳
Ubuntu/Debian 用 netplan 配置静态IP失败的典型原因
Netplan 不是“改完就生效”,它只是声明,真正干活的是后端(systemd-networkd 或 NetworkManager)。最常踩的坑是 YAML 格式错误和 renderer 不匹配。
编辑 /etc/netplan/*.yaml 后,必须用 sudo netplan apply;若报错,先跑 sudo netplan --debug apply 看具体哪行缩进或键名错了——YAML 只认空格,Tab 会导致解析失败;addresses 必须是列表([192.168.1.100/24] 或换行加 -),gateway4 不能写成 gateway;renderer 值必须和实际启用的服务一致(比如设了 renderer: NetworkManager,但 systemctl is-active NetworkManager 是 inactive,那就白配)。
-
renderer: networkd→ 后端是systemd-networkd,需确保服务已启用:sudo systemctl enable --now systemd-networkd -
renderer: NetworkManager→ 后端是NetworkManager,不能同时开systemd-networkd,否则冲突 - DNS 写法必须是
nameservers: {addresses: [8.8.8.8, 114.114.114.114]},漏掉addresses:键会静默失效
CentOS/RHEL/Fedora 中 ifcfg- 文件配完不生效
这类系统默认靠 network 服务(systemd 下叫 network.service)读取 /etc/sysconfig/network-scripts/ifcfg-*。常见失效点不在 IP 本身,而在服务依赖和字段语义。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
检查 ONBOOT=yes ——这是开机自启开关,设成 no 就算重启也不会拉起;BOOTPROTO=static(或 none)必须明确,dhcp 和 bootp 都不行;GATEWAY 只能写一个,且必须和 IPADDR 在同一子网;DNS1/DNS2 是给 network 服务用的,但最终是否写入 /etc/resolv.conf 还要看 PEERDNS=yes 是否开启(默认是)。
- 改完必须执行
sudo systemctl restart network,systemctl restart NetworkManager没用,两者互斥 - 如果
systemctl status network报 “Failed to start LSB: Bring up/down networking”,大概率是ifcfg-文件里拼写错误(如IPADDR0多了个 0)或路径不对 - 重启后
ip a show eth0能看到地址,但ping 192.168.1.1不通?先ip route看默认路由是否存在,再cat /etc/resolv.conf确认 DNS 是否被覆盖
nmcli 配静态IP后连接反复断开
nmcli 是实时生效的,但“生效”不等于“稳定”。问题往往出在连接名识别错误、IPv6 干扰、或 NM 与底层工具抢资源。
运行 nmcli connection show --active 看当前激活的连接名(比如 "Wired connection 1" 或 "System ens33"),别直接抄教程里的默认名;改完必须 nmcli connection down "xxx" && nmcli connection up "xxx",只 modify 不 up 是不会应用的;如果机器同时开了 systemd-networkd,NM 会拒绝管理接口,得先 sudo systemctl stop systemd-networkd && sudo systemctl disable systemd-networkd。
- IPv6 默认开启,即使你没配,也可能触发重复地址检测(DAD)导致短暂失联,加一句
nmcli connection modify "xxx" ipv6.method ignore更干净 - DNS 设置要用逗号分隔(
"8.8.8.8,114.114.114.114"),空格分隔会被当成单个服务器名而解析失败 - 改完立刻
nmcli device show ens33 | grep IP4,比ip a更准——它显示的是 NM 实际分配并下发的地址
真正麻烦的从来不是“怎么写配置”,而是“谁在读这个配置”。不同发行版、不同版本、甚至同一系统里多套网络服务共存,会让一个 ip addr add 命令瞬间被覆盖。动手前花两分钟确认渲染器和活跃服务,比重装系统省时间。










