轻量IP冲突检测工具V1.1.0(增加历史告警可查+告警趋势图+MAC白名单+网关MAC监测+长期运行优化)
数据持久化与历史查询
新增 SQLite 本地历史库(由 [storage] 段控制,默认开启),事件与设备表持久保存,关闭页面或重启程序后仍可追溯。
事件流面板右上角新增两个入口。
「历史告警查询」按时间范围(24 小时 / 7 天 / 30 天 / 不限)与类型(全部 / 冲突 / 漂移 / 攻击 / 网关)检索历史告警,最多返回最近 500 条并显示当前条数,条目操作与实时事件流一致,支持展开详情、复制详情与导出 CSV。

「历史趋势」以分类型柱状图呈现 24 小时 / 7 天 / 30 天的告警分布,便于判断冲突是否集中在某个时段反复出现。

网关 MAC 基线保护
在 [detect] gateway_ip 中填入网关 IP(多个以逗号分隔)后启用,留空(默认)不启用。程序以首次观测到的网关 MAC 为基线,此后变更即产生「网关 MAC 变更」严重告警,用于发现假冒网关。基线随历史库保存,重启无需重新学习;关闭历史库时仅在本次运行内有效。
一键复制事件详情
展开任意事件点「复制详情」,即得结构化文本:类型、时间、级别、次数、双方 MAC 与厂商/设备类型、涉及 IP、历次声明,可直接粘贴至工单或群组。
一键下载运行日志
事件流面板新增「下载运行日志」,可直接获取最近 2000 行日志,无需到程序目录翻文件。
筛选与分批显示
事件流支持时间范围筛选(不限 / 5 分钟 / 15 分钟 / 60 分钟),设备表支持「全部 / 冲突 / 本机」切换,导出 CSV 跟随当前筛选。设备表超过 200 行时分批加载,底部「显示更多」续载,上千台设备时页面加载依旧顺畅。

设备表新增「相关事件」列
按 IP 统计关联告警的发生次数,支持排序,便于优先关注持续产生告警的主机。

告警附带处置建议
钉钉推送与页面事件详情均增加一行处置建议。例如 MAC 漂移提示多为私接路由器、随身 WiFi 或 ARP 代理,建议在交换机上定位该 MAC 所在端口。
启动后自动打开监控页面
程序开始监听后自动打开浏览器并跳转监控页面;监听地址为 0.0.0.0 时按 127.0.0.1 打开,已开启访问令牌时自动携带令牌。该项由 [server] auto_open 控制,默认开启,设为 false 即关闭。
启动环境自检与失败日志
启动时在控制台列出自检结果:抓包驱动、管理员权限、监听端口占用、程序目录可写。启动失败时完整原因写入程序目录下的 startup_error.log 并打印到控制台。
MAC 漂移白名单
网卡绑定多个 IP 属正常用法,将这类设备的 MAC 填入 [detect] mac_drift_whitelist(多个用逗号分隔)后,其多个 IP 声明不再计为漂移。
白名单只作用于漂移判定:同一 IP 被两个 MAC 声明、伪造 ARP 攻击与网关 MAC 变更仍照常告警。默认留空。
本机标识按网卡判断
设备表「本机」筛选与事件流「本机」标记改为按本机全部网卡的 MAC 判断,一台机器绑定多个 IP 时都能被正确标识。

告警总数按累计值统计
「告警事件总数」与分类计数统一按累计发生次数统计,同一异常重复出现也计入,不随事件流滚动或列表上限裁剪而下降。总数含网关 MAC 变更与系统事件,故不小于三张分类卡(IP 地址冲突 / MAC 地址漂移 / 疑似 ARP 攻击)之和;点「清空」时计数一并归零。
合并窗口内保留完整明细
合并窗口([detect] dedup_window,默认 30 秒)内同一异常多次出现时,事件详情保留每次原始记录(最多 5 条),连续声明可完整追溯。
判定阈值可配置
[detect] arp_spoof_mac_threshold 与 [detect] mac_drift_ip_threshold 设为 0 即关闭对应判据;支持接收携带 802.1Q VLAN 标签的 ARP 报文,交换机镜像口场景可直接使用。
多 VLAN 环境下的漂移判定
将 [detect] drift_group_by_subnet 设为 true 后,MAC 漂移按 IP 网段分组统计,多归属设备不会被误报;网段按 [detect] drift_subnet_prefix(默认 24,即 IP 前三段相同者归为一组)划分。默认关闭,行为与 V1.0 版一致。
中文计算机名环境支持
计算机名包含中文时,程序可正常启动并开始监听。
日志自动轮转
日志按大小自动轮转,单文件超过 5 MB 即归档,最多保留 3 份,长期运行不持续占用磁盘;该值为内置固定值,不通过配置文件调整。
设备表自动老化
由 [detect] device_age_out 控制,默认 1 小时(3600 秒)无流量的设备移出设备表,避免手机等随机 MAC 设备长期堆积;带「冲突」标记者不参与老化,0 表示不老化。
冲突标记自动复位
设备表的「冲突」标记由 [detect] conflict_flag_ttl 控制,默认保留 600 秒(10 分钟)后复位,0 表示永久保留;事件流中的历史记录不受影响。
访问令牌
在 [server] token 中填入令牌后启用,所有接口需携带该令牌。页面首次以 http://<ip>:<端口>/?token=<令牌> 打开即可,同一标签页内自动记住(刷新不丢),换标签页或重开浏览器时在弹窗中填入令牌即可。留空时保持 V1.0 版行为,不校验。
响应安全头
默认开启一组安全响应头,不改变页面使用方式。
V1.1.0 新增配置项全部可选:沿用 V1.0 版的配置文件无需补齐,缺失项自动套用内置默认值,修改后重启生效。程序读取同级目录下的 config.ini(打包后即 exe 同级目录)。
页面访问与鉴权
[server] auto_open:默认 true。服务就绪后自动打开浏览器并跳转监控页面;设为 false 表示不自动打开。
[server] token:访问令牌,默认留空(不校验)。填写后所有接口请求须携带 X-Token 头,页面访问不受限。该值属凭据,请勿提交到公开仓库。
网关 MAC 基线保护
[detect] gateway_ip:网关 IP,默认留空。多个用逗号分隔;留空不启用网关 MAC 基线保护。基线随历史库保存,关闭历史库时重启后重新学习。
MAC 漂移判定
[detect] mac_drift_whitelist:MAC 漂移豁免名单,默认留空。多个用逗号分隔,分隔符与大小写不敏感;命中者不参与漂移判定,IP 冲突、ARP 欺骗与网关 MAC 变更不受影响。
[detect] drift_group_by_subnet:MAC 漂移是否按 IP 网段分组判定,默认 false。开启后按 [detect] drift_subnet_prefix 划分网段。
[detect] drift_subnet_prefix:分组判定的网段前缀长度,默认 24,即 IP 前三段相同的地址归为一组;32 及以上按单个 IP 分组。
设备表标记与老化
[detect] conflict_flag_ttl:设备表「冲突」标记保持时长,默认 600 秒;超时自动复位,0 表示永久保留。
[detect] device_age_out:设备表老化时长,默认 3600 秒(1 小时);超过该时长无流量的非冲突条目移出设备表,0 表示不老化。
历史数据
[storage] enabled:历史库开关,默认 true。关闭后不保存历史记录、不生成库文件,历史告警与历史趋势只在本次运行期间可用。
[storage] db_file:历史库文件名,默认 arp_history.db。相对路径按程序同级目录解析。
[storage] retention_days:历史事件保留天数,默认 30。启动时清理超期记录;0 表示不清理。
覆盖更新后需重启程序生效;配置文件沿用原有的一份即可,缺失的新增项自动套用默认值。
历史库在首次启动时自动创建;已有库文件不会被重建或覆盖,其中的事件保留(超期记录按 [storage] retention_days 清理)。
「清空」按钮同时重置网关 MAC 基线(相当于重新建立基线);事件流与设备表按原样清空。
控制台新增的自检行属正常输出;出现失败项按提示调整,完整原因见程序目录下的 startup_error.log。
MAC 漂移白名单默认留空,留空时漂移判定与 V1.0 版一致。
Q:设备表里不活跃的设备为什么会消失?
A:设备表自动老化,由 [detect] device_age_out 控制,默认 1 小时无流量即移出,设为 0 即关闭。
Q:设备上的「冲突」标记过一会儿不见了?
A:冲突标记自动复位,由 [detect] conflict_flag_ttl 控制,默认保留 10 分钟;事件流中的相关记录仍保留。
Q:页面提示「未授权」,接口返回 401?
A:说明已开启访问令牌。使用 ?token=<令牌> 打开页面,或在弹窗中输入令牌。
Q:历史告警查询查不到更早的记录?
A:历史记录按 [storage] retention_days 保留(默认 30 天,0 表示不清理),且单次查询最多显示最近 500 条。
Q:查询提示「历史库未启用」,或趋势图是空的?
A:历史库处于关闭状态,只在本次运行期间统计,重启后不再保留;开启历史库后可查历史,并按 24 小时 / 7 天 / 30 天统计趋势。
Q:某台电脑只绑了几个 IP,为什么提示 MAC 漂移?
A:漂移判定按同一 MAC 在统计窗口内声明的活跃 IP 数量触发,默认 4 个及以上。网卡绑定多个网段的 IP 属正常用法,把该网卡的 MAC 填入 [detect] mac_drift_whitelist 即不计为漂移。
夸克网盘给你分享了「ARP检测工具V1.1」,链接:https://pan.quark.cn/s/49086f6dba8c?pwd=3PBz提取码:3PBz
百度网盘分享的文件:ARP检测工具V1.1 链接: https://pan.baidu.com/s/1XS4RdH2EaI7SrNTKvqEAkg?pwd=gyv6 提取码: gyv6
