546 字
3 分钟
使用DOH和ECH防止DNS污染和劫持
2025-03-14

前言#

DoH 是一种安全协议,它通过 HTTPS(TLS 加密) 传输 DNS 解析请求,防止 DNS 查询被窃听、篡改或屏蔽。

使用加密DNS可以防止ISP看到你访问网站的sni。正常情况下你访问一个HTTPS网站,你需要向DNS发送一个查询这个域名的IP地址的请求。

由于传统DNS查询是明文传输的,因此ISP或其他网络中间人可以看到你查询了哪个域名。不过HTTPS是加密的,所以无法看到具体内容。但是可以得知你在访问什么网站。

并且你访问HTTPS网站需要进行TLS握手,握手时也会携带域名信息,也就是sniISP也会看到这个信息。

此时中间人可以劫持篡改DNS查询时返回的IP

当我们使用了加密DNS后,可以隐藏DNS查询的域名信息,但是由于TLS握手会携带sni信息,所以中间人依然能看到。然后我们的网站可以配置ECH来加密sni信息,

目前Cloudflare已支持ECH,只要使用了他家的CDN就会默认开启,他会将sni信息统一改成他家的,来实现隐藏真实的sni。这样中间人就无法劫持了。

ECH需要配合DoH加密DNS才能实现真正的作用。

windows 11配置加密DNS#

由于神秘原因国外所有的加密DNS都无法直接访问,本篇文章教大家配置阿里云的加密DNS

系统配置:设置 > 网络和 Internet > 找到网络的属性 > DNS服务器分配 > 改为手动 > 首选DNS填223.5.5.5 > DNS over HTTPS选择手动模板 > 填https://dns.alidns.com/dns-query

然后打开控制面板:打开查看网络状态和任务 > 选择你的网卡 > 属性 > Internet 协议版本 4(TCP/IPv4) > 属性 > 首选DNS填223.5.5.5备选填8.8.8.8 > 点击确定即可。

验证是否开启#

访问域名https://icp.gov.moe/cdn-cgi/trace 查看sni参数,如果是图中这样,则代表开启成功。

图片

或者也可以访问https://tls-ech.dev 如果如图所示则代表开启成功。

图片

使用DOH和ECH防止DNS污染和劫持
https://emohe.cn/posts/25/
作者
阿涛の小破站
发布于
2025-03-14
许可协议
CC BY-NC-SA 4.0