这是面向 ESP32-C3 等设备的 DNS 广告拦截项目,将域名列表编码为存于闪存的哈希表,提供 DNS 转发与拦截、网页管理及无线更新功能。
项目做什么
项目旨在让无需 PSRAM 的低成本 ESP32-C3 设备充当网络 DNS sinkhole:查询命中拦截列表时返回 0.0.0.0,未命中时转发至上游解析器。用户需将客户端 DNS 指向设备,或将设备设为备用解析器;项目不等同于浏览器广告过滤器。
与同类方案相比
README 描述的主要设计取舍是把域名转为排序后的 40 位 FNV-1a 哈希并存入闪存,查询时二分查找,以降低常驻 RAM 需求;还提供网页统计与管理、客户端及自定义域名操作、WiFi 配置门户、区块列表和固件无线更新。所述资源与查询数据是项目文档中的报告,未在此独立验证。
设计与创新
文档将闪存哈希表作为核心实现思路,并称可在较少 RAM 的设备上保存较大列表;同时说明哈希碰撞可能造成误拦截,且不同列表规模和分区方案有取舍。README 将其与字符串驻留 RAM 的方案作比较,但没有提供可复现的对照测试,因此无法确认其普遍性能优势或创新优先性。
适用场景
适用于愿意自行编译、烧录和配置设备的家庭或实验网络,可把 ESP32-C3 接入 WiFi 后作为指定客户端的 DNS 解析器,或作为主解析器的备用项。也可用于学习嵌入式网络、DNS 报文处理、闪存数据结构与无线固件更新;是否适合生产网络需结合设备可靠性和安全边界评估。
谁会受益
对想用小型开发板尝试网络级域名拦截的用户,项目提供从构建列表、烧录、配置 WiFi 到查看仪表盘和更新固件的流程,并允许导入多种格式的列表。自定义规则能力受格式限制,且部署者需要自行设置有效凭据、调整网络 DNS 配置并维护上游解析器和列表来源。
使用前需要注意
部分能力和数字仅见于仓库自述,尚无独立测试材料可核实;例如不同硬件上的实际查询表现、长期稳定性及列表规模上限。README 提及的分桶索引和 DHCP 服务仍列为待实现;经典 ESP32 仅标注为社区贡献且编译测试,主要测试目标是 ESP32-C3。
本文基于抓取时的项目 README 和仓库简介整理;功能、限制与文档可能随项目更新而变化。