项目地址

github:WatchYourLAN

docker:aceberg/watchyourlan


项目介绍

轻量级网络 IP 扫描器。可用于通知新主机并监控主机在线/离线历史记录

Web GUI 应该位于http://localhost:8840


在openwrt上安装项目

  1. 拉取镜像,在输入栏填入aceberg/watchyourlan,然后选择拉取,等待镜像拉取完毕即可

image-20240910222245608

  1. 装一下node-bootstrap ,有些主题、图标和字体需要从互联网下载,作者创建了一个包含所有必要模块和字体的单独映像,这个直接在Docker –> 容器 –> 添加,然后复制下面代码到解析CLT提交,等待下载安装完成即可
1
2
3
docker run --name node-bootstrap          \
-p 8850:8850 \
aceberg/node-bootstrap

image-20240910222808676

  1. 添加WatchYourLan容器,第一步已经拉取完镜像了,直接复制命令解析CLT,添加容器即可(没有设置端口,需要自己手动输入http://192.168.1.1:8840/进入网站),不能直接点击容器进去
1
2
3
4
5
6
7
docker run --name WatchYourLAN \
-e "IFACES=br-lan" \
-e "TZ=Asia/Shanghai" \
--network="host" \
-v /opt/docker/volumes/wyl:/data/WatchYourLAN \
-p 8840:8840 \
aceberg/watchyourlan:v2

image-20240910223009252


config配置解释

Basic config

Variable 描述 Default
TZ 时区
HOST 监听地址 0.0.0.0
PORT Web GUI 端口 8840
THEME https://bootswatch.com的主题
COLOR 背景颜色:浅色或深色 dark
NODEPATH 本地节点模块的路径
SHOUTRRR_URL 没啥用

Scan settings

Variable 描述 Default
IFACES 需要扫描的接口,可以是一个或多个,以空格分隔,例如IFACES: "enp4s0 wlxf4ec3892dd51"
TIMEOUT 扫描间隔时间(秒) 120
ARP_ARGS Web GUI 端口 8840
ARP_STRS ARP_STRS_JOINED https://bootswatch.com的主题
LOG_LEVEL 日志级别 dark
TRIM_HIST 在(小时)后删除历史记录
HIST_IN_DB 将历史记录存储在数据库中 (用不上)
USE_DB 存储的数据库,要么sqlite 要么 postgres
PG_CONNECT 连接到 PostgreSQL 的地址

说明

openwrt小主机的eth0 br-lan 网卡对应内网(192.168.1.0/24),eht1口对应校园网,因为只需要监控openwrt下的用户,所以网卡设为eth0 br-lan

扫描eth1网口(校园网网段10.110.x.x)能发现不少在线设备使用校园网,不过只能看下IP地址和MAC地址,也没什么用

image-20240910221829701


docker run命令解析

命令执行流程

  1. 创建一个名为 wyl 的 WatchYourLAN 容器。
  2. 设置容器的网络接口为 eth0 br-lan,时区为上海。
  3. 使容器共享主机的网络,并且不用指定端口映射。
  4. 将主机的指定目录挂载到容器内,保存容器的数据。
  5. 使用 aceberg/watchyourlan:v2 镜像启动该容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 本机配置
docker run --name WatchYourLAN \
-e "IFACES=br-lan" \
-e "TZ=Asia/Shanghai" \
--network="host" \
-v /opt/docker/volumes/wyl:/data/WatchYourLAN \
-p 8840:8840 \
aceberg/watchyourlan:v2

# 官网推荐配置,替换$YOURTIMEZONE为正确的时区和$YOURIFACE要扫描的网络接口,网络模式必须是host,设置$DOCKERDATAPATH容器以保存数据:
docker run --name wyl \
-e "IFACES=$YOURIFACE" \
-e "TZ=$YOURTIMEZONE" \
--network="host" \
-v $DOCKERDATAPATH/wyl:/data/WatchYourLAN \
aceberg/watchyourlan:v2

特别说明:

-v /opt/docker/volumes/wyl:/data/WatchYourLAN \

将本地 /opt/docker/volumes/wyl 目录挂载到容器内的 /data/WatchYourLAN 目录,在创建别的容器时,一定要注意一下-v的配置,在openwrt小主机下容器的挂载目录都在/opt/docker/volumes/,加上容器名即可

纠错

  1. openwrt小主机的内网网口并不是eth0,而是br-lan,不要被Web GUI的 接口误导了

image-20240911142844150

  1. 之前在 http://192.168.1.1:8840/config/ 配置接口时填eth0,老是扫不出内网(192.168.1.0/24)的设备,其实接口不应该填eth0,应该是br-lan

image-20240911143034460

  1. 通过ssh连接小主机,使用ifconfig查看网卡信息可知,eth0虽然和br-lan的MAC地址相同,是同一个网口,但是只有br-lan获取了内网地址192.168.1.0/24,eth0上并没有分配IP地址,eth0是干嘛的我也不知道,可能有一个属于虚拟网口吧

image-20240911143305547

docker0网口

这个是一个虚拟网口,是docker容器用来和实体小主机之间进行通信的,属于172.17.0.0/16网段,一般没事不要动这个接口,除非要把容器IP地址改到192.168.1.0/24网段,以前尝试过,但是失败了,不知道怎么弄

其他

网上说可以设置账号密码进行认证,防止每个人都能登录WatchYourLAN查看网络信息,但是我没找到在哪里配置登录认证

也找不到在哪里设置网络设备上线通知