跳转到内容

黑白名单

名单配置在 [filter] 块,按设备 MAC 过滤,每条可再限定端口。

list_mode 含义
whitelist(默认,可写 white) 命中的设备不检测,其余照常检测;名单为空即检测全部
blacklist(可写 black) 只检测命中的设备,其余即使达阈值也不告警

白名单为空时等于不过滤,因此不需要单独的「不启用」开关。

[filter]
list_mode = "blacklist"
# 该设备全部端口
[[filter.blacklist]]
mac = "aa:bb:cc:dd:ee:ff"
# 只检测指定端口(范围不足可能漏检)
[[filter.blacklist]]
mac = "11:22:33:44:55:66"
ports = [40000, 40001]
# 端口表达式:范围与斜杠列表可混用
[[filter.whitelist]]
mac = "22:33:44:55:66:77"
ports = ["40000-40010", "80/443"]
# 临时停用(不删除条目)
[[filter.whitelist]]
mac = "33:44:55:66:77:88"
enabled = false
# 为该设备启用全 UDP 端口封禁(需 [full_ban] mode = "device")
[[filter.blacklist]]
mac = "60:21:01:1b:0a:23"
full_ban = true
# 为该设备启用 UPnP 拦截(需 [upnp] mode = "device")
[[filter.blacklist]]
mac = "70:31:02:2c:1b:34"
upnp = true
字段 默认 说明
mac — 必填,大小写不敏感
ports 空 = 全部端口 元素可为整数或端口表达式字符串
enabled true 设为 false 可临时停用该条
full_ban false 为该设备启用全 UDP 端口封禁,仅 [full_ban] mode = "device" 时生效
upnp false 为该设备启用 UPnP 拦截,仅 [upnp] mode = "device" 时生效

黑名单里配了 ports 却漏掉设备实际使用的端口,会导致漏检(缺少拦截)。启动时会就此告警:

警告:黑名单中 N 个条目配置了端口……

不确定时先不写 ports,让该设备全部端口都参与检测。

修改名单、条目 enabled / full_ban / upnp 标记或 list_mode 后,SIGHUP / POST /api/v1/reload 会:

  • 同步名单,清除新排除设备 / 端口在 IPv4 与 IPv6 上的已有检测状态,并撤销对应端口封禁 ——无需等告警自然结束;
  • 同步关联的全端口封禁与 UPnP 策略;
  • 重启继承时也不会恢复这些已排除端口的告警与封禁。

名单摘要会打在启动日志里,便于确认生效:

名单:黑名单(只检测名单内的 2 个设备)
名单:黑名单(只检测名单内的 2 个设备,其中 1 个仅限指定端口)
名单:白名单(名单内 2 个 MAC 不检测,其中 1 个仅限指定端口)

名单只能在配置文件中设置,没有对应的命令行参数。

功能 依赖的名单方向
检测范围 黑名单 = 只检测名单内;白名单 = 名单内跳过
全 UDP 端口封禁(device 模式) 只对名单中 full_ban = true 的设备生效
UPnP 拦截 黑名单 = 只拦截名单内;白名单 = 拦截全部、仅放行名单内