使用 Unbound + DNSCrypt 搭建无污染 DNS

声明


所需工具


DNSCrypt 是 OpenDNS 发布的加密 DNS 工具,可加密 DNS 流量,阻止常见的 DNS 攻击,如重放攻击、观察攻击、时序攻击、中间人攻击和解析伪造攻击。

Unbound 是一款带验证的(validating)、递归(recursive)及具有查询结果缓存(caching) 的 DNS 解析器(resolver).

NirCmd 是一个可以让你的批处理摆脱黑漆漆命令行界面的小工具

NirCmd is a small command-line utility that allows you to do some useful tasks without displaying any user interface.)

流程分析


我们借用一个简洁易懂流程图来解释一下这个递归 DNS 的工作流程

将 Unbound 和 DNSCrypt 组合使用的原因有以下几个:

  1. Unbound 不支持加密查询,但 DNSCrypt 支持
  2. DNSCrypt 不支持缓存已查询结果,而 Unbound 支持
  3. Unbound 还支持自定义解析结果,替代 hosts 、屏蔽广告域名、恶意软件域名等更多功能,相对 hosts 来说更为灵活
  4. 国内域名由国内 DNS 解析,国外域名由 DNSCrypt 向 OpenDNS 解析,既防污染又不影响 CDN

简而言之,如图所示,这套方案就是使用 DNSCrypt 作为 Unbound 默认的上游服务器,而 DNSCrypt 又以 OpenDNS 为上游服务器作加密的 TCP DNS 查询。

使用方法


  • 下载 DNSCryptUnboundNirCmd 32-bit 或 NirCmd 64-bit
  • 解压 dnscrypt-proxy-win32-full-1.6.1.zipC:\Program Files\DNSCrypt\解压 unbound-1.5.7.zipC:\Program Files\unbound\解压 nircmd.zip或 nircmd-x64.zip到 C:\Windows\System32\
  • 下载配置文件并解压到C:\Program Files\unbound
  • 根据实际情况修改localdns.cmdunbound/unbound.conf中的相关路径
  • 运行localdns.cmd
  • 把本地 DNS 设置为 127.0.0.1,如图所示how_to_set_dns_windows
  • (可选)将localdns.cmd放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\即可实现开机自启动

一些需要说明的事


  • 常用 hosts 域名配置在unbound.local-zone.hosts.conf广告域名和恶意软件域名配置在unbound.local-zone.block.conf
  • 国内域名默认由 DNSPod Public DNS 和 114DNS 解析,配置在unbound.forward-zone.China.conf,其他域名则由监听在 9999 端口的 DNSCrypt 解析
  • 修改 Unbound 配置文件后,请先检查配置是否正确,再重启 Unbound 并刷新 DNS 解析缓存。详细方法如下
    cd /d "E:\Program Files\unbound\" //切换到你的 Unbound 所在目录
    unbound-checkconf unbound.conf //若配置通过,则提示 no errors in unbound.conf
    unbound-control -c unbound.conf reload
    ipconfig /flushdns

    instruction_to_check_and_restart

致谢


 

3 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注