最近DOH概念有点火,2018年DOH技术正式成为国际标准 (RFC8484),2019年谷歌公共递归8.8.8.8正式宣布支持DOH,随后Firefox、Chrome浏览器等应用程序也提供对DOH的支持,连微软也宣布Win10系统将来会支持DOH。DOH似乎已是大势所趋,锐不可当。国内IT运维人员也都跃跃欲试,希望能够通过这项新的技术来提升DNS服务的安全。但同时大家也比较迷茫,不知道从什么地方入手。今天就给大家介绍一下DOH技术基本原理和应用场景,同时也会对比一下这项技术和国内早已开始使用的HTTPDNS的区别。enjoy:

什么是DOH?

DOH就是DNS Over HTTPS,在DNS查询时,通过加密的HTTPS协议,代替传统UDP传输协议,保护DNS数据传输安全,可有效避免域名被运营商劫持、DNS缓存投毒等域名安全问题。

传统的DNS查询原理,我们在之前的ZDNS云学堂《权威DNS那些事儿》中已经做了详细介绍,在这里就不再赘述。简而言之,就是客户端进行域名解析时,首选向本地递归服务器发起查询,如果本地递归有缓存,直接返回查询结果给客户端,如果没有缓存,再去权威服务器查询。但是由于传统的DNS协议形成于互联网早期,直接基于UDP或TCP协议,未虑及现代安全性的需要,未利用密码学等手段进行加密或验证。因而,其无法抵御现代互联网常见的DNS投毒污染等攻击手段或非法监听。

DOH协议就是一种加密的DNS传输手段,它在整个DNS体系中作用,如下图:


从上图可以看到DOH协议主要是作用于客户端和公共递归服务之间的查询,保证这一段的数据加密传输,从而在一定程度上改善客户端到递归服服务器之间的传输安全问题。

如何开启DOH服务?

现在主流的操作系统都还不支持DOH协议,只有一些应用程序提供支持。以Firefox浏览器为例,成功开启DOH以后,所有使用Firefox浏览器访问的域名,都会通过DOH协议进行域名解析,具体开启方法如下:

首先在Firefox浏览器“首选项”配置页面找到“网络设置”项,点击“设置”按钮,如下图:


在弹出的页面中往下拉,找到“启动基于HTTPS的DNS”选项。


浏览器内置了Cloudflare和NextDNS的两个服务商的DOH服务器,也支持自定义。这里我们使用默认的Cloudflare。然后使用Firefox访问几个页面,同时抓包测试DNS解析情况。Cloudflare DNS服务器域名是cloudflare-dns.com,查询到对应的服务IP是104.16.248.249和104.16.249.249。


再来看下访问网页的抓包信息:


可以看到此时有多个加密的连接请求指向Cloudflare的DOH服器104.16.248.249,这些就是DOH的解析请求了,因为这些数据包是加密的,所以我们看不到详细内容,可见DOH解析已经生效了。

以上给大家介绍了DOH基本原理和使用方法,相信将来主流操作系统提供支持以后,DOH协议的使用会更加普及,但目前应用范围还比较窄。接下来我们再对比一下HTTPDNS,以便对其有更深入的了解。
HTTPDNS与DOH的异同

早在2014年,国内就已经提出了HTTTPDNS的概念,并且逐步在移动客户端APP中应用起来。

HTTPDNS使用HTTP协议或者加密的HTTPS协议进行域名解析,代替传统的基于UDP的DNS协议。这个定义看起来和DOH差不多,那他们有什么不同之处呢?

首先是标准不统一:HTTPDNS诞生于DOH协议之前,尚未形成统一标准,不同服务商报文封装都有自己的格式,移动客户端APP使用的时候通过集成服务商提供的SDK来接入HTTPDNS服务。

其次是应用场景不同:DOH解决的是客户端到递归服务器这一段的数据加密问题,而HTTPDNS可以是加密的,可以是不加密,诞生的最初目的,其实还不是为了加密传输,而是要让客户端绕过运营商递归服务器,直接向域名权威服务器发起DNS查询请求,从而彻底解决运营商的递归的劫持、TTL生效慢等问题。以ZDNS的HTTPDNS服务为例,其原理如下:

(ZDNS HTTPDNS原理)

举个例子说明,假如某电商手机客户端APP连接服务器使用的域名是abc.cn,使用传统DNS经常遇到运营商递归劫持情况,难以解决。因为abc.cn域名权威解析托管在ZDNS Cloud云服务,同时也支持HTTPDNS服务,所以某电商就在APP里通过集成SDK约定,APP里面的域名查询,都指向ZDNS HTTPDNS服务模块,通过HTTP协议,向权威解析服务器获取解析结果。这样客户端APP查询abc.cn域名时,就会直接到ZDNS云服务查询,完全避免了运营商的递归可能出现的劫持问题。如果查询APP里面还有其他外链域名,再通过ZDNS HTTPDNS服务部署的递归模块出去公网查询。

可以看到,DOH和HTTPDNS从实现方式上来说并没本质的不同,都是将DNS解析协议封装到HTTP(S)协议中,特别是RFC8484标准发布以后,如果HTTPDNS也遵循该标准,更是殊途同归,最终会融入DOH协议。

最后,再说下另外一种常见到的DOT协议(DNS over TLS),它和DOH原理和应用场景类似,都是用来加密DNS流量的,IETF将DOH协议定义为RFC8484,将DOT定义为RFC7858和RFC8310。DOH基于HTTPS协议,默认端口是443,DOT使用TCP作为基本连接协议,并通过TLS加密和身份验证进行分层,默认端口是853。它们功能和应用场景是完全一样的,只是两种不同的标准。安卓系统从9.0以后,开始支持加密DNS,其实就是DOT协议。


如果DNS解析过程未来都使用加密传输协议,那么现在一些常见的DNS安全问题将不复存在,比如域名劫持、TTL时间被篡改、缓存污染等问题,企业业务运行将更加安全稳定。

DNS云学堂 | 三分钟了解,最近大火的DOH与HTTPDNS、DOT的异同相关推荐

  1. DNS云学堂 | 权威DNS那些事儿(上)

    说到DNS,对于网络工程师来说并不是一个陌生的领域,但仍然常会有人问诸如权威DNS变更怎么做比较好.怎么设计更合理之类的问题. 这是因为对于大多数人来说,DNS只是一个不知不觉每天都在使用的网络服务, ...

  2. DNS云学堂 | 智能DNS让CDN乘风破浪

    智能DNS是DNS领域经常被提及的一个概念.在和运营商客户进行技术交流时,也总是被问及,到底什么是智能DNS?智能DNS在CDN中扮演什么角色?它是怎么样的工作机制?今天DNS云学堂就来具体讲解下.e ...

  3. DNS云学堂 | 替代传统Windows DNS功能,不得不说的动态域名更新

    为满足应用的双活改造和灵活切换的场景,很多企业依靠DNS系统实现应用与IP的解耦.搭建专业的DNS系统,替代传统Windows的DNS功能,成为了企业信息化发展健全的一个必要过程. 与域控结合,组建更 ...

  4. DNS云学堂 | 快速定位DNS解析异常问题,牢记这四种DNS状态码

    DNS的状态码在进行故障排查的时候起着至关重要的作用.在DNS的维护中会经常遇到DNS解析异常问题,通过DNS的状态码可以初步判断DNS解析的异常问题.本期云学堂通过详解DNS状态码的定义,给出常见状 ...

  5. 使用阿里云服务器三分钟搭建网站

    目录 一.购买服务器 二. 配置云服务器 三.下载XShell编辑器 四.使用XShell与服务器建立连接 五.安装宝塔 六.配置宝塔 七.配置多个站点 一.购买服务器 注意一定要购买CentOS内核 ...

  6. 使用阿里云服务器三分钟搭建网站教程(详细图文详解)

    使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择.Web环境.域名解 ...

  7. DNS云学堂 | 如何防范一本万利的DNS反射放大攻击

    一.前言 DNS诞生于上世纪80年代,就像很多新的技术出现只是为了解决一些简单的问题一样,其诞生之初也仅仅是为了解决网络上主机数量爆炸性的增长.IP地址不便于记忆的问题.其发明者可能连自己也没有想到, ...

  8. 云计算机玩绝地求生,三分钟教你如何用低配电脑畅玩绝地求生!

    2017年是鸡年也是吃鸡年,从三月份绝地求生的公测到今天吃鸡游戏的无限火爆,可能你已经体验过各种吃鸡手游,比如荒野行动.终结者2.全军出击.刺激战场等等等等或者说这些手游的PC版. 也许你玩的很开心, ...

  9. 云图“漫漫”,新华三云学堂2.0从校园走向城域

    在备受关注的第十六届中国教育信息化创新与发展论坛上,新华三集团展现了助力教育信息化的最新成果--云学堂2.0解决方案,这一跨越性升级方案引入了虚拟化和云计算技术,将学校教师办公.学生学习.教务管理等业 ...

最新文章

  1. 数组引用以避免数组降阶(c++)
  2. Xilinx IP核之FIFO
  3. 好久没有深入研究技术了,最近这两年太忙但又不知道忙了些什么
  4. 读书,上学,上名校!!!!!
  5. [转载]常用内部排序算法--用VB6实现
  6. 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
  7. 沟通CTBS助山东烟建实现财务数据大集中
  8. BIOS升级之:P5QPL-AM
  9. 计算机表格列宽怎么设置,excel自动调整列宽在哪?excel中怎么自动调整各行宽度...
  10. pass parameters to view(参数视图)
  11. Innovus和ICC2中设置partial placement blockage的命令和区别
  12. delphi 整理的常用函数
  13. Vue组件间通信之$emit/$on
  14. nginx负载均衡集群(二)
  15. djaogo知识点 python_Django基础知识点
  16. 【.NET框架】—— ASP.NET MVC5 初识(一)
  17. cpci计算机无法启动,CPCI
  18. Android异常之Unable to add window -- token android.os.BinderProxy@d0f9fcf is not valid;
  19. twaver html5软件价格,TWaver HTML5 (2D)----数据元素
  20. SQL Server 视图创建点滴 (转http://www.cnblogs.com/fineboy/archive/2008/05/10/236731.html#1191527)...

热门文章

  1. jsd2205-csmall-passport(Day13)
  2. 大学生社交网络问卷调查,社交情况问卷调查报告
  3. 2023四川农业大学计算机考研信息汇总
  4. win10在几个窗口间切换的快捷键
  5. FlutterWeb性能优化探索与实践
  6. python计算存款复利计算器_《Python核心编程》第五章:数字
  7. java文件是如何运转的?
  8. 世纪安图参加2014地理信息开发者大会
  9. Excel合并两列并自动换行
  10. java 四舍六入五成双_【数据小常识】“四舍六入五成双”