选择角色
Unbound 等递归解析器和 AdGuard Home 等过滤界面解决相关但不同的问题。决定服务是自行递归还是转发到上游,并了解哪一方能看到查询。
保持私密
不受限制的公共解析器可能被滥用于反射攻击。请绑定到专用网络或仅允许授权来源,包括 IPv6。如果使用加密的 DNS,请进行身份验证或以其他方式适当限制访问,而不要假定 HTTPS 会使其变为私有。
设置日志策略
DNS 查询可能泄露敏感的浏览和应用程序活动。禁用不必要的保留,保护你保留的记录,并向用户说明范围。加密传输保护的是路径;它并不能阻止解析器本身看到查询。
测试多个名称
在启用的情况下验证 DNSSEC 行为、IPv4 和 IPv6 结果、过滤例外以及上游失败时的恢复。保留一种安全的访问修复方式,不要完全依赖你正在修复的解析器。
证明陌生人无法查询它
将解析器绑定到预期接口,定义允许的客户端范围并限制防火墙。在重启前验证配置。从授权客户端查询,然后从受信任网络外部重复:该请求应被拒绝或超时。单独检查 IPv6。接受任意互联网查询的解析器可能成为滥用来源。
- 在应用更改前运行配置验证器
- 测试一个允许的客户端和一个被拒绝的客户端
- 保持详细查询诊断的临时性
unbound-checkconf官方文档:未绑定的访问控制配置
保持加密 DNS 声明的准确性
DNS-over-HTTPS 或 DNS-over-TLS 会加密特定的传输路径。解析器仍会收到查询,而转发解析器可以将其传递给另一家运营商。审查上游选择和保留策略。如果你公开加密解析器端点,请使其访问策略像普通 DNS 端口一样审慎。
在开放端口前选择解析器链
一种实用的私有设计是让 VPN 客户端查询 AdGuard Home,再由 AdGuard 转发到回环地址上的 Unbound。随后由 Unbound 执行递归;AdGuard 提供过滤和管理界面。或者仅使用 Unbound 以减小技术栈。为每个监听器分配不同的地址/端口,并明确转发方向:将 Unbound 指回 AdGuard 会形成循环。在发布任何内容之前,先确定哪些私有客户端可以使用该服务。
- 除非有明确的授权客户端策略,否则保持公共入站 TCP 和 UDP 53 关闭。
- 为过滤接口和 DNS 监听器设置独立的访问规则。
- 安装前请检查端口占用情况;现有的系统解析器可能已经绑定了目标地址。
官方文档:AdGuard Home 设置
回环 Unbound 起点
在已安装 Unbound 的系统上,以下片段演示仅可在主机上访问的后端。请将其与发行版配置集成,而不要覆盖软件包设置或信任锚管理。高位端口可让另一个 DNS 前端使用端口 53。请验证完整的有效文件,然后通过已安装的服务管理器重新加载。远程客户端需要单独控制的隧道或前端;此片段有意不创建公共解析器。
server:
interface: 127.0.0.1
port: 5335
access-control: 127.0.0.0/8 allow
access-control: 0.0.0.0/0 refuse
access-control: ::0/0 refuse
# Validate the complete installed configuration:
unbound-checkconf官方文档:Unbound 配置参考
从两个网络运行验收清单
先在本地查询后端,再走常规客户端路径。检查普通 A/AAAA 记录、一个故意不存在的名称,并使用有文档记录的测试域验证 DNSSEC。从允许子网之外的机器重复测试:它不得获得递归服务。检查浏览器是否使用自己的加密解析器并绕过已配置的设备 DNS。更改期间保留一个临时的独立解析器,以免 DNS 错误移除你的管理路径。
- 本地诊断:dig @127.0.0.1 -p 5335 example.org A
- 检查 UDP 和 TCP 可达性,以及 IPv6 监听器。
- 确认过滤例外,并仅记录实际需要的诊断信息。
诊断超时、循环和验证失败
前端超时但本地后端正常,说明问题可能出在前端地址、防火墙或转发目标。反复的自主查询可能意味着循环。大范围 DNSSEC 失败可能涉及系统时间不正确或信任锚维护;应修复原因,而不是让验证保持禁用。如果只有大型响应失败,请排查 TCP 回退和网络路径。查询日志应保持临时启用,并在让解析器成为所有设备的依赖之前,测试重启和配置恢复。