检测与抓包
检测参数 [detect]
Section titled “检测参数 [detect]”[detect]threshold = 20 # 触发次数window = "60s" # 检测时长(滑动窗口)alert_duration = "10m" # 持续提示时长interval = "2s" # 扫描间隔| 项 | 默认 | 说明 |
|---|---|---|
threshold |
20 |
同一设备同一端口在窗口内出现的不同远端公网 IP 数量达到该值即告警 |
window |
60s |
滑动窗口长度,支持 30s / 5m / 1h 或整数秒 |
alert_duration |
10m |
持续期长度;期间只要有流量就续期,超时无流量则判定行为结束 |
interval |
2s |
定时扫描间隔,决定告警的发现延迟与 CPU 占用 |
告警生命周期
Section titled “告警生命周期”三个阶段共用一条状态机:
- 疑似:窗口内不同对端数达到
threshold,输出... 的端口 40000 疑似产生PCDN行为(近 1m0s 内 27 个对端IP,累计上行 …),相关IP为: … - 持续:进入持续期后,只要该端口仍有流量(任意对端,无论新旧)就刷新计时器,
不再要求窗口内数量达阈值。期间出现新的对端 IP(哪怕只有 1 个)就额外输出
持续产生PCDN行为(本轮累计 …),新增相关IP为: … - 结束:持续期内没有任何流量达到
alert_duration,输出PCDN行为结束(本轮累计 …), 结束本轮;之后可重新触发。
| 现象 | 调整 |
|---|---|
| 误报(正常应用被判定) | 调高 threshold,或延长 window |
| 漏检(PCDN 没被抓住) | 降低 threshold,或缩短 window |
| 告警过于频繁、日志刷屏 | 调大 alert_duration,或把 [log] level 保持 warn |
| 发现太慢 | 调小 interval(代价是 CPU) |
threshold 与网络规模强相关:设备多、应用多的网络先只开日志观察一两天,再确定取值。
抓包参数 [capture]
Section titled “抓包参数 [capture]”[capture]interface = "br-lan"promisc = trueprotocol = "udp"frame_size = 2048block_size = 65536num_blocks = 4snaplen = 256| 项 | 默认 | 说明 |
|---|---|---|
interface |
空(必填) | 监听网卡,如 br-lan、br0、eth0 |
promisc |
true |
混杂模式;关闭后只能看到发往/发出本机的帧(br-lan 等网桥接口上可以关闭,见下) |
protocol |
udp |
udp / tcp / all,大小写不敏感;同时决定内核 BPF 放行范围 |
frame_size |
2048 |
单帧上限,须能整除 block_size |
block_size |
65536 |
每块大小,须为页大小(4096)与 frame_size 的整数倍 |
num_blocks |
4 |
块数量,≥ 1 |
snaplen |
256 |
内核每包复制到用户态的最大字节数 |
环形缓冲合计 = block_size × num_blocks,默认 256KiB。缓冲与 snaplen 的取舍、容量估算
与预设组合见内存与性能。
protocol 的影响不止抓包
Section titled “protocol 的影响不止抓包”udp(默认):只统计 UDP,PCDN 以 UDP 为主,内核过滤后处理量最小。tcp:只统计 TCP。all:UDP 与 TCP 都统计,同一「MAC + 端口」上的两种协议各自独立告警与封禁。
防火墙的封禁协议跟随触发报文:UDP 触发只封 UDP,TCP 触发只封 TCP。所以改了 protocol
也会同时改变封禁范围;[firewall] enabled = true 时热重载会一并原地重建防火墙后端。
网卡与设备归属
Section titled “网卡与设备归属”设备归属按网卡自身所在网段判定(IPv4 子网 + IPv6 前缀),属于本网段 / 链路本地的算本端设备, 其余算远端对端。因此:
- 必须部署在 LAN 侧网桥,才能看到各设备真实 MAC;
- 只有全球可路由的远端对端被统计,内网、链路本地(
fe80::/10)、ULA(fc00::/7)、 组播、环回都会被过滤; - 网卡没有地址时会退化为「非公网即本端」的判断;
- 同一设备的 IPv4 与 IPv6 按「端口 + 地址族」分别统计,告警中展示的设备 IP 始终与该端口流量 所属地址族一致。
IPv6 支持完整:会跳过 Hop-by-Hop、Routing、Fragment、AH、Destination Options、Mobility 等 扩展头后再定位 TCP / UDP;非首片分片报文不会被误解析。
interval 到期时的扫描会产生告警事件;抓包层的实际生效缓冲会打在启动日志里:
抓包缓冲:frame=2048B,block=65536B × 4 块 = 256KiB,snaplen=256B(可在 [capture] 中调整)开始监听网卡 br-lan:触发阈值=20,时长=1m0s,持续提示时长=10m0s,扫描间隔=2sinfo 等级下的完整输出示例见日志、时区与隐私。