群晖 Docker 部署 LAN-Sheriff:实时监控局域网设备对外连接

简介

什么是 LAN-Sheriff ?

LAN-Sheriff 是一个自托管、开源的局域网网络监控工具。它可以帮助用户实时查看局域网内所有设备的对外连接情况,并检测可疑的网络行为。

主要特点

  • 实时地图监控:通过 Watchtower 地图实时显示所有设备的对外连接,直观展示流量去向
  • 两种运行模式Deputy Mode(默认,无需特权)和 Patrol Mode(需要特权,可监控其他设备流量)
  • 可疑行为检测:内置 Wanted List 引擎,自动检测首次联系、信标行为、罕见目标、DGA 域名等 8 种可疑模式
  • 设备发现:自动发现局域网内的所有设备,包括无法运行软件的 IoT 设备
  • DNS 监控Patrol Mode 下可监控所有 DNS 查询,识别跟踪器、广告网络和恶意域名
  • 多实例配对:支持多个 LAN-Sheriff 实例配对,交换摘要信息,覆盖更大网络范围
  • 多语言支持:支持 12 种语言,包括中文、英文、阿拉伯语等
  • 开源免费:基于 AGPL-3.0 协议开源,可免费使用和修改

应用场景

  • 隐私保护:查看手机、电视、智能家居等设备实际与哪些服务器通信,了解数据流向
  • 安全监控:检测设备是否被入侵,是否向可疑服务器发送数据
  • 网络审计:审计家庭或企业网络的对外连接情况,发现异常行为
  • IoT 设备管理:监控智能电视、恒温器、门铃等 IoT 设备的网络活动
  • 开发者测试:开发人员可以快速搭建测试环境,监控应用的网络行为

LAN-Sheriff **界面截图

LAN-Sheriff 是一个专注于网络可见性的监控工具,帮助用户了解设备的真实网络行为。

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 v1.0.1 之后;

提示:由于镜像托管在 ghcr.io,如果无法拉取,也可以使用 Docker Hub 镜像:291group/lan-sheriff:latest

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 新建文件夹 lan-sheriff 和 子目录
mkdir -p /volume1/docker/lan-sheriff/data

# 进入 lan-sheriff 目录
cd /volume1/docker/lan-sheriff

# 一键启动(Deputy Mode 模式)
docker run -d \
--name=lan-sheriff \
--restart=unless-stopped \
--network=host \
-v $(pwd)/data:/data \
-e LAN_SHERIFF_DATA_DIR=/data \
ghcr.io/291-group/lan-sheriff:latest

# 一键启动(Patrol Mode 模式)
docker run -d \
--name=lan-sheriff \
--restart=unless-stopped \
--network=host \
--cap-drop=ALL \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
-v $(pwd)/data:/data \
-e LAN_SHERIFF_DATA_DIR=/data \
ghcr.io/291-group/lan-sheriff:latest
功能 Deputy Mode Patrol Mode
--cap-drop=ALL ❌ 不需要 ✅ 需要
--cap-add=NET_RAW ❌ 不需要 ✅ 必须
--cap-add=NET_ADMIN ❌ 不需要 ✅ 必须
权限 无需特殊权限 需要提升权限(libpcap/Npcap)
能看到 本机的连接 通过其网络接口的所有设备
应用名称 ✅ 能精确命名本机应用 ❌ 无法识别(信息在数据包中不存在)
DNS可见性 ❌ 否 ✅ 是
设备发现 ✅ 是 ✅ 是

关键概念:两种模式互补而非等级关系,可以同时运行。Deputy Mode 从应用获得名称,Patrol Mode 从网络获得 DNS 和其他设备的流量。

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: '3.8'

services:
lan-sheriff:
image: ghcr.io/291-group/lan-sheriff:latest
container_name: lan-sheriff
restart: unless-stopped
# 使用 host 网络模式,否则只能监控 Docker 虚拟网络
network_mode: host
# 仅添加数据包捕获所需的最小权限
cap_drop:
- ALL
cap_add:
- NET_RAW # 数据包捕获能力
- NET_ADMIN # 网络管理能力
volumes:
- ./data:/data # 数据持久化
environment:
- LAN_SHERIFF_DATA_DIR=/data
healthcheck:
test: ["CMD", "lan-sheriff", "status", "--data-dir", "/data"]
interval: 60s
timeout: 10s
retries: 3
start_period: 20s

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 lan-sheriff 和 子目录
mkdir -p /volume1/docker/lan-sheriff/data

# 进入 lan-sheriff 目录
cd /volume1/docker/lan-sheriff

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

重要提示network_mode: host 是必须的。如果使用默认的 bridge 网络,容器只能看到 Docker 自己的虚拟网络,无法监控主机的实际网络流量,仪表板将显示空数据。

运行

在浏览器中访问 http://<群晖IP>:2911 ,首次使用需要设置密码

启动后会自动开始监控网络流量(老苏运行的是 Patrol Mode

右上角可以切换为中文

下面的截图均来自官方

  • 瞭望塔:是一个实时世界地图,以弧线显示流量抵达的外部服务器

  • 无线电:是一个 DNS 查询流,实时显示网络中谁查询了什么域名、解析到哪个 IP、响应有多快,并标记已知的追踪器、广告、恶意软件域名(标记但不阻止)

  • 辖区地图:是根据观察到的交通生成的网络图,无需手动输入

  • 花名册:显示能看到的所有的设备,在线状态、首次和最后一次看到的设备、IPMAC、制造商、主机名

  • 通缉名单:可疑设备会出现在这里

  • 帮助:可以仔细看看,有助于理解和使用

注意Patrol Mode 需要 NET_RAWNET_ADMIN 权限,Docker 部署时已自动配置。

注意事项

  1. 网络模式:必须使用 network_mode: host,否则无法监控主机的实际网络流量
  2. 权限配置:仅添加 NET_RAWNET_ADMIN 权限,不要使用 privileged: true
  3. 数据持久化:数据库存储在 /data 目录,建议使用命名卷或固定目录进行持久化
  4. Patrol Mode:要监控其他设备的流量,需要在路由器上配置镜像端口(
    SPAN/Mirror Port
  5. 加密 DNSDNS over HTTPSDNS over TLS 的查询无法被监控,这是正常现象
  6. Docker Desktop:在 macOS/WindowsDocker Desktop 上,host 网络模式是虚拟机内部的网络,建议直接运行二进制文件

参考文档

291-Group/LAN-Sheriff: LAN Sheriff watches which servers your network talks to. Self-hosted, no account. Observes only; blocks nothing.
地址:https://github.com/291-Group/LAN-Sheriff

LAN Sheriff - Docker Image
地址:https://hub.docker.com/r/291group/lan-sheriff

LAN Sheriff 官方网站
地址:https://lansheriff.com/