>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
HTML

在 DNS 层面清理流量:无需臃肿的过滤列表

Last commit activity Repo size

如果你曾经配置过家庭 Pi-hole 或 AdGuard Home,可能经历过「贪多嚼不烂」的阶段。我自己也经历过:找到几十个不同的拦截列表,统统塞进解析器,然后看着计数器显示三百万个被拦截的域名,沾沾自喜。

这种快感通常持续不到晚上。家里某人突然发现银行应用登录失败,消息预览加载不出来,一半的必要服务都需要禁用广告拦截才能正常使用。最后只能花上几个小时翻查请求日志,追踪误拦截的源头。

开发者 badmojr 的 1Hosts 项目用完全相反的方式解决了这个问题。这个项目从 2017 年 12 月就开始了,专注于在保证过滤质量的前提下实现列表的精简。

项目理念

许多流行的拦截列表存在重复条目和过时条目。其中包含的域名早已关闭或更换了所有者,却在这些列表里存留多年。解析器仍然会浪费内存来存储它们,并在规则树中搜索它们。

1Hosts 的作者精心筛选规则,使列表占用最小空间,同时拦截广告、追踪器和钓鱼资源。与其提供数百个分散的文件,不如只提供两个基础版本,但以数十种针对特定软件的现成格式呈现。

两个版本,适用于不同场景

项目分为两个分支,混淆它们并不容易:

  1. Lite — 基于「设置后遗忘」原则的均衡版本。适用于家庭或办公室的日常使用。破坏正常网站、应用或智能设备的风险极低,误拦截保持在最少。

  2. Xtra(目前处于 Beta)— 面向隐私爱好者和追求激进拦截者的强硬选项。列表激进地切断遥测、新发现的可疑域名和有争议的资源。准备好面对一些合法网站被破坏的情况,需要手动将它们添加到白名单或向仓库提交报告。

作者提出了一个有趣的技巧:通过系统 hosts 文件直接在本地设备上使用 Lite 版本,然后将更激进的过滤放在 DNS 服务器链的上游。这样本地就能过滤掉基本的垃圾,避免 DNS 解析器日志被污染,而边缘情况下的错误会立即显示在网络日志中。

支持任意软件和技术栈的格式

配置网络过滤器时主要麻烦是语法不兼容。AdGuard 使用一套规则,Unbound 需要自己的配置,dnsmasq 则需要另一种格式。

在 1Hosts 中,列表会自动为大多数流行解决方案生成:

  • 标准 hosts 文件(适用于 Windows、Linux、Android 通过 AdAway)
  • Pi-hole 和 OpenSnitch 的域名列表
  • uBlock Origin 和 AdGuard Home 的规则格式
  • 本地 DNS 守护进程的配置:dnsmasq、Unbound、Knot、Bind9、PowerDNS
  • 防火墙规则,如 Little Snitch

在 dnsmasq 配置中连接 Lite 版本是这样的:

# Скачиваем готовый конфиг правил
curl -o /etc/dnsmasq.d/1hosts-lite.conf https://badmojr.github.io/1Hosts/Lite/dnsmasq.conf

# Перезапускаем службу
systemctl restart dnsmasq

如果你在家运行 Unbound,只需使用 include 指令拉取生成的配置文件:

# В секции server файла unbound.conf
include: "/etc/unbound/1hosts-lite.conf"

无需搭建自己的服务器,使用现成的公共 DNS

并非所有人都想为了在旅行时拦截手机上的追踪器而搭建自己的服务器。1Hosts 作者预见到了这一点,为支持 DNS-over-HTTPS(DoH)和 DNS-over-TLS(DoT)的公共安全 DNS 服务准备了集成方案。

例如,在 ControlD 中列表每 30 分钟更新一次,并支持通配符规则。你只需在 Android 的私人 DNS 设置中输入地址:

DoT: x-1hosts-lite.freedns.controld.com
DoH: https://freedns.controld.com/x-1hosts-lite

NextDNS、AdGuard DNS 和 RethinkDNS 也配置了类似的配置文件。对于移动设备来说,这通常已经足够,无需安装第三方应用。

1Hosts Banner

支持与社区

该仓库已获得超过 2.1k 星标,并持续定期更新。虽然有约九百个开放问题,但几乎都是误拦截报告。维护者会及时从列表中移除干扰流行服务的域名。

仓库本身采用免费的开源 MPL 2.0 许可证(Mozilla Public License)。这允许你自由地将这些列表作为自己构建或企业过滤策略的基础。

谁应该尝试

如果你厌倦了手动维护由十个不同拦截列表组成的庞大组合,不妨尝试重置设置,只安装 1Hosts Lite 版本。对于 95% 的日常家庭网络任务来说,这已经足够:广告消失,追踪器被拦截,电商和银行页面正常打开,不会出现意外。

Xtra 版本则只适合那些愿意处理被丢弃的请求,并乐于根据自己需求微调网络规则的人。

相关项目