保持本地网络设备可控的利器:WatchYourLAN
熟悉的场景:你刚设置好一块新的单板计算机,或者接上了一个智能插座,然后打开路由器的 Web 管理界面,试图猜出设备被分配了哪个 IP 地址。大多数家用路由器的管理面板更新连接列表很不积极,而且通常根本没有历史记录。
在寻找简单解决方案的过程中,我发现了 WatchYourLAN。这是一款小型网络扫描器,带有 Web 界面,由 Go 语言编写。它在后台运行,使用 ARP 协议扫描本地网络,并在未知主机出现时立即发出警报。

该工具的功能
WatchYourLAN 解决了一个基本但恼人的问题:让你的本地网络始终保持一张最新的地图呈现在眼前。
功能包括:
- 通过 Shoutrrr 发送通知。该工具支持 Telegram、Discord、Gotify、Slack、Matrix、邮件以及常规 Webhook。
- 活动历史记录。扫描器会记住设备何时上线以及何时离线。
- 指标导出。数据可通过
/metrics发送到 Prometheus,或直接流式传输到 InfluxDB2,以便在 Grafana 中构建仪表板。 - 数据库选择。默认使用 SQLite,但如有需要,数据可以迁移到 PostgreSQL。
由于采用 Go 语言编写,项目运行速度很快,容器镜像也非常轻量。
启动与配置细节
该服务只需一条 Docker 命令即可部署。主要要求是以网络模式 host 运行容器,否则 arp-scan 将无法看到主机系统的网络接口。
docker run --name wyl \
-e "IFACES=eth0" \
-e "TZ=Europe/Moscow" \
--network="host" \
-v /var/lib/wyl:/data/WatchYourLAN \
aceberg/watchyourlan
启动后,Web 界面可在 http://localhost:8840 访问。
配置时有两个需要注意的事项。首先,WatchYourLAN 没有内置的登录表单。如果你计划将仪表板对外暴露,需要用带有认证功能的反向代理(如 Authelia 或 Nginx)将其保护起来。其次,默认情况下应用程序从 CDN 加载主题和字体。对于完全隔离的网络,作者准备了一个独立容器 node-bootstrap,其中的界面可以在无互联网访问的情况下正常工作。
适用人群
这款工具非常适合家庭实验室或小型办公网络。如果你经常连接新硬件、调试微控制器,或者想了解家用设备何时连接 Wi-Fi,WatchYourLAN 可以满足这些需求,且不会带来不必要的复杂性。
相关项目