跳转到内容

pcdn-detector

面向家庭网络的 PCDN 检测与阻断工具

pcdn-detector

Go 实现的检测内核。纯 Go / 无 CGO,交叉编译出静态二进制,适合绝大多数路由器。

pcdn-detector-c

C 语言移植版。pthread + AF_PACKET,无 GC,配置、命令行与 API 均与 Go 版对齐。

luci-app-pcdn-detector

LuCI 面板。只做界面与运维,实际检测由上面两个二进制完成。

文档参考

命令行参数、完整配置模板与常见问题,以及 Go / C 实现专区的内部细节。

当某台设备在指定时长内、通过同一个本地端口连接了大量不同的远端公网 IP,就是 PCDN 节点的典型特征。pcdn-detector 在 LAN 侧网桥上抓包,按「设备 MAC + 本地端口 + 协议」统计窗口内的 对端数量,超过阈值即告警,并可自动:

  • 封禁该设备在该端口上的流量,行为结束时解封;
  • 在多端口被封后封禁该设备全部 UDP 端口(放行 DNS / NTP / DHCP 等);
  • 拦截 UPnP 请求,阻止设备自行打洞开端口;
  • 通过 HTTP API 与 LuCI 面板查看状态、解封、热重载配置。

建议用于家庭 / 小型网络环境:一台路由器、几台到几十台设备。判定只看「同一端口上出现大量 不同远端 IP」这一条统计特征,无法区分 PCDN 与其它 P2P 流量,因此会误杀正常的 P2P 软件:

  • BT / PT 下载:热门种子同样会在单端口连出大量对端,是最常见的误判来源;
  • P2P 联机:部分游戏、联机平台与加速器在节点发现阶段也会产生大量对端;
  • 其它高并发端点的应用,如某些分布式存储客户端、监控回传。

启用自动封禁前,建议先只开日志观察一两天,用黑白名单排除已知会跑 P2P 的设备, 或按实测结果把阈值调高。大规模 / 企业网络不要直接套用默认阈值。