返回

文章详情

聪明的黑客在一个5美元的ESP32广告拦截加密狗中适配537,000个域名

Hacker News2026年7月19日 14:07

(图片来源: ZedAxis/YouTube) 要构建一个硬件基础的广告拦截DNS过滤器,成本最便宜可以是多少?如果你愿意回收一些被丢弃的旧硬件,那就是“免费”。如果你没有那么幸运呢?在内存危机的时代,即使是一个树莓派也要花费几百美元。不过,你知道吗,实际上你并不需要这么强大的设备。实际上,你可以用一个5美元的微控制器构建一个功能完整的广告拦截过滤器,阻止超过500,000个域名,延迟约为10毫秒。我们知道这是可能的,因为埃及全栈开发者ZedAxis(在GitHub上为@M-Abozaid)已经制作出了一个。使用ESP32-C3“SuperMini”板,他为自己的家庭网络创建了一个备用DNS,仍然提供广告拦截功能。他的主要路由器是一个Pi-hole,它是一个运行专用软件的树莓派,用来管理DHCP地址和DNS解析,并集成广告拦截功能。当Pi-Hole重启或其他不可用时,SuperMini作为备份。ZedAxis使用的具体ESP32-C3 SuperMini板。 (图片来源: ZedAxis/YouTube) 严格来说,我们还没有看到ZedAxis的创作在实际工作中,但没有理由相信它不起作用。ESP32系列嵌入式Wi-Fi微控制器是众所周知的产品,这种功能绝对不在其能力范围之外。事实上,这个具体的技巧允许使用ESP32-C3,这是一个成本降低版的芯片,没有某些高端型号上找到的8MB PSRAM。(ESP32有很多变种。)而ZedAxis使用的ESP32-C3只有400KB的RAM和4MB的闪存。由于这些有限的规格,他无法存储任何实际大小的明文黑名单;数据太多了。因此,他做了任何一位有心的黑客会做的事情:开始对数据进行哈希以减少其大小。使用40位FNV-1a哈希,因为32位会产生太多的冲突,64位则浪费空间,他能够在设备的闪存中存储约537,000个域名。该项目包括一个简单的GUI,你可以查看一些统计数据并配置自定义的阻止域名。 (图片来源: ZedAxis/YouTube) 不过,聪明的部分并不单单是哈希。构建过程下载一个或多个公共黑名单,剥离重复条目和注释,将每个剩余的域名哈希为40位值,排序结果列表,并将完成的数据库写入ESP32的闪存中。当DNS查询到达时,该设备以相同方式哈希请求的主机名,并对已排序的哈希表执行二进制搜索。如果找到匹配,请求会被阻止。否则,该查询将转发给上游解析器。根据ZedAxis的说法,完成的固件在大约10毫秒内回答阻止的查找只使用了约50KB的RAM。我为我的整个网络构建了一个2美元的广告拦截器 - YouTube观看这里 设计中还有另一个很妙的妥协。ESP32通常保留足够的闪存以容纳其固件的两个完整拷贝,允许通过空中(OTA)更新,而不必担心一个失败的刷新使设备无法启动。如果你不关心无线固件更新,你可以将第二个固件分区回收为黑名单数据库。启用OTA支持时,该项目的最大阻止域名数量约为250,000个。如果放弃OTA,这个数字跳升至约537,000个域名,而该微控制器的价格通常相当于一顿快餐的价格。ZedAxis将价格定为2美元;我没有找到超过5美元的SuperMini板,但在这个价格下,没必要再争论差异了。当然,这并不意味着要替代一个合适的Pi-hole或AdGuard Home安装。ESP32项目有一个简单的仪表盘,但它没有提供详细的每个客户端统计、历史查询日志或使这些平台有吸引力的所有操作组件。相反,它被设计为一种微小的保险。它安静地坐在网络上,仅消耗几十毫安的功率,如果主DNS服务器由于重启或停电而消失,客户端仍会获得经过过滤的DNS响应,而不是回退到路由器配置的任意解析器。获取Tom's Hardware最好的新闻和深度评测,直接发送到你的收件箱。备份广告拦截器在创作者的家庭网关中几乎不显眼。 (图片来源: ZedAxis/YouTube) 我最喜欢的细节是ZedAxis通过他ISP提供的光纤网关背面的USB端口为整个设备供电,这是一个华为OptiXstar家用光纤网关。USB连接并不承载任何数据;所有的集成就是路由器说“这里是5伏特”,ESP32回应“谢谢。”只是这个端口是一个方便的电源源,对于一个小得几乎在路由器后面消失的设备。所有通信

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡