赞
踩
由于传统DNS解析中存在的一些问题(见DNS解析过程),所以出现了类似于DOH
之类的技术,那么什么是DOH
呢?
DoH(DNS-over HTTPS)
。由于DNS查询会通过未加密的UDP连接
发送请求,任何在网络上侦听数据包的人都会知道我正在尝试访问xx.xx
网站。
DNSSEC
还通过提供一种检查DNS答案的有效性的机制来解决此问题,但是只有百分之几的域使用DNSSEC
。
为了提高用户的安全性和隐私性,需要对DNS查询进行加密
。DoH就是其中的一种方式,它是通过HTTPS发送DNS查询请求
。
RFC 8484
中定义了DoH的相关规范。支持DoH协议的服务器被称作DoH服务器
,支持DoH协议的客户端被称作DoH客户端
。
从前面的介绍,我们知道传统DNS的查询使用的是未加密的UDP协议发送和接受数据
,这十分的不安全。
RFC 8484规范
中定义了DoH的一些规范。如:
DoH一次TCP连接可多次发送DNS请求,长连接的方式提高了性能。通常情况下,DoH服务器不应该接受DoH客服端提供的cookies。DoH服务器必须实现GET
、POST
。DoH server 必须能够处理 application/dns-message
的请求。
dnscrypt
是位于DOH服务器上的一个客户端,dnscrypt
负责安全地转发DNS请求
DNSSEC
即Domain Name System Security Extensions
,DNS安全扩展
,是由IETF提供的一系列DNS安全认证机制
。DNSSEC通过数字签名来保证DNS应答报文的真实性和完整性
。简单来说,权威服务器使用私钥对资源记录进行签名,递归服务器利用权威服务器的公钥对应答报文进行验证。如果验证失败,则说明这一报文可能是有问题的。缺点是,不能保证可用性、对DNS解析性能有一定影响(占用更多的CPU、内存、磁盘等资源)。
HTTPDNS
HTTPDNS 使用HTTP协议进行域名解析,代替现有基于UDP的DNS协议
,域名解析请求直接发送到配置的HTTPDNS服务器,从而绕过运营商的Local DNS
,能够避免Local DNS
造成的域名劫持问题
和调度不精准问题
。
DoT
即DNS over TLS
,使用TLS对DNS查询进行加密
,保证数据的隐私性,不易被中间人窃听篡改,然后使用TCP传输DNS查询
。缺点是DoT使用固定的端口853
,中间人可以通过是否为853端口知道请求是否是DNS查询请求。
DoH
即DNS over HTTPS
,使用HTTPS协议发送DNS查询
,使用HTTPS的443端口
,中间人无法通过查看端口的方式来分别此请求是否为DNS查询请求。相比于DoT而言,DoH能够更好地隐藏DNS查询流量
。
国外****DoH
Cloudflare.dns:1.1.1.1/1.0.0.1
谷歌dns:8.8.8.8/8.8.4.4
IBM Quad9 dns:9.9.9.9
国内****DoH
阿里 https://www.alidns.com/
DNS over HTTPs(DoH)的URI接口 :(仅提供TLS API)
https://dns.alidns.com/dns-query?
https://alidns_ip/dns-query?
360 https://doh.360.cn/
通过curl发送一个DoH查询请求:
curl --location --request GET "htts://doh.360.cn/query?name=www.baidu.com" --header "Accet:application/dns-json"
DoH服务器返回的响应如下边所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。