现代安全DNS之DOH
DNS简述
域名系统(Domain Name System)是互联网的一项服务,它是域名与IP地址进行相互映射的层次结构分布式数据库。我们这里讨论的主要是DNS协议,即向域名系统进行查询域名所指向地址的协议,DNS协议通常使用TCP/UDP的53端口向DNS服务器进行查询,而DNS服务器会向域名所在的权威名称服务器进行递归查询,得到对应的IP地址后返回给用户,用户再和IP地址的服务器建立连接。现代大多数网站以及互联网连接都带有域名,所以设置合适的DNS服务器几乎成为上网冲浪第一步。
我们都在用哪些DNS服务器
大多数情况下,我们所使用的网络都有运营商提供的默认DNS服务器,因此没有手动设置DNS服务器也能正常访问互联网。然而在某些情况下,如运营商DNS服务器异常中断服务、用户希望获得更可靠的DNS服务等等,我们需要手动设置DNS服务器。
常用的DNS服务器有:
- 运营商默认DNS服务器
- 114 DNS
ipv4:114.114.114.114
- 阿里云DNS
ipv4:223.5.5.5
ipv6:2400:3200::1
- 腾讯云DNSPOD
ipv4:119.29.29.29
ipv6:2402:4e00::
- 百度DNS
ipv4:180.76.76.76
ipv6:2400:da00::6666
- Google DNS
ipv4:8.8.8.8
ipv6:2001:4860:4860::8888
- Cloudflare DNS
ipv4:1.1.1.1
ipv6:2606:4700:4700::1111
需要注意,错误的DNS设置会导致无法正常上网,此时更换其他DNS服务器或者切换回运营商默认服务器即可。
DOT/DOH是什么?
正如前面提到的,用户默认使用运营商提供的服务器,加上传统DNS协议没有经过加密,因此运营商可以对用户请求进行分析,甚至劫持用户请求(返回错误的IP地址或者引导到无关IP地址)。
得益于现代加密技术,DNS协议获得了升级。DOT(DNS over TLS)和DOH(DNS over HTTPS)是使用现代加密的DNS协议,顾名思义,DOT和DOH都使用TLS证书对DNS请求进行加密,相比DOT,DOH则是将DNS请求封装为更泛化的通用HTTPS请求。通过DOT/DOH,用户可以更加私密地访问互联网,而不用担心请求泄露和劫持.
目前国内提供DOT/DOH的主要是腾讯DNSPOD和阿里云公共DNS,国外有Google、Cloudflare等的服务:
- 阿里云公共DNS
DOT:dns.alidns.com
DOH:https://dns.alidns.com/dns-query
- 腾讯PODDNS
DOT:dot.pub
DOH:https://doh.pub/dns-query
- Google DNS
DOT:dns.google
DOH:https://dns.google/dns-query
- Cloudflare DNS
DOT:cloudflare-dns.com
DOH:https://cloudflare-dns.com/dns-query
如何设置DOT/DOH?
- 一般Android设备(Android 9+)支持DOT,在
系统设置->连接与共享->私人DNS
中“私人DNS提供商主机名” - 最新 Windows 11已经原生支持DOH,需要在
网络->属性->编辑DNS服务器->设置自定义模板
- 主流桌面浏览器Chrome, Edge, Firefox均支持DOH,移动浏览器有部分如Chromium的移动版对DOH提供支持
设置DOT/DOH后网络出现问题?
需要注意以下事项:
- DOT/DOH存在一定开销,加密连接需要和DNS服务器多次TLS握手,相比原始的DNS请求效率较低,尤其是在不稳定的网络环境中
- 在某些特定情境下(如校园网或者单位网络等)需要登录的场景,如果登录页面网站是内网DNS解析的域名访问,使用DOT/DOH会导致无法登录上网,需要手动关闭
- 在使用代理时也可能出现DOT/DOH设置导致无法上网的情况,请检查所使用代理的DNS设置是否与DOT/DOH冲突,或者关闭DOT/DOH
- 如使用国外DOT/DOH可能无法正常连接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 清風の小窝!
评论