https://github.com/291-Group/LAN-Sheriff
docker run -d \
--name lan-sheriff \
--privileged \
--net=host \
-v /mnt/scsi2.1-1/docker/lan-sheriff:/data \
-e LS_CAPTURE_IFACE=br-lan \
-e LS_SUBNET=10.10.10.0/24 \
ghcr.nju.edu.cn/291-group/lan-sheriff:latest
Docker 根目录:/mnt/scsi2.1-1/docker
docker compose
#https://github.com/291-Group/LAN-Sheriff
#http://10.10.10.10:2911/
services:
# 定义一个服务,名字叫 lan-sheriff
lan-sheriff:
# 使用的镜像:从 ghcr.io 拉取 lan-sheriff:latest 最新版镜像
image: ghcr.io/291-group/lan-sheriff:latest
# 容器名称,docker ps 看到的名字
container_name: lan-sheriff
# network_mode: host → 主机网络模式
# 容器**不单独创建虚拟网卡,直接复用宿主机网卡**,才能抓局域网数据包,这是本程序关键
network_mode: host
# pid: host → 容器复用宿主机进程命名空间,可以看到宿主机所有进程
pid: host
# privileged: true 特权模式,给予容器很高权限,抓包、操作网络需要这个
privileged: true
# 重启策略:除非手动stop,否则自动重启(开机自启、崩溃自动拉起)
restart: unless-stopped
volumes:
# 挂载目录:宿主机当前目录下 ./data 映射到容器内 /data
# 所有配置、数据库、日志都存在这里,删除容器数据不会丢失
- ./data:/data
environment:
# 环境变量
- TZ=Asia/Shanghai # 设置时区上海,日志时间是北京时间
- LAN_SHERIFF_DATA_DIR=/data # 程序指定数据存放目录为容器内 /data
# ========== 关键新增:开启Patrol巡逻模式,监控局域网其他设备 ==========
- LAN_SHERIFF_MODE=patrol
# 指定内网网段 10.10.10.0/24
- LAN_SHERIFF_CIDR=10.10.10.0/24
# 网卡改成你NAS的物理网卡,例如 eth0 / enp2s0,需要根据你的NAS实际网卡修改
- LAN_SHERIFF_IFACE=ovs_eth1
# DL = 代理,给容器内网络请求走代理
- HTTP_PROXY=http://10.10.10.16:20122
- HTTPS_PROXY=http://10.10.10.16:20122
# 同时写小写 http_proxy / https_proxy,兼容不同程序(有些程序只识别小写)
- http_proxy=http://10.10.10.16:20122
- https_proxy=http://10.10.10.16:20122
# NO_PROXY:不走代理的地址段
# localhost本机、127回环、192.168.x.x、10.x.x.x内网网段,访问内网不走代理
- NO_PROXY=localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8
- no_proxy=localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8
healthcheck:
# 健康检查:每隔60秒执行命令 lan-sheriff status 检测程序是否正常
test: ["CMD", "lan-sheriff", "status", "--data-dir", "/data"]
interval: 60s # 每60秒检测一次
timeout: 10s # 检测命令最多等待10秒,超时判定异常
retries: 3 # 连续失败3次,标记容器不健康
start_period: 20s # 容器刚启动的前20秒,不做健康检查,给程序启动缓冲时间