☰
Ubuntu 20.04 WiFi连接全攻略:图形界面与netplan命令行配置及驱动排错
2026/10/4 3:00:18 网站建设 项目流程

简介:这份PDF文档面向刚安装Ubuntu 20.04却遇到无法连接Wi-Fi、系统托盘缺少无线图标的用户,尤其适合Linux入门者与运维初学者排查网卡驱动缺失或网络配置错误的问题。资源包共1个PDF文件,大小约27KB,内容紧凑,便于在终端旁对照查阅。文档围绕两种解决思路展开:一是通过有线联网后更新软件源并安装Broadcom无线网卡驱动,二是借助Netplan的YAML配置文件手动声明wlan0的DHCP与接入点信息,并给出netplan try与apply的验证方式。读者可据此快速判断问题出在驱动层还是配置层,掌握从ip a查看网卡状态、定位配置文件到重启网络服务的完整排错路径。目前已有33077人学习下载,适合需要低成本恢复无线网络的Ubuntu新手参考。

1. Ubuntu 20.04 连 WiFi 这件事,为什么有人两分钟搞定有人折腾一晚上

装完 Ubuntu 20.04 桌面版,右上角网络图标里空空如也,只有「有线连接」和「网络设置」,压根看不到 WiFi 选项——这是很多人第一次装完系统后最抓狂的场景。同一台机器,有人开机就能连上,有人翻遍论坛改了半天配置还是不行,差别往往不在运气,而在你走的是哪条路:是图形界面点两下,还是命令行用 netplan 写配置。这篇笔记就把这两条路都讲透,顺带把驱动、netplan、apt 这几个绕不开的环节串起来。

适合谁看:刚装完 Ubuntu 20.04 发现没有 WiFi 选项的新手,以及想搞清楚 netplan 配置逻辑、不想每次都靠重启碰运气的熟手。核心就两件事——图形界面连和命令行连,但真正卡人的从来不是「怎么点」,而是网卡驱动没装、netplan 配置写错、NetworkManager 和 netplan 打架这些底层问题。下面按「先确认硬件 → 图形界面 → 命令行 → 排错」的顺序推。

2. 动手之前:先搞清楚你的无线网卡到底被认出来没有

很多人一上来就急着点图标、敲命令,结果方向全错。连 WiFi 的第一步不是连,是确认系统到底认没认出来你这块无线网卡。认出来了,后面就是配置问题;没认出来,那就是驱动问题,再怎么点也没用。

2.1 用三条命令确认网卡状态

打开终端,依次跑下面几条命令,看清楚输出再往下走。

# 列出所有网络接口,看有没有 wlan0 / wlp 开头的无线接口 ip link show # 查看 PCI 设备里有没有无线网卡,以及它用的驱动 lspci -knn | grep -iA3 net # 查看内核有没有加载无线相关模块 lsmod | grep -i -E "iwlwifi|ath|rtl|mt76"

ip link show里如果出现wlan0、wlp3s0这类以wl开头的接口,说明网卡已经被内核识别,驱动基本没问题,可以直接跳到第 3 章。如果只有lo和enp/eth开头的有线接口,那就要看lspci的输出。

lspci -knn | grep -iA3 net会列出网络控制器,重点看两行:一行是设备型号(比如Intel Corporation Wireless-AC 9560),另一行是Kernel driver in use:。如果这一行是空的,或者显示Kernel modules:后面没有已加载的模块,那就是驱动没装上,这才是你「没有 WiFi 选项」的真正原因。

lsmod那条是辅助确认,常见无线驱动模块有iwlwifi(Intel)、ath10k/ath11k(高通)、rtl8xxxu/rtw88(Realtek)、mt76(联发科)。模块在,接口一般就在。

2.2 驱动没装怎么办:两条常见路径

确认是驱动问题后,分两种情况处理。

第一种,网卡型号比较新,Ubuntu 20.04 自带的 5.4 内核驱动太老。这种情况常见做法是升级内核,或者装厂商提供的驱动包。升级内核可以用sudo apt install linux-generic-hwe-20.04,它会拉一个更新的 HWE 内核,重启后新驱动往往就带上了。

第二种,需要额外固件。Intel 网卡经常缺iwlwifi的固件文件,Realtek 的某些型号需要firmware-realtek。可以先用有线网或者手机 USB 共享网络临时联网,然后:

# 更新软件源并安装常见无线固件 sudo apt update sudo apt install linux-firmware # 如果是 Realtek 特定型号,可能需要额外固件包 sudo apt install firmware-realtek

装完linux-firmware后重启,再跑一遍ip link show,看wlan0有没有冒出来。这一步是很多教程会跳过的地方,但恰恰是「没有 WiFi 选项」最常见的根因。

提示:如果连有线网都没有,可以用手机开 USB 网络共享,Ubuntu 20.04 一般能直接识别,临时解决联网问题再装驱动。

3. 方法一:图形界面连 WiFi,适合绝大多数桌面用户

网卡认出来了,接口也在,那图形界面这条路是最省事的。Ubuntu 20.04 桌面版默认用 NetworkManager 管理网络,右上角那个网络图标就是入口。但这里有个前提——NetworkManager 得是启用状态,而且没被 netplan 的配置覆盖掉。

3.1 确认 NetworkManager 在跑

先确认服务状态,别对着一个没启动的服务点半天。

# 查看 NetworkManager 服务状态 systemctl status NetworkManager # 如果没启动,启动并设为开机自启 sudo systemctl enable --now NetworkManager

systemctl status输出里看到active (running)就对了。如果是inactive或者failed,先enable --now拉起来。这一步做完,右上角图标应该就能正常显示可用网络列表。

3.2 点图标连接的完整流程和常见卡点

流程本身不复杂:点右上角网络图标 → 选「Wi-Fi 设置」或直接在下拉里选你的 SSID → 输入密码 → 连接。但有几个卡点值得说清楚。

第一,如果下拉列表里压根没有「Wi-Fi」这一项,只有「有线」和「网络设置」,说明 NetworkManager 没接管无线设备。这时候去/etc/netplan/目录看看有没有配置文件把无线网卡写成了静态配置,netplan 和 NetworkManager 同时管一块网卡会打架。

第二,如果能看到 SSID 但连不上,先确认密码没输错,再看是不是 5GHz 频段的问题。有些老网卡只支持 2.4GHz,路由器如果只开了 5GHz 就会搜不到或者连不上。这种情况进路由器后台把 2.4GHz 打开。

第三,连上了但上不了网,多半是 DNS 或路由问题,跟 WiFi 连接本身无关。可以ping 8.8.8.8测试,能通说明是 DNS,改/etc/resolv.conf或者 NetworkManager 的 DNS 设置即可。

图形界面这条路的好处是改完即时生效,不用重启,适合日常使用。但如果你是在服务器版或者最小化安装的 Ubuntu 20.04 上,没有桌面环境,那就只能走第 4 章的 netplan 路线。

4. 方法二:用 netplan 命令行连 WiFi,服务器和最小安装的必经之路

Ubuntu 从 17.10 开始用 netplan 作为网络配置的统一入口,20.04 延续了这个设计。netplan 本身不直接管网络,它是个「配置生成器」——读 YAML 文件,然后根据renderer字段决定把配置交给 NetworkManager 还是 systemd-networkd 去执行。理解这一点,很多「改了没生效」的问题就说得通了。

4.1 netplan 配置文件的结构和关键字段

配置文件放在/etc/netplan/下,通常叫01-network-manager-all.yaml或者50-cloud-init.yaml,文件名不重要,重要的是内容和权限。先看一个连 WiFi 的最小配置:

# /etc/netplan/01-wifi.yaml network: version: 2 renderer: networkd wifis: wlan0: dhcp4: true access-points: "你的WiFi名称": password: "你的WiFi密码"

逐字段说清楚。version: 2是 netplan 的配置版本,20.04 固定写 2。renderer决定谁来执行,写networkd就用 systemd-networkd,写NetworkManager就交给 NetworkManager。服务器场景一般用networkd,桌面场景如果 NetworkManager 在跑,写NetworkManager更省事。

wifis下面是无线接口名,必须和ip link show里看到的接口名完全一致,是wlan0还是wlp3s0要照抄。dhcp4: true表示用 DHCP 自动获取 IP。access-points里写 SSID,注意 SSID 和密码都要用引号包起来,SSID 里有空格或特殊字符时尤其重要。

4.2 写配置、改权限、应用、验证四步走

配置写完不是直接生效,netplan 对文件权限有要求,权限不对会直接报错拒绝加载。

# 第一步:创建配置文件,文件名按自己习惯来 sudo nano /etc/netplan/01-wifi.yaml # 第二步:改权限,netplan 要求配置文件不能被其他用户读 sudo chmod 600 /etc/netplan/01-wifi.yaml # 第三步:先试运行,看有没有语法错误 sudo netplan try # 第四步:确认无误后正式应用 sudo netplan apply

netplan try是个很实用的命令,它会临时应用配置并给你 120 秒确认时间,如果配置有问题导致断网,时间到了会自动回滚。这是避免「改完配置 SSH 直接掉线」的后悔药,服务器上尤其要用。

netplan apply是正式生效。执行完用下面几条命令验证:

# 看接口有没有拿到 IP ip addr show wlan0 # 看路由表有没有默认网关 ip route show # 测试连通性 ping -c 4 8.8.8.8

ip addr show wlan0里如果看到inet开头的 IPv4 地址,说明 DHCP 成功了。ip route里要有default via那一行,否则就算有 IP 也上不了外网。

4.3 renderer 选 networkd 还是 NetworkManager

这是最容易踩坑的地方。同一块无线网卡,如果 netplan 里写renderer: networkd,但系统里 NetworkManager 也在跑并且想管这块网卡,两者会互相抢,表现就是「配置写了但连不上」或者「连上一会儿又断」。

判断方法很简单:桌面版默认 NetworkManager 在管,那就把 renderer 写成NetworkManager,让 netplan 只做配置下发,实际连接还是 NetworkManager 处理。服务器版没有桌面,NetworkManager 通常没装或者没启用,那就用networkd。

# 查看当前哪块网卡被谁管着 nmcli device status

nmcli device status输出里,DEVICE列是接口名,STATE列是状态,CONNECTION列显示当前连接。如果无线网卡显示unmanaged,说明 NetworkManager 没接管它,这时候要么改 netplan 的 renderer,要么在 NetworkManager 配置里把它标记为 managed。

5. 连不上时的排查顺序:从现象倒推原因

WiFi 连不上,现象就那么几种,但原因可能横跨驱动、配置、服务三层。与其乱试,不如按固定顺序排查,每一步都能排除掉一批可能。

5.1 现象一:根本没有 WiFi 选项

这是最高频的问题。排查顺序:先ip link show看有没有wl开头的接口。没有接口 → 驱动或固件问题,回到第 2 章装linux-firmware或升级内核。有接口但图标里没 WiFi → NetworkManager 没接管,systemctl status NetworkManager看服务,nmcli device status看是不是unmanaged。

还有一种情况是rfkill把无线给软禁用了,尤其是笔记本上有物理 WiFi 开关或者功能键。跑一下:

# 查看无线设备是否被 rfkill 禁用 rfkill list # 如果有 Soft blocked: yes,解除 sudo rfkill unblock wifi

rfkill list会列出phy0之类的无线设备,Soft blocked: yes表示软件层面禁用了,Hard blocked: yes表示物理开关关了,后者得去按笔记本上的 WiFi 键。

5.2 现象二:能看到 SSID 但连不上

能看到 SSID 说明驱动和扫描都正常,问题在认证或配置。先确认密码,再确认加密方式。netplan 配置里如果路由器用的是 WPA3,老版本 wpa_supplicant 可能不支持,改成 WPA2 混合模式试试。

另一个常见原因是 SSID 里有中文或特殊字符,netplan 的 YAML 解析对引号很敏感。SSID 和密码一律用双引号包起来,SSID 里有反斜杠或引号要转义。

5.3 现象三:连上了但上不了网

ip addr有 IP,ping 8.8.8.8不通,多半是路由或网关问题。ip route看有没有default via。没有的话,检查 netplan 里dhcp4是不是true,或者路由器 DHCP 池是不是满了。

ping 8.8.8.8通但域名解析不了,是 DNS 问题。netplan 里可以显式指定:

network: version: 2 renderer: networkd wifis: wlan0: dhcp4: true access-points: "MyWiFi": password: "mypassword" nameservers: addresses: [223.5.5.5, 119.29.29.29]

nameservers字段加在接口层级下,addresses里写 DNS 服务器地址。改完netplan apply生效。

6. 避坑与常见问题:五条血泪经验

这一章全是实际踩过的坑,每条按「现象 → 原因 → 解决」写,照着对号入座能省不少时间。

坑一:改了 netplan 配置,netplan apply报权限错误。现象是执行sudo netplan apply后提示Permissions for /etc/netplan/xxx.yaml are too open。原因是 netplan 要求配置文件权限必须是 600,其他用户可读会拒绝加载。解决就是sudo chmod 600 /etc/netplan/xxx.yaml,再重新 apply。这个坑在新手用nano创建文件时特别常见,因为默认权限是 644。

坑二:netplan 和 NetworkManager 同时管一块网卡,连上就断。现象是 WiFi 能连上,但过一会儿自动断开,或者重启后配置丢失。原因是 netplan 的 renderer 写成了networkd,但桌面环境里 NetworkManager 也在跑并试图接管同一块网卡,两者反复争夺控制权。解决是统一 renderer:桌面版写NetworkManager,服务器版确保 NetworkManager 没在跑,或者用nmcli device set wlan0 managed no让 NetworkManager 放手。

坑三:SSID 或密码里有特殊字符,YAML 解析失败。现象是netplan try直接报 YAML 语法错误,或者配置看起来对但连不上。原因是 YAML 对冒号、井号、引号敏感,SSID 里带这些字符没加引号就会被当成语法。解决是 SSID 和密码一律用双引号包裹,密码里有双引号就用单引号包外层,或者用转义。

坑四:升级内核后无线驱动反而没了。现象是原本能用的 WiFi,升级内核重启后消失了。原因是新内核可能没带对应的驱动模块,或者 DKMS 模块没跟着重新编译。解决是重启时在 GRUB 里选旧内核进系统,然后sudo apt install linux-generic-hwe-20.04装 HWE 内核,或者重新安装对应的 DKMS 驱动包。别急着删旧内核,那是你的后悔药。

坑五:rfkill软禁用导致怎么配都不生效。现象是驱动正常、配置正确、NetworkManager 也在跑,但就是搜不到任何 WiFi。原因是无线被rfkill软禁用了,可能是之前误触了功能键,或者某个电源管理脚本干的。解决是rfkill list确认,sudo rfkill unblock wifi解除,然后systemctl restart NetworkManager。这个坑最隐蔽,因为所有配置看起来都没问题。

7. 让 WiFi 配置可复现:一个我常用的验证脚本和习惯

折腾完能连上只是第一步,真正省心的是让这套配置可复现、可验证。我自己的习惯是每次配完 WiFi,跑一个固定的小脚本把关键状态打出来存档,下次换机器或者重装系统直接对照,不用凭记忆猜。

#!/bin/bash # wifi-check.sh - 一键输出无线网络关键状态 echo "===== 无线接口 =====" ip link show | grep -E "^[0-9]+: wl" || echo "未发现无线接口" echo "===== 驱动模块 =====" lsmod | grep -i -E "iwlwifi|ath|rtl|mt76" || echo "未加载常见无线驱动" echo "===== rfkill 状态 =====" rfkill list echo "===== NetworkManager 设备 =====" nmcli device status 2>/dev/null || echo "NetworkManager 未运行" echo "===== IP 与路由 =====" ip addr show | grep -A2 "wl" ip route show | grep default || echo "无默认路由" echo "===== 连通性 =====" ping -c 2 -W 2 8.8.8.8 >/dev/null 2>&1 && echo "外网可达" || echo "外网不可达"

这个脚本的价值在于把「驱动 → 接口 → rfkill → 管理服务 → IP → 路由 → 连通性」这条链路一次性打出来,哪一环断了肉眼可见。我一般会把它放在~/bin/下,配完网络跑一遍,输出存成文本,下次出问题直接对比。

参数上没什么需要调的,ping -c 2 -W 2是发两个包、每个等 2 秒,避免卡太久。nmcli device status后面加了2>/dev/null是因为没装 NetworkManager 时会报错,重定向掉更干净。

再补一个进阶技巧:如果你经常在多台机器上配 WiFi,可以把 netplan 配置模板化,SSID 和密码用变量替换,配合envsubst生成最终文件。这样换环境时只改变量,不用手改 YAML,减少手抖写错引号的概率。

# 用环境变量生成 netplan 配置 export WIFI_SSID="MyWiFi" export WIFI_PASS="MyPassword" envsubst < wifi-template.yaml | sudo tee /etc/netplan/01-wifi.yaml >/dev/null sudo chmod 600 /etc/netplan/01-wifi.yaml sudo netplan apply

模板里把 SSID 和密码写成$WIFI_SSID和$WIFI_PASS,envsubst负责替换。这个做法在批量部署时特别顺手,也避免了每次手动改配置时漏掉引号。

最后说个我自己的教训:刚接触 netplan 那会儿,改完配置直接netplan apply,结果 SSH 断了自己还不知道,只能去机房接显示器。后来养成习惯,服务器上永远先netplan try,桌面版才直接 apply。这个习惯帮我省了至少三次跑机房的时间。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询