×

dnscrypt-proxy:让本地DNS解析更安全、更快速

hqy hqy 发表于2025-12-03 00:13:21 浏览6 评论0

抢沙发发表评论

众所周知很多网络协议在设计之初是没有考虑安全问题,比如http和我们今天要说的DNS协议,http现在有了https已经能够很好地保障通信过程中传递信息安全问题,然而DNS协议依旧是裸奔状态。

打开wireshark,筛选DNS协议,我们就能清楚看到本机向DNS服务器发送了哪些域名请求

图片

同样的, 我们的运营商通过分析这些流量也能清楚看到我们访问了哪些站点,更有甚者通过劫持或者修改域名解析的IP地址,将我们请求的域名解析到其指定的站点,这在专业术语上叫DNS劫持或者DNS污染。

那有没有办法能让我们的DNS解析更加安全呢,其实是有的,如同https一样,现在主流的加密DNS有两种协议,一种叫DoH(DNS over HTTPS)另外一种叫DoT(DNS over TLS),前者是将域名解析过程使用https协议进行通信,后者是在DNS协议基础上使用TLS对通信包进行加密,类似https是在http基础上进行加密。笔者更加推荐使用DoH协议,因为其使用https通信兼容性更广,因为使用https其目标通信端口为443在一些限制访问端口的网站环境中能正常使用。DoT默认使用853端口,兼容性会差一些。

现在的Win11已经原生支持DoH配置,但笔者体验下来效果并不好,一些配置也不够灵活,这里推荐在本地安装支持DoH、DoT协议的DNS代理服务并将本机的DNS配置修改为127.0.0.1,这样域名解析会先通过明文的DNS协议请求本机的DNS服务,然后通过加密的https协议请求远端服务器获取解析结果。虽然中间多了一层DNS转换,但实际测试下来对访问速度影响并不大。

DNS代理服务应用有很多,比如今天要介绍的dnscrypt-proxy,还有AdguardTeam的dnsproxy和AdGuardHome。都可以实现加密DNS代理的需求,它们之间也各有区别,笔者以后有时间展开和大家聊聊,今天重点介绍dnscrypt-proxy。

dnscrypt-proxy项目地址:https://github.com/DNSCrypt/dnscrypt-proxy

下载并解压安装包其中dnscrypt-proxy为主应用文件,dnscrypt-proxy.toml为主的配置文件,我们可以将example-dnscrypt-proxy.toml文件更名为dnscrypt-proxy.toml。

图片

dnscrypt-proxy.toml中配置功能很多,这里介绍一些主要的功能配置。

视频加载失败,请刷新页面再试

错误码:44 刷新


全局配置:

监听端口,默认为回环地址的53端口,保持默认即可,注意端口不要冲突

listen_addresses = ['127.0.0.1:53']

负载均衡模式配置:

因为一般都会配置多个加密的DNS服务器,这些服务器的访问速度有快有慢,应该选择哪种负载均衡策略需要我们来进行配置。

支持的模式有下面几种:

  • 'wp2' (默认模式): 从两个随机选择的候选服务器中,根据实时往返时间(RTT)和成功率,筛选出性能更优的服务器。

  • 'p2': 从两台速度最快的服务器中随机选择一台。

  • 'ph': 从速度最快的一半服务器中随机选择。

  • 'p<n>': 从速度最快的N台服务器中随机选择一台,n由我们配置。

  • 'first': 总是选择最快的服务器

  • 'random': 从所有的服务器中随机选择一台。

推荐使用p2模式,从最快的两台服务器中随机选择一台。

lb_strategy = 'p2'

功能项配置:

启用热重载,后续修改cloaking-rules.txt、blocked-names.txt、blocked-ips.txt配置文件后,不需要重新启动服务

enable_hot_reload = true

日志项配置:

设置日志等级

log_level = 2

设置日志文件

log_file = 'dnscrypt-proxy.log'

启动和网络项配置

使用默认DNS服务器,用于解析加密DNS域名

bootstrap_resolvers = ['8.8.8.8:53', '114.114.114.114:53']

用于判断网络是否通畅

netprobe_address = '8.8.8.8:53'

转发规则配置:

可以设置转发规则,可以指定特定域名由特定DNS解析,如:*.xiaobaogua.com 开头域名由 10.0.0.1 DNS处理

forwarding_rules = 'forwarding-rules.txt'

DNS重写配置:

类似本机hosts文件,可以自定义域名和IP的映射关系

cloaking_rules = 'cloaking-rules.txt'

在cloaking-rules.txt中添加映射关系项

图片

域名解析为关系项设置的IP地址

图片

查询日志配置:

DNS查询日志保存到文件

file = 'query.log'

日志结果如下:

图片

可疑的查询日志配置:

可疑的查询日志保存文件名,主要是那些不存在解析记录的域名会被单独保存

file = 'nx.log'

测试一个不存在的域名

图片

query.log日志中记录该域名

图片

nx.log中会单独记录该域名

图片

阻止域名解析项配置:

阻止解析的域名清单,可以使用通配符

blocked_names_file = 'blocked-names.txt'

图片

配置域名后,当请求该域名时,会返回0.0.0.0的解析IP地址

图片

可以配置将阻止解析域名记录到日志文件

log_file = 'blocked-names.log'

阻止IP解析项配置:

与上面类似,这里配置阻止解析的IP,如果解析域名的IP命中该清单,就会被阻止

blocked_ips_file = 'blocked-ips.txt'

图片

在清单中添加要阻止的IP地址

图片

解析结果未返回IP地址

图片

加密服务器配置:

dnscrypt-proxy默认引用一些加密DNS服务器清单,实际测试发现这些服务器因为是在国外,解析速度很慢,特别影响速度。这里推荐添加国内的加密DNS服务器。

我们先将加密DNS源给注释掉

图片

添加国内加密DNS服务器地址配置:

[static.alidns-doh1]
stamp = "sdns://AgAAAAAAAAAACTIyMy41LjUuNQAJMjIzLjUuNS41Ci9kbnMtcXVlcnk"
[static.alidns-doh2]
stamp = "sdns://AgAAAAAAAAAACTIyMy42LjYuNgAJMjIzLjYuNi42Ci9kbnMtcXVlcnk"
[static.dnspod-doh1]
stamp = "sdns://AgAAAAAAAAAADDEyMC41My41My41MwAMMTIwLjUzLjUzLjUzCi9kbnMtcXVlcnk"
[static.dnspod-doh2]
stamp = "sdns://AgAAAAAAAAAACjEuMTIuMTIuMTIACjEuMTIuMTIuMTIKL2Rucy1xdWVyeQ"

这里需要说明一下,常见的DoH配置格式如下:

腾讯加密DNS:

官网:https://www.dnspod.cn/products/publicdns

DoH配置:https://doh.pub/dns-query

阿里加密DNS:

DoH配置:https://dns.alidns.com/dns-query

但在dnscrypt-proxy中需要使用DoH Stamp进行编码。

可以使用官方提供的在线工具:https://dnscrypt.info/stamps/

使用如下:

图片

也可以在该网站下查询公开的加密DNS服务器:https://dnscrypt.info/public-servers/

图片
图片


完成上面配置后,我们只需要双击 service-install.bat 就可以将其安装为服务。

图片
图片

随后在网络配置中将DNS服务器配置修改为127.0.0.1。

图片

再次抓包看看:

在以太网卡上已经抓取不到任何的DNS流量了

图片

修改为回环网卡可以看到本机的DNS请求通信

图片

筛选阿里DNS的IP地址,可以看到网络通信已使用加密https包,无法看到明文信息

图片

至此,我们通过在本地搭建加密DNS代理服务,将本地DNS请求转换为https加密协议方式进行通信,有效地降低了DNS请求被劫持和污染的风险。

但是!这并不意味着我们上网访问的域名就不会被知晓了。在https请求中,有一个SNI机制,全称叫Server Name Indication,就是在TLS握手时会以明文的形式确认请求的域名证书信息,这个通信过程中域名信息是明文展示的,通过流量可以抓取到请求域名信息。

图片

好啦,关于dnscrypt-proxy就介绍到这里,如果觉得自己配置比较麻烦,可以回复关键字"dnscrypt-proxy"获取已配置好的应用,双击安装即可以使用。


打赏

本文链接:https://kinber.cn/post/6002.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客