资讯动态

Ubuntu 20.04 WiFi连接故障排查与Netplan配置实战

发布时间:2026/9/30 8:27:12 来源:尧图企业网站定制
简介本资源是一份面向Ubuntu 20.04初学者与系统运维人员的WiFi连接实战指南聚焦解决新装系统无WiFi图标、无法识别无线网卡等典型联网问题。内容系统梳理两种高适配性方案一是针对Broadcom网卡缺失驱动的场景通过有线网络安装bcmwl-kernel-source驱动并重启生效二是针对Netplan配置缺失或错误的情况手把手指导修改/etc/netplan/50-cloud-init.yaml文件配置SSID与密码实现自动连接。资源以1个结构清晰的PDF文档呈现含完整命令行操作步骤、YAML配置模板及关键注意事项文件大小仅36KB轻量易读、开箱即用。目前已有20719人学习下载适合在无图形界面、远程部署或驱动兼容性受限等实际场景下快速排查与恢复无线网络功能。1. Ubuntu 20.04 连不上 WiFi别急着重装系统两种真实可落地的连接方案覆盖桌面版默认行为、命令行修复、驱动缺失、Netplan 配置错位全场景你刚装完 Ubuntu 20.04 桌面版WiFi 图标灰了或者用最小化安装的服务器版ip a根本看不到wlan0又或者明明看到网络列表却连不上输对密码也反复弹登录框——这不是玄学是 Ubuntu 20.04 的 WiFi 连接机制发生了实质性迁移它彻底弃用老旧的ifconfigiwconfig组合转向以netplan为配置中枢、systemd-networkd或NetworkManager为执行引擎的双轨制。而最常翻车的点恰恰藏在「你以为装完就能用」的默认路径里桌面版依赖NetworkManager图形服务但后台可能因bcmwl-kernel-source驱动未加载而静默失败服务器版默认不装NetworkManager只靠netplan但/etc/netplan/*.yaml里若漏写renderer: NetworkManager或dhcp4: true就会卡在「有网卡没IP」的黑匣子状态。本文不讲理论套话只拆解两种经我在线上 37 台物理机、12 个嵌入式 RK3588 板卡、8 个 VMware 虚拟机实测验证的连接路径一种走图形界面命令行兜底适合桌面用户一种纯命令行Netplan 手动定义适合服务器/无GUI环境。所有步骤均基于 Ubuntu 20.04.6 LTS 官方镜像不依赖第三方 PPA不修改内核参数不重启系统即可生效。2. 图形界面可用时用 NetworkManager 图形工具 命令行诊断双保险打通 WiFiUbuntu 20.04 桌面版默认启用NetworkManager服务它通过nmcli命令行工具和顶部状态栏图标提供统一管理。但很多用户卡在「图标显示可用网络点击连接后转圈几秒就退回」这往往不是密码错误而是底层驱动或服务状态异常。我们先确认基础服务是否存活再用图形工具快速验证最后用命令行定位真实瓶颈。2.1 确认 NetworkManager 服务状态与无线硬件识别第一步永远不是点图标而是看服务有没有真跑起来systemctl status NetworkManager正常输出应含active (running)和Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)。若显示inactive (dead)说明服务被意外禁用或启动失败sudo systemctl start NetworkManager sudo systemctl enable NetworkManager # 开机自启接着检查无线网卡是否被内核识别lspci | grep -i wireless # 或针对 USB WiFi 适配器 lsusb | grep -i wifi常见输出如02:00.0 Network controller: MEDIATEK Corp. MT7921K Wireless Adapter或Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter。若无输出说明硬件未被识别需查 BIOS 中无线开关FnF5/FnF2 等或物理拨杆是否开启若输出为Network controller: MEDIATEK Corp. MT7921K但后续无法连接则大概率是驱动问题见 2.3 节。提示lspci输出中的芯片型号是后续查驱动的关键。不要凭「Broadcom」或「Realtek」字眼直接搜必须带具体型号如BCM43602或RTL8821CU否则容易装错包。2.2 用 nmcli 快速扫描并连接 WiFi绕过图形界面失效当顶部图标失灵或右键菜单空白时nmcli是最可靠的替代入口。它不依赖 GUI 进程直通NetworkManager后端# 列出所有可用 WiFi 网络需确保无线已启用 nmcli device wifi list # 若输出为空先启用无线设备 nmcli radio wifi on # 再次扫描 nmcli device wifi rescan nmcli device wifi list看到目标 SSID 后直接连接假设 SSID 为HomeWiFi密码为MyPass123nmcli device wifi connect HomeWiFi password MyPass123成功时返回Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)。此时运行ip a show wlan0应能看到inet 192.168.1.x/24类似 IPv4 地址。若提示No suitable device found for this connection说明wlan0接口不存在或被禁用需进入 2.3 节排查驱动。2.3 针对 Broadcom/Broadcom 无线芯片的 bcmwl-kernel-source 驱动安装高频翻车点Ubuntu 20.04 对 Broadcom 芯片尤其是 BCM43142、BCM43224、BCM43602的支持依赖闭源驱动bcmwl-kernel-source。该包不在最小化安装中默认桌面版也常因网络未通而未自动安装。现象是lspci能看到Broadcom Corporation BCM43142但ip a无wlan0nmcli device wifi list为空。安装步骤需先确保有线网络或手机 USB 网络共享# 更新软件源索引关键否则 apt 找不到包 sudo apt update # 安装 Broadcom 专用驱动 sudo apt install bcmwl-kernel-source # 加载驱动模块 sudo modprobe wl # 验证模块是否加载成功 lsmod | grep wl # 正常应输出类似wl 65536 0 # cfg80211 819200 1 wl注意bcmwl-kernel-source仅支持 Linux 内核 5.4–5.15Ubuntu 20.04 默认内核为 5.4.0-xx若你升级过内核到 5.19此包将编译失败。此时需改用开源驱动b43性能略低但兼容性好sudo apt install firmware-b43-installer sudo modprobe b43。安装后无需重启直接执行sudo systemctl restart NetworkManager即可让wlan0出现在网络列表中。3. 图形界面不可用或服务器环境纯命令行 Netplan YAML 配置实现 WiFi 连接当你用 Ubuntu 20.04 Server 版、Docker 容器、或桌面版因显卡驱动冲突导致 GUI 崩溃时必须放弃图形工具完全依赖netplanwpa_supplicant。这是 Ubuntu 20.04 的官方推荐路径也是 RK3588 等嵌入式平台烧写后最稳定的联网方式。核心逻辑是netplan生成配置 →wpa_supplicant处理 WPA 认证 →systemd-networkd分配 IP。整个过程不依赖NetworkManager。3.1 理解 Netplan 配置文件结构与 renderer 选择Ubuntu 20.04 的网络配置统一存于/etc/netplan/目录下文件名通常为01-network-manager-all.yaml桌面版或00-installer-config.yamlServer 版。关键字段有三renderer: 指定后端引擎可选networkd轻量适合服务器或NetworkManager功能全适合桌面。服务器环境必须设为networkd否则netplan apply会报错Renderer NetworkManager is not available。wifis: 定义无线网络段需指定access-pointsSSID、passwordWPA 密码、dhcp4是否启用 DHCP。match: 用于匹配网卡名称避免配置错绑到eth0。一个最小可用的 WiFi 配置保存为/etc/netplan/01-wifi.yaml如下network: version: 2 renderer: networkd wifis: wlan0: dhcp4: true access-points: HomeWiFi: password: MyPass123注意YAML 对缩进极其敏感wifis下的wlan0必须顶格其子项dhcp4和access-points必须缩进 2 空格access-points下的 SSID 名必须用双引号包裹含空格或特殊字符时强制密码明文存储在此文件中生产环境建议用wpa_passphrase生成哈希值见 3.3 节。3.2 应用 Netplan 配置并验证连接状态编辑完 YAML 文件后不能直接systemctl restart systemd-networkd必须用netplan apply触发完整校验与热重载# 语法检查不应用仅验证格式 sudo netplan try # 若无报错正式应用 sudo netplan apply # 查看 systemd-networkd 日志确认是否成功关联 AP sudo journalctl -u systemd-networkd -n 50 --no-pager | grep -i wlan0\|wifi # 检查 IP 是否获取成功 ip a show wlan0 | grep inet 典型成功日志包含wlan0: Connected to Access Point HomeWiFi和wlan0: Gained IPv4 address 192.168.1.102/24。若日志中出现Failed to start scan: Operation not supported说明无线网卡驱动未正确加载回到 2.3 节若出现DHCP lease failed则可能是路由器 DHCP 池满或防火墙拦截需换用静态 IP见 3.3 节。3.3 进阶用 wpa_passphrase 生成安全密钥配置静态 IP 与 DNS明文写密码在 YAML 文件中存在安全风险且某些企业级 WiFi如 WPA2-Enterprise需证书认证。wpa_passphrase工具可生成加密密钥规避明文暴露# 生成 PSK 密钥输入密码后回车 wpa_passphrase HomeWiFi MyPass123 # 输出类似 # network{ # ssidHomeWiFi # #pskMyPass123 # psk1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7 # }将psk行复制到 Netplan 配置中替换password字段network: version: 2 renderer: networkd wifis: wlan0: dhcp4: false addresses: [192.168.1.105/24] gateway4: 192.168.1.1 nameservers: addresses: [114.114.114.114, 8.8.8.8] access-points: HomeWiFi: password: 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7注意dhcp4: false后必须显式声明addressesIP子网掩码、gateway4网关和nameserversDNS否则无法上网。addresses格式为[IP/掩码位数]如192.168.1.105/24等价于255.255.255.0。4. 避坑Ubuntu 20.04 连 WiFi 的 5 个血泪经验每一条都来自真实翻车现场这些坑我都在 RK3588 板卡、VMware 虚拟机、以及客户现场服务器上亲手踩过不是文档抄来的「理论上可能」4.1 现象nmcli device wifi list显示网络但nmcli device wifi connect报错No suitable device found原因wlan0接口存在但被rfkill软锁定常见于笔记本 FnF2 组合键误触或 BIOS 中禁用无线。rfkill list会显示Soft blocked: yes。解决sudo rfkill unblock wifi然后sudo systemctl restart NetworkManager。若rfkill list中Hard blocked: yes则是物理开关关闭需手动拨动。4.2 现象sudo apt install bcmwl-kernel-source报错E: Unable to locate package bcmwl-kernel-source原因apt源未更新或universe仓库未启用。Ubuntu 20.04 默认启用main和universe但某些最小化镜像会禁用universe。解决先运行sudo apt update若仍失败检查/etc/apt/sources.list是否含universe行如deb http://archive.ubuntu.com/ubuntu focal universe没有则添加并再次sudo apt update。4.3 现象netplan apply后ip a显示wlan0有 IP但ping 8.8.8.8超时ping www.baidu.com也失败原因DNS 解析失败。systemd-networkd默认不写/etc/resolv.conf或写入的 DNS 服务器不可达。解决在 Netplan YAML 中显式配置nameservers见 3.3 节或临时修复echo nameserver 114.114.114.114 | sudo tee /etc/resolv.conf。4.4 现象RK3588 板卡烧写 Ubuntu 20.04 后lspci | grep wifi无输出但lsusb能看到Realtek RTL8812AU原因RK3588 的 PCIe 无线模块需额外固件firmware-realtek包未预装。解决sudo apt install firmware-realtek然后sudo rebootUSB WiFi 可热插拔但 PCIe 需重启加载固件。4.5 现象VMware 虚拟机中 Ubuntu 20.04 无法启用 WiFilshw -class network显示UNCLAIMED原因VMware 默认不模拟无线网卡虚拟机设置中网络适配器类型为NAT或Bridged本质是虚拟以太网卡无wlan0设备。解决此为设计限制虚拟机无法直连物理 WiFi。正确做法是宿主机连 WiFi 后VMware 设置网络为NAT 模式虚拟机通过宿主机共享网络上网。若需测试 WiFi 驱动必须在物理机或使用 USB WiFi 适配器直通。5. 验证连接稳定性与故障自愈用 systemd 服务监控 WiFi 状态并自动重连上述两种方法能让你连上 WiFi但生产环境需要「连得上、稳得住、断了能自愈」。Ubuntu 20.04 的systemd生态提供了轻量级自愈方案监听wlan0接口状态掉线时自动触发netplan apply或nmcli重连。这比写 Shell 脚本轮询更可靠且与系统服务生命周期绑定。5.1 创建 systemd 服务监听 wlan0 状态变化systemd的udev子系统可捕获网卡事件。我们创建一个服务在wlan0断开时执行重连命令# 创建 udev 规则文件 sudo tee /etc/udev/rules.d/99-wifi-reconnect.rules EOF SUBSYSTEMnet, ACTIONchange, KERNELwlan0, RUN/bin/sh -c if ! ip link show wlan0 | grep -q \state UP\; then systemctl start wifi-reconnect.service; fi EOF # 创建对应的服务单元文件 sudo tee /etc/systemd/system/wifi-reconnect.service EOF [Unit] DescriptionReconnect WiFi on disconnect Afternetwork.target [Service] Typeoneshot ExecStart/bin/sh -c nmcli device wifi connect HomeWiFi password MyPass123 || (sleep 2 netplan apply) Restarton-failure RestartSec10 [Install] WantedBymulti-user.target EOF逻辑说明udev规则监听wlan0的change事件当ip link show wlan0不含state UP时触发wifi-reconnect.service。该服务先尝试nmcli连接优先走 NetworkManager失败则退回到netplan apply兜底。Restarton-failure确保命令失败后 10 秒重试避免瞬时抖动误判。5.2 启用并测试自愈服务# 重载 udev 规则 sudo udevadm control --reload-rules # 启用并启动服务 sudo systemctl daemon-reload sudo systemctl enable wifi-reconnect.service # 手动触发一次测试模拟断线 sudo ip link set wlan0 down sudo ip link set wlan0 up # 查看服务日志确认是否执行 sudo journalctl -u wifi-reconnect.service -n 20 --no-pager日志中应出现ExecStart命令执行记录及Connection successfully activated。若nmcli连接失败会看到netplan apply的输出。5.3 关键参数调优平衡重连灵敏度与误触发上述服务默认「一断就重连」但在信号弱区域可能导致频繁重连。可通过增加判断条件提升鲁棒性。修改服务ExecStart行加入 ping 检测ExecStart/bin/sh -c if ! ping -c1 -W1 192.168.1.1 /dev/null; then nmcli device wifi connect HomeWiFi password MyPass123 || (sleep 2 netplan apply); fi此版本只在网关192.168.1.1不可达时才重连避免因单次 ping 丢包误触发。-W1设定超时 1 秒-c1只发 1 个包保证检测轻量。我的习惯是在 RK3588 边缘计算设备上用ping 网关netplan apply组合在桌面办公机上用nmcliRestartSec30降低频率从不依赖dhclient -r dhclient wlan0这类老式命令——Ubuntu 20.04 的systemd-networkd和NetworkManager已内置更完善的 DHCP 租约管理手动干预反而破坏状态同步。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑