引言

上周我的树莓派4B刷了最新镜像,通过SSH愉快地用了两天。第三天上班时,突然发现MobaXterm无法连接,但打开路由器APP一看,树莓派明明在线,IP也没变。同一局域网下的电脑却ping不通它!这究竟是怎么回事?经过一番折腾,最终发现是一个低级但容易忽略的网络问题。下面记录完整的排查过程,希望能给遇到类似问题的朋友一些启发。


问题现象

  • 树莓派状态:路由器APP显示已连接,分配的IP为 192.168.0.107

  • 故障表现:

    • 局域网内其他电脑无法 ping 通该 IP

    • MobaXterm SSH 连接超时

    • 但树莓派能正常上网(两天前一切正常)

  • 尝试重启:拔电重启后问题依旧


排查工具准备

由于 SSH 无法连接,必须通过物理方式访问树莓派。我手头有一根 USB 转 TTL 串口线(CH340 模块),这是树莓派调试的必备神器。连接方式:

  • 树莓派 GPIO 引脚:GND → USB-TTL 的 GND,TXD → USB-TTL 的 RXD,RXD → USB-TTL 的 TXD

  • 电脑打开串口终端(如 Putty 或 screen),波特率 115200

串口登录成功后,获得了本地 root 权限,开始了深度排查。


第一步:检查网络接口状态

bash

ip a

输出节选:

text

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
    inet 192.168.0.107/24 brd 192.168.0.255 scope global wlan0

IP 正确,接口状态 UP,说明无线已连接。

查看无线连接详情:

bash

iwconfig

可以看到已关联到 AP,信号良好。


第二步:测试网络连通性

从树莓派主动 ping 网关和公网:

bash

ping -c 4 192.168.0.1   # 网关
ping -c 4 8.8.8.8       # 公网 IP

结果:全部通! 说明树莓派的网络上行没问题,问题很可能出在 入站流量 上。


第三步:排查防火墙

查看防火墙状态:

bash

sudo ufw status

显示 inactive,但 dmesg 日志中却不断出现 [UFW BLOCK] 记录,说明 iptables 规则并未真正清空。执行以下命令彻底清理所有规则:

bash

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -t filter -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -t raw -F

再次查看 iptables:

bash

sudo iptables -L -n -v

确认所有链均为 ACCEPT,且计数器为空。然而,电脑依然 ping 不通树莓派。


第四步:发现双向通信异常

在树莓派上 ping 我的电脑 IP:

bash

ping 192.168.1.6

结果:也不通! 这时意识到,树莓派和电脑的 IP 网段根本不一样:

  • 树莓派:192.168.0.107/24

  • 电脑:192.168.1.6/24

原来,我家路由器有两个 Wi-Fi 信号:一个普通的 2.4G(网段 192.168.0.x),一个 5G(网段 192.168.1.x)。之前树莓派连接的是普通网络,而电脑开机后自动连上了 5G 网络。两个 SSID 默认处于不同的子网,且路由器可能开启了 AP 隔离,导致两个网络间无法互通。


第五步:统一网络,问题解决

将电脑切换到树莓派所在的 Wi-Fi(普通 2.4G 网络),电脑重新获取到 192.168.0.106 的 IP。再次 ping 树莓派:

bash

ping 192.168.0.107

成功收到回复! 随后 SSH 也顺利连接。


教训与建议

  1. 家用路由器的多频段网络:2.4G 和 5G 往往被视为两个独立网络,默认可能隔离。如果设备分散在不同频段,它们之间无法直接通信。建议将需要互访的设备连接到同一 SSID(或者路由器支持“双频合一”功能开启后自动切换但 IP 同一网段)。

  2. 检查 IP 网段:遇到网络不通时,首先确认两端 IP 是否在同一子网。这是最基础但也最容易忽略的一步。

  3. 为树莓派绑定静态 IP:在路由器 DHCP 服务器中为树莓派的 MAC 地址分配固定 IP,避免 IP 变化带来的连接问题。

  4. 准备串口调试线:当 SSH 无法连接时,串口是最后的救命稻草,强烈推荐备一根。


结语

这次故障的根源其实非常简单——设备连错了 Wi-Fi 频段。但排查过程中,我们经历了防火墙清理、路由检查、ARP 分析等一系列操作,最终回归到最基础的网络配置。希望这篇文章能提醒大家:当网络不通时,先看一眼 IP 地址是否在同一个网段,也许能省下不少时间。

如果你也有类似的树莓派失联经历,欢迎留言交流!

更多推荐