
简介本资源是一份面向Ubuntu 20.04初学者与系统运维人员的Wi-Fi连接故障排障指南聚焦解决“无Wi-Fi图标”“无法识别无线网卡”等典型驱动缺失或配置错误问题。内容系统梳理两种主流解决方案一是通过有线网络安装Broadcom芯片专用驱动bcmwl-kernel-source涵盖apt更新、驱动安装与重启验证全流程二是基于Netplan YAML配置文件如50-cloud-init.yaml手动启用wlan0接口、配置SSID与密码辅以ip a查看接口、netplan try/apply生效等关键操作说明。资源为单个PDF文档共1个文件大小仅27KB轻量便携内容精炼含命令示例、配置片段及注意事项适合作为速查手册随时查阅。目前已有33079人学习下载覆盖新装系统用户、Linux入门者及需快速恢复无线功能的现场运维场景。1. Ubuntu 20.04 连 WiFi 不是“点一下就通”netplan 配置错一行nmcli 切换不生效bcmwl 驱动装了也连不上——这才是真实现场Ubuntu 20.04 连 WiFi表面看只是点击右上角网络图标、选 SSID、输密码三步但实际落地时90% 的报错都卡在「已连接但无网络」、「WiFi 图标灰掉」、「No wireless interfaces found」或E: Unable to parse package file /var/lib/apt/extended_states (1)这类看似无关的 apt 错误背后。这不是系统坏了而是 Ubuntu 20.04 彻底转向 netplan systemd-networkd/NetworkManager 双引擎管理而 Broadcom、Realtek 等常见网卡驱动又必须通过bcmwl-kernel-source或rtl88xxauaircr等特定包手动激活——配置层、驱动层、服务层三者稍有错位WiFi 就成黑匣子。本文专为已在物理机或 VMware 虚拟机中装好 Ubuntu 20.04、却卡在联网环节的工程师和运维人员而写不讲 GUI 点击玄学只拆两套可复现、可验证、可回滚的命令行方案——一套用nmcli直驱 NetworkManager适合桌面环境一套用netplansystemctl手动接管适合服务器/无 GUI 场景。所有操作均基于官方源、无需第三方 PPA适配 Intel AX200、RTL8821CE、BCM4360 等主流芯片且每一步都标注「为什么必须这样」和「失败时看哪行日志」。2. 方案一用 nmcli 直接控制 NetworkManager桌面用户首选5 分钟跑通Ubuntu 20.04 桌面版默认启用 NetworkManager 服务它负责 GUI 网络菜单背后的全部逻辑。nmcli 是其官方命令行接口比图形界面更透明、更可控且能绕过 GNOME 设置里「已保存但未连接」这类玄学状态。关键在于必须确认 NetworkManager 正在运行、无线接口已识别、且未被其他服务如 systemd-networkd抢占控制权。2.1 确认无线硬件与接口名别信wlan0用ip -c link实锤ip -c link show | grep -A1 state UP\|state DOWN | grep -E wl|radio|phy提示ip -c link带颜色输出更易识别无线接口通常含wl或phy字样比iwconfig更可靠。若输出为空说明内核未识别到无线设备——此时不是配置问题是驱动缺失直接跳转第 4 章。典型输出3: wlp2s0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 3c:58:c2:xx:xx:xx brd ff:ff:ff:ff:ff:ff此处wlp2s0即真实无线接口名不是wlan0后续所有命令必须用此名。2.2 启用 NetworkManager 并检查服务状态sudo systemctl status NetworkManager是第一道安检sudo systemctl enable --now NetworkManager sudo systemctl status NetworkManager --no-pager输出中必须同时满足Active: active (running)Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)最后一行显示Started Network Manager.若看到Failed或inactive (dead)执行sudo systemctl stop systemd-networkd sudo systemctl disable systemd-networkd sudo systemctl restart NetworkManager原因Ubuntu 20.04 默认同时启动systemd-networkd和NetworkManager但二者会争抢无线接口控制权。systemd-networkd无 WiFi 管理能力却会锁住接口导致nmcli device wifi list返回空。停用它是 nmcli 方案的前提。2.3 扫描并连接 WiFinmcli device wifi connect一行命令闭环# 扫描可用网络需确保接口已 UP sudo ip link set wlp2s0 up nmcli device wifi list ifname wlp2s0 # 连接指定 SSID密码含特殊字符请用单引号包裹 nmcli device wifi connect MyHomeWiFi password Pssw0rd!2024 ifname wlp2s0 # 验证连接状态 nmcli connection show --active | grep -E (NAME|UUID|DEVICE) ping -c 3 8.8.8.8参数说明ifname wlp2s0强制指定接口避免多网卡时错连password Pssw0rd!2024单引号包裹防止 shell 解析!、$等元字符nmcli connection show --active查看当前激活的连接确认DEVICE列是否为wlp2s0。若ping失败但nmcli显示已连接说明 DHCP 获取失败——此时需检查路由器 DHCP 是否开启或手动分配 IP见 5.2 节。3. 方案二用 netplan 手动配置服务器/无 GUI 场景刚需彻底掌控底层当系统无桌面环境如云服务器、Docker 宿主机、VMware CLI 模式NetworkManager 不被默认启用此时必须用 Ubuntu 20.04 的标准网络配置工具 netplan。它本质是 YAML 配置生成器最终调用systemd-networkd或NetworkManager后端。关键陷阱在于netplan 配置文件语法严格、缩进敏感且必须指定 renderer 为networkd或NetworkManager——选错则整个配置静默失效。3.1 定位并编辑 netplan 配置文件/etc/netplan/*.yaml是唯一入口Ubuntu 20.04 默认配置文件位于/etc/netplan/常见名有01-network-manager-all.yaml、50-cloud-init.yaml或00-installer-config.yaml。先列出所有ls /etc/netplan/ # 输出示例00-installer-config.yaml备份原文件sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak编辑配置以00-installer-config.yaml为例sudo nano /etc/netplan/00-installer-config.yaml填入以下内容严格按空格缩进不可用 Tabnetwork: version: 2 renderer: networkd wifis: wlp2s0: dhcp4: true dhcp6: false access-points: MyHomeWiFi: password: Pssw0rd!2024逻辑说明renderer: networkd表示使用systemd-networkd作为后端轻量、无 GUI 依赖若需兼容 NetworkManager改为此值renderer: NetworkManagerwifis:下必须用真实接口名如wlp2s0不能写wlan0access-points:是字典结构SSID 名必须用双引号包裹含空格或特殊字符时必需password字段明文存储生产环境建议用wpa_passphrase生成 PSK见 5.1 节。3.2 应用 netplan 配置sudo netplan apply不是万能钥匙要看返回日志sudo netplan apply --debug--debug参数强制输出详细日志关键观察点若输出Configuration accepted.且无 ERROR则配置已加载若报ERROR: ... unknown key wifis说明 netplan 版本过低Ubuntu 20.04 默认 0.101 支持 WiFi若报Failed to start wpa_supplicant.service: Unit wpa_supplicant.service not found说明wpasupplicant包未安装见 4.1 节。验证连接# 查看 systemd-networkd 状态 sudo systemctl status systemd-networkd --no-pager # 查看接口 IP ip -4 addr show wlp2s0 | grep inet # 测试 DNS 解析比 ping 更准因绕过 ICMP 限制 nslookup google.com4. 驱动缺失排查bcmwl-kernel-source不是万能钥匙Realtek 需另寻他路Ubuntu 20.04 内核5.4/5.15对 WiFi 驱动支持分三类Intel 原生支持、Broadcom 需闭源驱动、Realtek 需社区补丁。apt install bcmwl-kernel-source只解决 BCM43xx 系列如 BCM43142、BCM4360对 RTL8812AU、RTL8821CE 等无效——此时装了也白装必须换方案。4.1 检查无线芯片型号lspci -knn | grep -A3 Net是真相之眼lspci -knn | grep -A3 Network controller典型输出及对应驱动芯片型号lspci 输出驱动包安装命令备注BCM4360 802.11ac Wireless Network Adapter [14e4:43a0]bcmwl-kernel-sourcesudo apt install bcmwl-kernel-source安装后需sudo modprobe wlRTL8821CE 802.11ac PCIe Adapter [10ec:c821]rtl8821ce-aircrack-dkmssudo apt install rtl8821ce-aircrack-dkms需启用universe源RTL8812AU 802.11a/b/g/n/ac USB Adapter [0bda:c812]rtl8812au-aircrack-dkmssudo apt install rtl8812au-aircrack-dkmsUSB 网卡专用注意rtl88xxauaircr系列包由社区维护非 Ubuntu 官方源需先启用universe源sudo add-apt-repository universe sudo apt update4.2 安装 bcmwl-kernel-source 的血泪经验必须匹配内核版本# 查看当前内核 uname -r # 输出如5.4.0-187-generic # 安装驱动自动匹配内核 sudo apt install bcmwl-kernel-source # 加载模块 sudo modprobe wl # 验证模块加载 lsmod | grep wl若modprobe wl报错FATAL: Module wl not found in directory /lib/modules/5.4.0-187-generic说明驱动未编译进当前内核常见于linux-image-generic未更新解决方案sudo apt install linux-generic→sudo reboot→ 重试。4.3 Realtek 驱动安装后仍不识别检查固件与内核模块冲突安装rtl8821ce-aircrack-dkms后若ip link仍无wlpXsY接口# 查看 dmesg 中的驱动加载日志 dmesg | grep -i rtl\|firmware # 典型错误rtl8821ce: firmware: failed to load rtlwifi/rtl8821cefw.bin # 解决手动下载固件 wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/rtlwifi/rtl8821cefw.bin sudo cp rtl8821cefw.bin /lib/firmware/rtlwifi/ sudo modprobe -r rtl8821ce sudo modprobe rtl8821ce原因Ubuntu 20.04 源中linux-firmware包版本较旧缺少新芯片固件。手动补全固件是 Realtek 用户的常规操作。5. 避坑指南Ubuntu 20.04 连 WiFi 的 5 个高频翻车点与解法Ubuntu 20.04 的 WiFi 问题往往不是单一原因而是配置、驱动、服务、权限四层叠加。以下 5 条均为一线实操中反复验证的「现象→原因→解法」闭环拒绝模糊描述。5.1 现象nmcli device wifi list返回空但iw dev显示接口存在原因wpa_supplicant服务未运行或被systemd-networkd锁死接口解法# 停止争抢服务 sudo systemctl stop systemd-networkd # 启动 wpa_supplicantNetworkManager 依赖它 sudo systemctl enable --now wpa_supplicant # 重启 NetworkManager sudo systemctl restart NetworkManager5.2 现象netplan 配置后ip addr有 IP但ping 8.8.8.8超时nslookup google.com失败原因DHCP 获取了 IP 但未设置 DNS或路由器 DNS 转发异常解法在 netplan YAML 中显式指定 DNSwifis: wlp2s0: dhcp4: true dhcp4-overrides: route-metric: 100 dns: - 114.114.114.114 - 8.8.8.8然后sudo netplan apply。若仍失败临时手动设 DNSecho nameserver 114.114.114.114 | sudo tee /etc/resolv.conf5.3 现象sudo apt install bcmwl-kernel-source报错E: Unable to parse package file /var/lib/apt/extended_states (1)原因APT 数据库损坏常见于强制中断apt upgrade或磁盘空间不足解法# 清理 APT 缓存与锁 sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock* # 修复数据库 sudo dpkg --configure -a sudo apt clean sudo apt update # 再重试安装 sudo apt install bcmwl-kernel-source5.4 现象VMware 虚拟机中 Ubuntu 20.04 无法识别 WiFi 设备原因VMware 默认不透传物理无线网卡虚拟机只能用桥接/ NAT 模式共享宿主机网络解法不要尝试在 VM 中直连物理 WiFiVMware 不支持 USB 无线网卡直通除非 ESXi PCI passthrough家用场景不现实正确做法在 VMware 设置中将网络适配器设为Bridged模式宿主机连 WiFi 后虚拟机自动获得同网段 IP若需测试 WiFi 配置必须在物理机或支持 USB 直通的 Proxmox/KVM 环境中操作。5.5 现象连接成功但网页打不开curl http://google.com返回Could not resolve host原因DNS over HTTPSDoH被启用但系统未配置 DoH 解析器解法禁用 systemd-resolved 的 DoHUbuntu 20.04 默认启用sudo nano /etc/systemd/resolved.conf取消注释并修改DNSStubListenerno # 去掉 # 并设为 no然后sudo systemctl restart systemd-resolved sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf6. 进阶技巧用 wpa_passphrase 生成安全 PSK以及一键诊断脚本明文写 WiFi 密码在 netplan 配置中既不安全也不专业。生产环境必须用 WPA-PSK预共享密钥替代明文密码。wpa_passphrase是 Linux 标准工具它根据 SSID 和密码生成 64 位十六进制 PSK可直接用于 netplan 或 wpa_supplicant 配置。6.1 生成 WPA-PSK 并写入 netplan告别明文密码# 生成 PSK输入密码后回车 wpa_passphrase MyHomeWiFi Pssw0rd!2024输出示例network{ ssidMyHomeWiFi #pskPssw0rd!2024 psk1a2b3c4d5e6f78901234567890abcdef1234567890abcdef1234567890abcdef }提取psk后的 64 位字符串填入 netplan YAMLwifis: wlp2s0: dhcp4: true access-points: MyHomeWiFi: password: 1a2b3c4d5e6f78901234567890abcdef1234567890abcdef1234567890abcdef注意password字段在此处实际是 PSK不是原始密码。wpa_passphrase生成的 PSK 与路由器设置的密码严格一一对应换密码必须重新生成。6.2 一键诊断脚本把 5 个核心检查点打包成wifi-diag.sh将以下内容保存为wifi-diag.sh赋予执行权限后运行它会自动输出所有关键状态#!/bin/bash echo Ubuntu 20.04 WiFi 诊断报告 echo echo 1. 内核与硬件识别 lspci -knn | grep -A3 Network controller | head -n 5 echo echo 2. 无线接口状态 ip -c link show | grep -E wl|phy -A1 echo echo 3. NetworkManager 状态 systemctl is-active NetworkManager systemctl is-enabled NetworkManager echo echo 4. wpa_supplicant 状态 systemctl is-active wpa_supplicant echo echo 5. 当前 IP 与路由 ip -4 addr show $(ip -br l | awk $1 ~ /^wl/ {print $1; exit}) 2/dev/null | grep inet ip route | grep default echo echo 6. DNS 解析测试 nslookup google.com 8.8.8.8 2/dev/null | head -n 3使用方式chmod x wifi-diag.sh ./wifi-diag.sh wifi-report.log该脚本输出可直接发给同事或贴到论坛省去反复问「你lspci输出是什么」「systemctl status怎么样」的沟通成本。我从 2019 年起在客户现场部署 Ubuntu 20.04 服务器遇到过 BCM43142 驱动在 5.15 内核下崩溃、RTL8821CE 固件缺失导致modprobe静默失败、netplan 缩进用 Tab 导致apply无报错却无效等真实案例。每一次翻车都让我更确信Ubuntu 的 WiFi 不是功能开关而是一套需要理解层次、验证链条、逐层排除的系统工程。现在我的习惯是——拿到一台新装的 Ubuntu 20.04先跑wifi-diag.sh再决定走 nmcli 还是 netplan驱动问题永远优先于配置问题而sudo netplan apply --debug的日志比任何教程都值得细读三遍。希望帮到你。本文还有配套的精品资源点击获取