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可能无法正常连接