树莓派服务器连接异常:No route to host/WinError 10060报错
局域网内树莓派服务器连接故障排查求助
当客户端尝试连接树莓派服务器时,Linux系统返回No route to host错误,Windows 10系统返回WinError 10060错误。树莓派为2代设备,运行Raspbian Bullseye系统,内核版本6.1.21-v7+。
服务器代码(server.py,树莓派上运行)
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("192.168.0.17", 1234)) s.listen(5) while True: clientsocket, address = s.accept() print(f"Connection from {address} has been established!") clientsocket.send(bytes("Welcome to the server!", "utf-8"))
客户端代码(client.py,Linux/Windows 10上运行)
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("192.168.0.17", 1234)) msg = s.recv(64) print(msg.decode("utf-8"))
已尝试的排查操作
- 通过
ifconfig确认树莓派IPv4地址为192.168.0.17,与预期一致 - 检查所有设备的1234端口,确认可用
- 从Linux和Windows 10设备ping树莓派,丢包率为0%
- 禁用所有设备的防火墙以排除影响
- 树莓派和Linux的client.py可正常连接Windows服务器
- Linux和Windows 10的client.py均无法连接树莓派服务器
- 分别通过WiFi和以太网将树莓派接入网络
- 执行
nmap -sn 192.168.0.0/24扫描,ping能通但192.168.0.17未被检测到 - 安装树莓派所有待更新内容并重启
- 启用树莓派SSH,从Linux连接仍报
No route to host错误 - 重启路由器
以上操作均未解决问题,目前希望避免重装系统,以下是额外可尝试的排查步骤:
额外排查建议
- 检查树莓派路由表:执行
route -n,确认默认网关与客户端设备一致,子网掩码设置正确,无异常路由条目。 - 验证服务器监听状态:执行
ss -tulpn | grep 1234,确认服务器确实在监听192.168.0.17:1234或0.0.0.0:1234,而非仅监听本地回环地址127.0.0.1。 - 测试树莓派本地连接:在树莓派上运行client.py,连接
192.168.0.17:1234,判断是本地服务问题还是局域网传输问题。 - 检查路由器ARP表:登录路由器管理界面,查看ARP映射表,确认192.168.0.17与树莓派MAC地址正确关联,若异常则手动清除ARP缓存。
- 设置静态IP:将树莓派IP从DHCP分配改为静态IP(需在路由器DHCP池范围外),重启网络后重新测试。
- 清理残留防火墙规则:执行
iptables -L -n查看规则,若存在拒绝入站的规则,执行iptables -F清空后再试。 - 更换端口测试:将服务器和客户端端口改为8080等其他常用端口,排除端口被隐形占用的可能。
- tcpdump抓包分析:在树莓派上执行
tcpdump -i any port 1234,客户端发起连接后观察是否有SYN包到达,判断数据包是否在传输中丢失或被本地过滤。
内容的提问来源于stack exchange,提问作者Phlip-Phlop
相关产品推荐
相关产品推荐

