
DoH与DoT的基本概念
DoH(DNS over HTTPS)的工作原理
DoH(DNS over HTTPS)是一种通过HTTPS协议传输DNS查询请求的加密DNS协议,将DNS解析请求封装在标准的HTTPS请求中发送至DNS服务器。传统的DNS查询使用UDP 53端口以明文形式传输,查询内容可被中间网络截获和篡改,导致DNS污染问题。DoH通过使用HTTPS协议(端口443)对DNS查询内容进行TLS加密,使得查询请求与普通网页访问的流量特征完全一致,运营商或防火墙无法区分DNS查询和普通网页浏览,也就无法对特定域名进行污染投毒。DoH的请求格式为https://DNS服务器域名/dns-query,如https://dns.google/dns-query或https://1.1.1.1/dns-query。
DoT(DNS over TLS)的工作原理
DoT(DNS over TLS)是一种通过TLS协议加密DNS查询的加密DNS协议,在DNS查询的客户端和服务器之间建立TLS加密通道,所有查询内容通过该通道传输。与DoH不同,DoT使用专用的853端口进行通信,而非复用到443端口的HTTPS流量中。DoT的加密强度与DoH相同,均使用TLS协议对查询内容进行加密保护,确保查询请求在传输过程中不被中间网络截获和篡改。DoT的配置格式为tls://DNS服务器IP:853,如tls://1.1.1.1或tls://dns.google,但解析域名形式的DoT服务器时存在DNS死锁风险,推荐使用IP地址形式。
加密DNS解决的核心问题
DoH和DoT共同解决了传统UDP 53端口DNS查询存在的三大问题:DNS污染、DNS窃听和DNS篡改。DNS污染是运营商或防火墙对特定域名的查询返回错误IP地址,导致网站无法访问或跳转至异常页面;DNS窃听是中间网络截获用户的域名查询记录,了解用户的网络访问行为;DNS篡改是中间网络修改DNS查询的响应结果,将用户引导至钓鱼网站或广告页面。DoH和DoT通过加密查询内容,使得中间网络无法获取用户查询的域名信息,也无法对查询响应进行篡改,从根本上解决了上述三大问题。
DoH与DoT的区别与对比
端口与协议特征的不同
DoH和DoT在传输层使用的端口和协议特征存在明显差异,这直接影响了两种协议在不同网络环境中的可用性。DoH使用HTTPS协议(端口443),流量特征与普通网页访问完全一致,在防火墙看来DoH查询与普通的HTTPS浏览无法区分,因此难以被识别和针对性阻断。DoT使用专用的853端口,流量特征相对明显,在实施严格网络管控的环境中可能被识别并阻断。从隐蔽性角度来看,DoH优于DoT。
配置复杂度的差异
DoH和DoT在Clash配置中的写法略有不同,配置复杂度也因是否需要处理DNS死锁而异。DoH的配置格式为https://DNS服务器域名/dns-query,需要服务器支持HTTPS且提供标准的DoH端点路径;DoT的配置格式为tls://DNS服务器IP或tls://DNS服务器域名。DoH需要额外处理DNS死锁问题,因为DoH服务器的域名本身需要通过DNS解析,而DoT若使用IP地址形式则可完全避免DNS死锁。从配置复杂度来看,使用IP地址的DoT配置更简洁。
适用场景的选择建议
在网络环境相对开放的环境中,DoT的配置更简洁且性能略优,适合优先选用。在网络审查严格的网络环境中,DoH的流量特征与普通HTTPS一致,更难被识别和阻断,适合优先选用。若DoT的853端口被运营商封锁,应切换为DoH使用443端口穿透防火墙。实际使用中,可将两者同时配置在Clash的nameserver或fallback列表中,如nameserver: - tls://1.1.1.1 - https://dns.alidns.com/dns-query,根据网络环境动态选择可用协议。
Clash VPN对DoH和DoT的支持情况
内核层面的原生支持
Clash VPN从较早期的版本开始就原生支持DoH和DoT协议,无需安装额外插件或扩展即可使用。原版Clash内核和Mihomo内核均支持在dns配置字段中配置DoH和DoT格式的DNS服务器地址,Clash会将DNS查询请求按照指定的协议格式封装并发送到配置的DNS服务器。DoH支持https://前缀的地址格式,DoT支持tls://前缀的地址格式,两种协议可在同一个配置文件中混合使用。
图形界面客户端的支持
Clash Verge Rev等图形界面客户端同样支持DoH和DoT的配置,用户可在设置界面的DNS选项中直接填入DoH或DoT格式的DNS服务器地址。在Clash Verge Rev中,用户进入「设置」页面找到DNS设置区域,在nameserver或fallback字段中直接粘贴DoH或DoT地址即可,客户端会自动识别协议类型。部分客户端还提供了预设的DoH/DoT服务器选项(如Cloudflare、Google、阿里云),用户可直接在下拉菜单中选择,无需手动输入完整地址。
配置DoH/DoT时需注意default-nameserver
在Clash vpn中配置DoH或DoT时,必须正确配置default-nameserver字段以避免DNS死锁。当nameserver中使用了DoH格式的地址(如https://dns.google/dns-query)或DoT格式的域名形式(如tls://dns.google)时,Clash需要先解析这些服务器域名才能建立加密DNS连接。default-nameserver用于解析这些DNS服务器的域名,因此必须填入纯IP地址形式的DNS服务器,如default-nameserver: - 223.5.5.5 - 119.29.29.29。若default-nameserver配置不当,Clash启动后所有域名解析将失败。
DoH/DoT在Clash中的配置方法
nameserver中使用DoH/DoT
在config.yaml的dns字段中,将nameserver的地址配置为DoH或DoT格式即可启用加密DNS解析。配置示例为nameserver: - tls://1.1.1.1 - https://dns.alidns.com/dns-query,Clash会优先使用第一个DNS服务器进行解析,若第一个不可达则依次尝试后续服务器。nameserver中的DoH/DoT服务器负责解析国内域名和作为默认解析通道,建议配置国内支持DoH/DoT的DNS服务器(如阿里云https://dns.alidns.com/dns-query)以保证国内网站的快速访问。
fallback中使用DoH/DoT作为境外域名解析
在fallback字段中配置DoH或DoT格式的境外DNS服务器,确保境外域名的解析请求通过加密通道完成。配置示例为fallback: - tls://1.1.1.1 - https://dns.google/dns-query,将Cloudflare和Google的加密DNS服务作为境外域名解析通道。fallback中的DNS服务器通常使用纯IP地址形式的DoT(如tls://1.1.1.1)以避免DNS死锁,若使用域名形式则需确保default-nameserver能解析该域名。
default-nameserver的DoH/DoT适配
default-nameserver必须使用纯IP地址形式的DNS服务器,不能使用DoH或DoT格式。配置示例为default-nameserver: - 223.5.5.5 - 119.29.29.29,使用国内公共DNS的纯IP地址作为初始化解析通道。当nameserver中配置了https://dns.google/dns-query时,default-nameserver中的223.5.5.5负责解析dns.google这个域名,从而建立DoH连接。若default-nameserver配置错误,Clash将无法解析DoH/DoT服务器的域名,所有加密DNS查询都会失败。
国内常用DoH/DoT服务器推荐
阿里云DNS的DoH/DoT服务
阿里云DNS(223.5.5.5)提供了公共的DoH和DoT加密DNS服务,是国内用户配置加密DNS的首选之一。阿里云DNS的DoH地址为https://dns.alidns.com/dns-query,DoT地址为tls://dns.alidns.com。该服务在国内部署了多个解析节点,对中国大陆用户的响应速度极快,且能返回国内网站的最优CDN节点IP地址,确保国内网站访问速度。阿里云DNS的DoH/DoT服务免费且稳定,适合作为nameserver中的国内加密DNS通道。
腾讯云DNS的DoH/DoT服务
腾讯云DNS(119.29.29.29)同样提供了公共的DoH和DoT加密DNS服务,是国内用户加密DNS配置的优质选择。腾讯云DNS的DoH地址为https://doh.pub/dns-query,DoT地址为tls://dot.pub。腾讯云DNS在国内的解析准确性高,对国内域名的CDN调度准确,可有效优化国内网站的访问体验。将阿里云DNS和腾讯云DNS同时配置在nameserver中,可提升国内域名解析的容错性和稳定性。
境外DoH/DoT服务器推荐
境外DoH/DoT服务器主要用于fallback中的境外域名解析,推荐Cloudflare DNS(1.1.1.1)和Google DNS(8.8.8.8)。Cloudflare DNS的DoH地址为https://1.1.1.1/dns-query或https://cloudflare-dns.com/dns-query,DoT地址为tls://1.1.1.1。Google DNS的DoH地址为https://dns.google/dns-query,DoT地址为tls://dns.google。境外DoH/DoT服务器通过代理通道访问时效果良好,建议使用DoT的纯IP地址形式(如tls://1.1.1.1)以避免DNS死锁。
DoH/DoT配置的注意事项与常见问题
DNS死锁的预防
DNS死锁是指Clash无法解析DoH/DoT服务器自身的域名,导致所有DNS查询失败的状态。预防DNS死锁的关键是确保default-nameserver配置正确,且nameserver和fallback中的DoH/DoT地址能通过default-nameserver解析。使用DoT时,推荐使用纯IP地址形式(如tls://1.1.1.1)而非域名形式(如tls://dns.google),纯IP形式不需要解析服务器域名,彻底避免了DNS死锁的风险。
DoH/DoT解析速度的优化
DoH/DoT的加密握手过程会增加DNS解析的延迟,但通过合理的配置可以将延迟降到最低。建议使用fallback-filter的geoip: true配置,只对境外域名使用fallback中的DoH/DoT服务器,国内域名仍由nameserver中的国内DNS快速解析。同时使用Fake-IP模式可大幅减少DNS解析的实际等待时间,因为Clash在Fake-IP模式下无需等待真实DNS解析完成即可返回虚拟IP地址,大幅降低了DoH/DoT握手延迟对用户体验的影响。
网络环境变化时的切换策略
当网络环境发生变化时(如从家庭网络切换到手机热点),DoH/DoT服务器的可达性可能发生变化,需要灵活调整配置。若DoH服务器不可达,Clash会自动尝试配置列表中的下一个DNS服务器,因此建议在nameserver和fallback中各配置2-3个备选DNS服务器。若所有加密DNS均不可达,可在nameserver中保留一个非加密的国内DNS(如223.5.5.5)作为最终保底方案,确保在网络环境变化时DNS解析仍能正常进行。
常见问题FAQ
DoH和DoT哪个更安全?
DoH和DoT使用相同的TLS加密技术,加密强度完全一致,安全性上没有本质区别。两者的差异在于传输层使用的端口和流量特征:DoH使用443端口,流量与HTTPS网站访问无法区分,更难被识别和阻断;DoT使用853专用端口,流量特征更明显但协议更简洁。在严格网络环境中,DoH的隐蔽性更好。
Clash中配置DoH后DNS解析失败怎么办?
首先检查default-nameserver是否配置了纯IP地址形式的DNS服务器(如223.5.5.5),这是解析DoH服务器域名的前提。其次确认DoH地址格式是否正确,正确的DoH地址为https://域名/dns-query格式。若仍失败,尝试将DoH替换为DoT的纯IP地址形式(如tls://1.1.1.1)规避DNS死锁风险。
国内DNS的DoH服务会被封锁吗?
阿里云DNS和腾讯云DNS的DoH服务在国内正常使用,不会被封锁。但部分公共DNS的DoH服务可能因网络策略在某些地区不可达,建议在配置中同时保留非加密的国内DNS作为备选,确保解析的可靠性。
DoH/DoT和Fake-IP模式可以同时使用吗?
可以。DoH/DoT负责真实的DNS加密查询,Fake-IP模式负责将域名映射为虚拟IP地址加速响应,两者功能独立且互补。启用Fake-IP模式后,Clash仍然需要通过DoH/DoT建立Fake-IP映射所需的域名-IP关联,两者同时配置不影响各自功能的正常运作。