WatchYourLAN:局域网 IP 扫描器部署与监控配置一步到位的实战指南
WatchYourLAN局域网 IP 扫描器部署与监控配置一步到位的实战指南【免费下载链接】WatchYourLANLightweight network IP scanner written in Go. With notifications, history, export to Grafana项目地址: https://gitcode.com/GitHub_Trending/wa/WatchYourLAN谁在你家或办公室的网段里此刻又有几台设备在线WatchYourLAN 是一款用 Go 写的轻量级网络 IP 扫描器它用 ARP 持续扫描网段发现新主机就发通知并维护一份带在线/离线历史的全网主机清单。读完本文你会从 Docker 部署讲到三类配置入口、VLAN 进阶扫描、通知渠道再到 HTTP API最终拥有一套属于自己的局域网监控服务。功能全景WatchYourLAN 扫描器能做什么新主机发现通知未知设备一出现立刻推送到你的消息渠道。在线/离线历史记录每台主机的状态变化可用热力图回看。全网主机清单IP、MAC、厂商、接口、主机名一张表看全。Grafana 数据出口数据写入 InfluxDB2 或暴露给 Prometheus。从入口文件 backend/cmd/WatchYourLAN/main.go 的启动顺序看架构非常精简conf.Start读配置 →gdb.Start连数据库 →routines起扫描与历史清理两个后台协程 →web.Gui启动 Web GUI。技术栈是 Go Gin GORM中间件为零运行时只依赖一个系统命令arp-scan真正的扫描全由它完成。扫描协程循环检查距上次扫描达到TIMEOUT秒就执行一轮arp-scan。结果按 MAC 建映射与now表逐台比对仍在线则更新 IP 和接口消失则标记离线出现新 MAC 先做 DNS 解析拿主机名再触发通知。每次比对都把状态快照写进history表过期记录由另一个协程按TRIM_HIST定期清理。环境准备与部署Docker 一键拉起 WatchYourLAN最短路径就是一条命令docker run --name wyl \ -e IFACES$YOURIFACE \ -e TZ$YOURTIMEZONE \ --networkhost \ -v $DOCKERDATAPATH/wyl:/data/WatchYourLAN \ aceberg/watchyourlan参数是否必填说明IFACES必填要扫描的接口空格分隔多个TZ必填时区保证历史时间正确--networkhost必填arp-scan 需在宿主网络栈收发 ARP-v …:/data/WatchYourLAN必填存配置文件与 SQLite 数据库启动后访问http://localhost:8840即可进入 Web GUI。偏好 docker-compose 的话仓库自带 docker-compose.yml里面还注释了一段本地资源服务后文离线资源模式会用到。不想用 Docker 时去 latest release 取预编译包.deb、.rpm、.apk、.tar.gz都有覆盖amd64、i386、arm_v5、arm_v6、arm_v7、arm64。运行时依赖只有arp-scan和tzdata两个amd64还可用作者维护的 apt 软件源直接安装并跟随更新。命令行另有两个参数-d指定配置目录默认/data/WatchYourLAN-n指定离线资源地址。配置与定制三种入口快速配置配置有三种入口配置文件、Web GUI、环境变量三者等价。底层统一走 Viperbackend/internal/conf/read.go 先设默认值再读config_v2.yaml最后AutomaticEnv()让环境变量覆盖配置文件。配置文件里的键名就是环境变量名转小写TIMEOUT对应timeout。基础项变量作用默认值何时改TZ时区必填一定要设HOSTWeb 监听地址0.0.0.0绑定特定 IP 时PORTWeb GUI 端口8840端口冲突时THEME主题名取 bootswatch 小写名sand换外观时COLOR背景 light 或 darkdark要浅色背景时NODEPATH本地资源路径空离线网络时扫描与数据库项变量作用默认值何时改IFACES要扫描的接口必填首次部署必设TIMEOUT两次扫描间隔秒120想更快发现时ARP_ARGS追加给 arp-scan 的参数空见进阶玩法LOG_LEVEL日志级别 debug 到 errorinfo排错时开 debugTRIM_HIST历史保留时长小时48控制数据库体积时USE_DBsqlite 或 postgressqlite要用 Postgres 时PG_CONNECTPostgres 连接串空要用 Postgres 时数据库层基于 GORMUSE_DBpostgres时按PG_CONNECT连接连不上会自动回退到 SQLite不会中断服务。SQLite 下额外开启PRAGMA journal_mode wal与PRAGMA busy_timeout 5000提升并发表现。表固定两张now存当前在线清单history存历史AutoMigrate自动建表。HIST_IN_DB自 2.1.3 起已弃用历史永远入库体积靠TRIM_HIST控制。InfluxDB2 对接变量作用默认值何时改INFLUX_ENABLE启用导出false接 Grafana 时INFLUX_ADDR服务器地址:端口—启用后填写INFLUX_ORGorg 名—启用后填写INflux_BUCKETbucket 名—启用后填写INFLUX_TOKEN密钥 token—启用后填写INFLUX_SKIP_TLS跳过 TLS 校验false自签证书时每次扫描比对都会向 InfluxDB 写一行行协议数据WatchYourLAN,IPip,ifaceiface,namename,macmac,known0/1 state0/1。state1表示在线、0离线known标记是否已知主机。这组字段与 Grafana 里 InfluxDB 数据源配置一一对应。Prometheus 对接变量作用默认值何时改PROMETHEUS_ENABLE启用 /metrics 端点false用 Prometheus 抓取时启用后核心指标是一个 gauge 向量watch_your_lan_up{ip,iface,name,mac,known}值为 1 在线、0 离线未启用时该端点直接返回 404。最小可用配置如下放在数据目录的config_v2.yaml里ifaces: enp4s0 port: 8840 theme: sand color: dark timeout: 60 trim_hist: 48 use_db: sqlite shoutrrr_url: 其中只有ifaces一行必须填成你真实的接口名其余保持默认即可运行。timeout: 60表示 60 秒扫一次全局默认是 120 秒按需调整。进阶玩法VLAN 与 docker0 扫描配置ARP_STRS 独立扫描当网段藏在 VLAN 里或你想扫 docker0 这类桥接网段单个接口不够用了。原理一句话ARP_STRS把每条字符串原样当作一条arp-scan命令执行与 IFACES 完全独立。扫 VLAN 107 的命令长这样arp-scan -gNx 10.0.107.0/24 -Q 107 -I eth0-Q 107指定 VLAN ID-I eth0指定从哪个接口发包。配置文件里用列表逐条写arp_strs: - -gNx 172.17.0.1/24 -I docker0 - -glNx -I virbr0GUI 里则在 Arp Strings 输入框填一条、点 Save会自动再出现一个空输入框逐条添加即可。⚠️注意字符串的最后一个元素会被写成发现主机的接口名所以接口一定要放在字符串末尾否则主机列表里的接口列会错。用环境变量传多条扫描串ARP_STRS只能通过 GUI 或配置文件设置docker-compose 里要改用ARP_STRS_JOINED逗号分隔的字符串列表逗号前后不能有空格。非空时它会直接覆盖ARP_STRSARP_STRS_JOINED: -gNx 172.17.0.1/24 -I docker0,-gNx 10.0.107.0/24 -Q 107 -I eth0顺手说清ARP_ARGS的区别它不是独立命令而是追加到每一个IFACES 的扫描命令里。设ARP_ARGS: -r 1后实际执行的就是arp-scan -glNx -r 1 -I iface。排错时把LOG_LEVEL调到debug日志会打印每条完整命令backend/internal/arp/arpscan.go 里能对照源码。通知、认证与外部集成把 WatchYourLAN 接入你的基础设施新主机通知只填一个SHOUTRRR_URL格式决定渠道Discord、Email、Gotify、Matrix、Ntfy、Pushover、Slack、Telegram、通用 Webhook 等都能用。Gotify 示例gotify://192.168.0.1:8083/token/?titleUnknown host detectedDisableTLSyes。新 MAC 出现时推送的消息固定包含名称、IP、MAC、硬件厂商与接口URL 为空则只写日志不推送。配好后调用GET /api/notify_test或在 Config 页面点测试按钮发一条test notification验证渠道是否通。认证与访问控制WatchYourLAN没有内置认证。两个通行方案用 Authelia 这类 SSO 工具做前置或用作者写的轻量认证应用 ForAuth仓库里有配套示例 docker-compose-auth.yml。⚠️警告WYL 必须以 host 网络模式运行Web 端口会直接暴露在宿主网络上务必用防火墙或其他方式限制对该端口的访问否则管理界面任何人都能打开。离线资源模式默认情况下主题、图标、字体都从互联网拉取。完全隔离的内网可以改用内置全部静态资源的镜像docker run --name node-bootstrap -p 8850:8850 aceberg/node-bootstrap随后启动 WYL 时追加-n http://$YOUR_IP:8850等价于NODEPATH变量GUI 就会从这台资源服务器取全部模块与字体不再依赖外网。API 与二次开发用 HTTP 接口查询主机主要端点一览方法路径说明GET/api/all返回全部主机 JSONGET/api/host/:id按 ID 取单台主机GET/api/history/:mac/:date按 MAC 与日期过滤历史GET/api/port/:addr/:port检测某地址某端口是否开放GET/api/edit/:id/:name/*known改名known 传 toggle 切换GET/api/host/del/:id删除指定主机GET/api/rescan触发立即重扫GET/api/wol/:mac发送 Wake-on-LAN 魔法包date粒度很灵活2、2025-07、2025-07-26都能传。端口检测长这样curl http://0.0.0.0:8840/api/port/192.168.2.2/8844自 2.1.4 起内置 Swagger 文档启动后访问/swagger/即可在线浏览全部接口。社区还有 AUR 包、Python 客户端、Umbrel、YunoHost 应用等集成都基于这套 API 实现。收尾回顾部署要点回顾与延伸阅读Docker 一条命令起步三种配置入口等价VLAN 靠 ARP_STRS 覆盖通知与监控一步打通延伸阅读建议看这三处完整接口细节docs/API.md复杂扫描参数全解docs/VLAN_ARP_SCAN.md各模块源码backend/internal/适合家庭与小型机房管理员下一步把它接上 Grafana 面板即可。【免费下载链接】WatchYourLANLightweight network IP scanner written in Go. With notifications, history, export to Grafana项目地址: https://gitcode.com/GitHub_Trending/wa/WatchYourLAN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

React Cosmos 开发指南:Server、Renderer 与 UI 三大架构,ESM 支持路线图与技术债盘点

React Cosmos 开发指南:Server、Renderer 与 UI 三大架构,ESM 支持路线图与技术债盘点

开发工具前端测试 【免费下载链接】react-cosmos Sandbox for developing and testing UI components in isolation 项目地址: https://gitcode.com/gh_mirrors/re/react-cosmos 点击查看 免费下载 React Cosmos 的开发者文档(dev.md)明确说…

2026/9/25 3:55:04 阅读更多 →
External-DNS Leader Election 提案解析:基于 Kubernetes Lease 的高可用设计与启用指南

External-DNS Leader Election 提案解析:基于 Kubernetes Lease 的高可用设计与启用指南

云原生 【免费下载链接】external-dns Configure external DNS servers dynamically from Kubernetes resources 项目地址: https://gitcode.com/gh_mirrors/ex/external-dns 点击查看 免费下载 本文是 external-dns 仓库中 Leader Election 设计提案(d…

2026/9/25 3:55:04 阅读更多 →
猫抓视频嗅探工具:3 步搞定网页视频下载(附 M3U8 解析与避坑指南)

猫抓视频嗅探工具:3 步搞定网页视频下载(附 M3U8 解析与避坑指南)

猫抓视频嗅探工具:3 步搞定网页视频下载(附 M3U8 解析与避坑指南) 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch …

2026/9/25 3:55:04 阅读更多 →

最新新闻

从 Codex CLI 到知识库:TaoToken 统一 Key 驱动的 AI 代理个人知识管理全流程

从 Codex CLI 到知识库:TaoToken 统一 Key 驱动的 AI 代理个人知识管理全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:58:52 阅读更多 →
Python寒假作业实战指南:从环境搭建到代码调试全流程

Python寒假作业实战指南:从环境搭建到代码调试全流程

拿到“Python第一次作业(寒假)”这个标题,我第一反应是想起自己当年第一次提交Python作业的样子——表面上是写几段代码,实际上一大半时间都耗在装环境、调报错、纠结“为什么输出和我想要的不一样”上面。这篇文章就是给同样在寒…

2026/9/25 4:58:52 阅读更多 →
STM32 I2C CubeMX配置四大致命陷阱与信号完整性避坑指南

STM32 I2C CubeMX配置四大致命陷阱与信号完整性避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:58:52 阅读更多 →
树莓派4B变身AI牛马:8GB内存跑本地大模型的实践与避坑指南

树莓派4B变身AI牛马:8GB内存跑本地大模型的实践与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:58:52 阅读更多 →
OpenClaw驱动SolidWorks二次开发:自然语言建模与自动化导出实战

OpenClaw驱动SolidWorks二次开发:自然语言建模与自动化导出实战

最近我把 OpenClaw 这个本地 AI Agent 框架和 SolidWorks 的二次开发链路打通了,现在能做到用自然语言直接驱动一部分建模、改参和导出操作。这套组合的定位不是拿 AI 替代 CAD 软件,而是让 AI 当“一个能听懂人话的调度员”,把重复的 API 调…

2026/9/25 4:58:52 阅读更多 →
深入理解 Sinon 的 `spyCall.firstArg`:读取单次调用首个参数的正确姿势

深入理解 Sinon 的 `spyCall.firstArg`:读取单次调用首个参数的正确姿势

测试开发工具 【免费下载链接】sinon Test spies, stubs and mocks for JavaScript. 项目地址: https://gitcode.com/gh_mirrors/si/sinon 点击查看 免费下载 spyCall.firstArg 是 Sinon 中 spy call 对象的一个核心只读属性,用于获取某一次函数调用传入…

2026/9/25 4:57:52 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →