树莓派的价值有一半在网络里——连上网它才能被远程操作、才能当服务器;网络由 NetworkManager 统一管理(对应三个工具:桌面图标、nmtui 菜单、nmcli 命令),Wi-Fi 连不上十次有八次是国家代码没设;至于蓝牙,桌面点图标或 bluetoothctl 六步,就能把键盘、音箱、手柄接上。
2-4 把系统调顺了,本节把对外的那条线接通。 本节是第二章的收束:买齐(2-1)→ 装好(2-2)→ 点亮(2-3)→ 调顺(2-4)→ 联网(2-5),五步走完,你手上就是一台可以被远程操作的完整小电脑。 本节还是计算机网络课与服务器课的实战验收:IP 地址、SSH、DNS、网关、端口这些词你都在前面学过,这次它们出现在你自己的机器上;1-5 里说的「无头模式」,也在这里真正落地。
一、上网的三种物理方式
| 方式 | 接口名 | 特点 | 建议 |
|---|---|---|---|
| 有线 | eth0 |
最稳、最快、零配置(插上就能用) | 第一次无头启动强烈推荐 |
| 无线 | wlan0 |
方便、不用线;但涉及密码、国家代码等变量 | 熟练后日常使用 |
| USB 网卡/手机共享 | usb0 等 |
应急用(手机开热点共享) | 临时救急 |
一句话判据:调试不通的时候,先插网线。 把「无线」这个变量去掉,问题范围立刻小一半——这和服务器课 9.7 讲的「排障要沿链路缩小范围」是同一套思路。
二、谁来管网络:NetworkManager
关键认知(老教程在这里会把你带偏):
早年的树莓派用
dhcpcd+wpa_supplicant.conf那套机制管网络。从 Bookworm 起,系统改由 NetworkManager 统一管理网络,dhcpcd已经被移除。所以:
- 网上「改
/etc/dhcpcd.conf设静态 IP」的教程——已经失效。- 网上「往 boot 分区放
wpa_supplicant.conf」的教程——已经不是被支持的正路。- 现在正确的工具是
nmcli(命令)和nmtui(文字菜单界面)。
同一个网络,三个入口:
| 入口 | 长相 | 适合 |
|---|---|---|
| 桌面右上角图标 | 点一下看到 Wi-Fi 列表 | 有桌面,最直观 |
nmtui |
蓝底文字菜单(像 raspi-config) | 无头模式但不会敲长命令 |
nmcli |
一行命令 | 熟练后最快、可写脚本 |
三、连 Wi-Fi 的三种姿势
姿势一:桌面点图标(最简单)
点右上角网络图标 → 选你的 Wi-Fi → 输密码 → 连上。就这样,没有坑。
姿势二:nmtui(文字菜单)
sudo nmtui
选「启用连接」→ 选 Wi-Fi → 输入 SSID 与密码。方向键操作,适合 SSH 里用。
姿势三:nmcli(命令,推荐记住)
# 1. 看无线网卡是否就绪
nmcli device status
# 2. 扫描周围 Wi-Fi
nmcli device wifi list
# 3. 连接(把名字和密码换成你的)
sudo nmcli device wifi connect "我的WiFi" password "我的密码"
# 4. 确认结果
nmcli connection show --active
成功的样子:nmcli connection show --active 会列出你刚连上的那条(类型 wifi、设备 wlan0)。
断开与重连:
nmcli connection down "我的WiFi" # 断开
nmcli connection up "我的WiFi" # 重连
nmcli device disconnect wlan0 # 直接断开设备
四、⚠️ Wi-Fi 最大的坑:国家代码
如果你搜不到自家 Wi-Fi,或者能搜到别的却搜不到自己的——第一个要查的就是国家代码。
为什么? 各国对无线频段的开放范围不同(服务器课/网络课 5.15 讲过 2.4G 只有 1/6/11 三个不重叠信道,5G 频段的开放状况各国差别更大)。系统必须知道「我在哪个国家」,才知道该开放哪些信道。
设置方法:
sudo raspi-config
# → 5 Localisation Options → WLAN Country → CN
或者用命令:
sudo raspi-config nonint do_wifi_country CN
症状对照表:
| 症状 | 最可能的原因 |
|---|---|
| 搜不到自己家的 Wi-Fi | 国家代码未设(尤其是 5G 频段的网络) |
| 有列表,但连上后上不了网 | 密码对但路由器没给 DHCP/或者上游断网 |
| 搜不到任何网络 | 无线被硬件禁用(rfkill),或用了 Lite 版但没配无线 |
| 反复掉线 | 信号太弱,或 2.4G 信道拥塞;插网线最省事 |
五、找到自己的地址
hostname -I # 简洁:直接给出 IP(注意是大写 I)
ip a # 详细:看 wlan0 / eth0 那一行的 inet
nmcli device show wlan0 | grep IP4 # 只看 IP 相关
参考输出:
192.168.1.42
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
inet 192.168.1.42/24 brd 192.168.1.255 scope global wlan0
怎么读:192.168.1.42 是门牌号,/24 是掩码(网络课 5.1 讲的「IP 与掩码定网段」——/24 意味着同一个网段是 192.168.1.x)。
想让地址固定下来(免得每次找),两种现代做法:
| 做法 | 怎么做 | 推荐度 |
|---|---|---|
| 路由器 DHCP 地址保留 | 登录路由器,把树莓派的 MAC 绑定到一个固定 IP | ✅ 最推荐——设置全在路由器上,树莓派端零配置 |
| 设备端配静态 IP | 用 nmcli 给连接加静态地址 |
可用,但换网络环境要改回来 |
其实最省事的办法是记主机名:pi-lab.local(2-4 设的)。局域网里 主机名.local 会自动解析到它当前 IP,比记数字轻松得多。
六、远程连接的三种方式(以及一条红线)
| 方式 | 端口 | 你能得到什么 | 什么时候用 |
|---|---|---|---|
| SSH | 22 | 命令行 | 首选——轻、快、能写脚本 |
| VNC | 5900 | 图形桌面 | 需要点鼠标操作图形程序时 |
| Raspberry Pi Connect | — | 官方远程访问服务(网页/浏览器即可,走官方中继) | 想在外面也能连、又不想折腾网络配置 |
实用经验:绝大多数「我需要 VNC」的需求,其实只需要 SSH 敲一条命令就解决了。 先试 SSH,真需要图形界面再上 VNC。
🚨 一条安全红线:永远不要把 22/5900 端口直接转发到公网。 这两个端口是互联网上自动化扫描器盯得最紧的目标,暴露几小时内就会被反复尝试登录(服务器课 7.1 讲的口令攻击,在真实世界里就是这样发生的)。 要在外面访问,正确姿势是:走 VPN(把设备"搬"回家里网络),或走 SSH 隧道(服务器课 7.9 讲的「借公网挖一条加密隧道」),或直接用官方的 Raspberry Pi Connect。
七、蓝牙装置怎么接
桌面环境下,点右上角蓝牙图标就能搜索、配对——和手机一样简单。下面重点讲无头模式下的命令行方式。
bluetoothctl # 进入蓝牙交互模式
进去后按这六步:
power on # ① 打开蓝牙
agent on # ② 启用配对代理
default-agent # ③ 设为默认代理
scan on # ④ 开始扫描(这时会刷出周围的设备地址)
# 找到你的设备,记下它的 MAC 地址,如 AA:BB:CC:DD:EE:FF
pair AA:BB:CC:DD:EE:FF # ⑤ 配对
trust AA:BB:CC:DD:EE:FF # 标记为可信(下次自动连)
connect AA:BB:CC:DD:EE:FF # ⑥ 连接
scan off # 连上后停止扫描
exit # 退出
常用辅助命令:
bluetoothctl devices # 列出已配对的设备
bluetoothctl info AA:BB:... # 看某个设备的详情
bluetoothctl disconnect AA:BB:... # 断开
bluetoothctl remove AA:BB:... # 忘记设备
三类常见设备与注意事项:
| 设备 | 说明 |
|---|---|
| 蓝牙键盘/鼠标 | 配对时通常要在键盘上敲一串数字再回车;有的键盘要求先输配对码 |
| 蓝牙音箱 | 连上后还要把音频输出切到它,否则声音还在别处(桌面点音量图标切换) |
| 游戏手柄 | 多数能被识别;映射按键要另装工具,属于进阶 |
小坑:蓝牙和 Wi-Fi 都用 2.4G 频段,可能互相干扰。如果蓝牙总断,试试让树莓派用 5G Wi-Fi,或把设备靠近一点。
八、动手 Demo:一条条查过去
第一步:看网络全景
nmcli device status
参考输出与解读:
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected Wired connection 1
wlan0 wifi connected 我的WiFi
lo loopback unconnected --
connected = 通了;disconnected = 没通。
第二步:确认出口畅通(网络课 6.x 的「一跳一跳」实战)
ping -c 3 192.168.1.1 # ① 能通到路由器(局域网出口)吗
ping -c 3 8.8.8.8 # ② 能通到外网(用 IP,绕开域名解析)吗
ping -c 3 www.raspberrypi.com # ③ 域名能解析吗
这三条谁先失败,故障点就在哪一级——这就是下面第九节的排障法。
第三步:配一个蓝牙设备
bluetoothctl
power on
agent on
default-agent
scan on
等目标设备出现(比如 Device AA:BB:CC:DD:EE:FF 蓝牙音箱),记下地址,然后:
pair AA:BB:CC:DD:EE:FF
trust AA:BB:CC:DD:EE:FF
connect AA:BB:CC:DD:EE:FF
exit
看到什么算成功:
Connection successful
或退出后再验证:
bluetoothctl devices Connected
看到什么说明不对:
| 现象 | 原因 |
|---|---|
No default controller available |
蓝牙没打开,或没装蓝牙服务 |
Failed to pair: org.bluez.Error.AuthenticationFailed |
配对码没输对,或设备已被别的机器占用 |
| 配对成功但立刻断开 | 设备不支持自动重连,试试先 trust 再 connect |
九、网络不通时的四步排障
按这个顺序查,每一步都指向一个具体的层级:
① ping 192.168.1.1 → 通不过?局域网/网卡/密码问题,还没出家门
② ping 8.8.8.8 → 通不过但①通?路由器到外网的问题(或路由器没网)
③ ping www.raspberrypi.com → ①②通但这里失败?DNS 解析问题
④ 用 IP 直连服务试试 → ③失败但用 IP 能连?100% 是 DNS
层级的含义:①是「我的网卡和局域网」、②是「路由器以外的世界」、③是「域名到 IP 的翻译」。先定位层级,再谈修法——不要一上来就重装系统。
DNS 出问题的常见解法:把手动 DNS 设为公共 DNS:
# 查看当前 DNS
nmcli device show wlan0 | grep DNS
十、30 秒实验
亲眼看到「DNS 在干活」。
ping -c 2 www.raspberrypi.com # 第一条:它会先把域名翻译成 IP
nslookup www.raspberrypi.com # 第二条:直接问 DNS,让它把翻译结果打给你
第一条输出里会有一行 PING www.raspberrypi.com (xxx.xxx.xxx.xxx)——括号里那个 IP 就是 DNS 翻译出来的。
这 30 秒你收获的是:域名和 IP 是两回事,中间有一个翻译官。看懂这一点,以后任何「网站打不开但 QQ 还能用」的现象,你都能立刻判断——那是 DNS 的问题(网络课 5.4 讲的 DNS,在这里落地)。
十一、常见误区
- 「Wi-Fi 连不上肯定是密码错了」:先查国家代码。5G 频段尤其明显——国家代码没设,系统根本不去看那个信道,你会看到「自己的 Wi-Fi 在列表里消失了」,而不是密码错。
- 「改
/etc/dhcpcd.conf设静态 IP」:已经失效(系统换用 NetworkManager 了)。用路由器的 DHCP 地址保留,或nmcli。 - 「往 boot 分区放 wpa_supplicant.conf 就能连 Wi-Fi」:老办法,新系统不再走这条正路。用 2-2 讲的 Imager 高级设置预配,或用
nmcli。 - 「SSH 和蓝牙是一回事」:完全不同。SSH 走的是网络(IP 层),用途是远程登录;蓝牙是一条短距离无线链路,用途是连接键盘、音箱等外设。蓝牙不能用来 SSH。
- 「为了在外面连,把 22 端口转发出去很方便」:危险做法。用 VPN/SSH 隧道/Raspberry Pi Connect 代替。
- 「无头模式不需要网络知识」:恰恰需要。无头=完全依赖网络——如果你连 IP 和 SSH 都还没搞清,先把网络课那几节复习一遍(1-5 的体检表里就是这么提醒的)。
自测三问
1. 现在树莓派用什么管网络?连 Wi-Fi 的三个入口分别是什么?(**NetworkManager**;桌面右上角图标/`nmtui` 文字菜单/`nmcli` 命令) 2. 「搜不到自己家的 Wi-Fi」最常见的原因是什么?(**国家代码没设**,系统因此不开放对应信道——`raspi-config → 5 Localisation → WLAN Country → CN`) 3. 网络不通时的四步排查顺序是什么?(① `ping 网关` → ② `ping 8.8.8.8` → ③ `ping 域名` → ④ 用 IP 直连;**谁先失败,故障就在哪一级**)- ☑ 第二章 完结 —— 教材这一章已读完全部五节:买齐配件、把系统装进卡、点亮机器、调顺系统、接上网
- ☑ 第三章 Raspberry Pi OS 基本使用 —— 已完结:在 Windows 和树莓派之间交换文件(认清系统构成 → 点熟桌面 → 认识程序与装软件 → 调好各项设置 → 学会敲命令 → 能在 Windows 与树莓派之间传文件)
相关笔记
- 设置 Raspberry Pi OS —— 上一节:接口开关与本地化设置
- 认识 Linux、终端机和桌面环境 —— 下一章起点:先认清这台机器的系统由什么组成
- 在 Windows 和树莓派之间交换文件 —— 下一章小结:把文件来回搬的几条路
- 安装 Raspberry Pi OS 至 microSD 卡 —— 无头模式的起点:Imager 高级设置
- 🌐 计算机网络 · 索引 —— IP、DNS、信道、SSH 的原理出处
- 🖥️ 服务器工作原理 · 索引 —— 远程访问、端口安全、排障思路
- 🍓 树莓派 · 索引 —— 全课路线图