如何搭建可离线运行的树莓派局域网并实现主机名访问
如何搭建可离线运行的树莓派局域网并实现主机名访问
兄弟,你的需求我太懂了——6个树莓派组成的集群,连家里路由器时用.local主机名通信顺风顺水,现在要脱离路由器离线运行,还不想改原来的配置文件对吧?我给你捋清楚亲测有效的步骤,把你之前卡壳的Avahi问题也一并解决:
第一步:拉满Avahi服务(主机名解析的核心)
你之前试Avahi没成,大概率是没装全组件。Raspbian和Ubuntu确实默认带Avahi基础功能,但要离线解析主机名,得把全套工具装上:
- 先更新系统包:
sudo apt update && sudo apt install avahi-daemon avahi-utils -y - 把Avahi设为开机自启并立即启动服务:
sudo systemctl enable --now avahi-daemon - 最后检查服务状态,确保是正常运行的:
看到输出里显示sudo systemctl status avahi-daemonactive (running)就没问题,要是有报错,用journalctl -u avahi-daemon看日志排查就行。
第二步:解决离线IP分配问题(没IP一切白搭)
脱离路由器后没有DHCP服务器给树莓派分配IP,必须先让每个设备拿到能通信的IP,这里给你两个靠谱方案:
方案A:手动设置静态IP(稳定推荐)
这个方法最稳妥,所有设备都在同一个网段,不会乱:
- 编辑DHCP配置文件:
sudo nano /etc/dhcpcd.conf - 在文件末尾加这段内容(注意每个树莓派的
ip_address最后一位要不一样,比如Rpi1设192.168.3.10,Rpi2设192.168.3.11,以此类推):interface eth0 static ip_address=192.168.3.10/24 static routers=192.168.3.1 # 离线状态下没用,随便填就行 static domain_name_servers=127.0.0.1 # 离线也没用,填本地回环地址即可 - 按
Ctrl+O保存,回车确认,再按Ctrl+X退出,然后重启DHCP服务生效:sudo systemctl restart dhcpcd
方案B:自动用链路本地IP(不用手动设,适合快速部署)
要是不想一个个改静态IP,就让树莓派自动用APIPA链路本地网段(169.254.x.x):
- 同样编辑
/etc/dhcpcd.conf:sudo nano /etc/dhcpcd.conf - 找有没有
noipv4ll这一行,有就改成ipv4ll,没有就直接在末尾加一行ipv4ll - 重启DHCP服务:
sudo systemctl restart dhcpcd
这样离线时,每个树莓派会自动分配一个169.254开头的IP,完全不用你操心。
第三步:验证离线访问效果
现在拔掉路由器的网线,把所有树莓派重启一遍,然后测试:
- 在任意一个树莓派上,ping其他设备的主机名,比如
ping Rpi1.local,要是能收到响应,就说明成了! - 要是ping不通,先排查这几点:
- 用
ip a命令看每个树莓派的网卡有没有获取到IP(不管是静态的192.168.3.x还是169.254.x.x) - 检查防火墙:
sudo ufw status,如果开了防火墙,要允许Avahi的UDP 5353端口,或者临时关防火墙测试:sudo ufw disable - 确认所有树莓派的主机名是唯一的,用
hostname命令查看,要改的话用sudo hostnamectl set-hostname 新主机名,改完重启。
- 用
最后补个小tip
要是你之前的Web服务、GET请求都是用RpiX.local来访问的,那现在完全不用改配置文件——离线状态下Avahi会自动把主机名解析到对应的IP,用法和连路由器时一模一样!
备注:内容来源于stack exchange,提问作者kaosbeat
相关产品推荐
相关产品推荐

