type
status
date
slug
summary
tags
category
icon
password
DNS服务器工作原理
根据网络通讯原理,对于Router设备是通过IP地址进行路径的Forward;当通过域名(主机名)访问远程主机时,必须将相应的主机名解析为IP地址,DNS服务器就充当了这个角色。
在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

DNS服务器工作原理转载至:
https://blog.51cto.com/tiany/1421835
在日常中或者开发中 难免会遇到DNS泄露的问题》那我们应当如何预防?
首先我们要知道DNS为什么会泄露:
DNS泄露可能在多种情况下发生。以下是一些常见的情况:
- VPN配置问题:当你使用VPN时,DNS请求本应该通过VPN隧道发送,以保护你的隐私。但是,如果VPN配置不正确或存在漏洞,可能导致DNS请求绕过VPN,直接发送到本地网络或其他不安全的DNS服务器,从而产生泄露。
- 浏览器安全性漏洞:有时浏览器可能存在安全漏洞,可能使得DNS请求绕过代理或VPN,暴露真实IP地址和访问信息。
- 操作系统设置:某些操作系统配置可能会导致DNS请求绕过VPN,例如IPv6配置不正确或优先级不正确。
- 恶意软件:某些恶意软件可能会修改网络设置,导致DNS请求被定向到恶意的DNS服务器,以监视或截取用户的互联网活动。
- DNS劫持:在一些公共Wi-Fi网络中,恶意网络运营商可能会劫持DNS请求,并将它们重定向到欺骗性的或恶意的网站,从而暴露用户的信息。
- 网络供应商问题:某些互联网服务供应商(ISP)可能收集和记录DNS请求数据,以用于广告目的或其他用途。
- 错误的网络代理配置:如果你使用网络代理,但配置有误或不安全,可能会导致DNS请求泄露。
- DNS缓存问题:某些应用程序或设备可能会在本地缓存DNS响应,如果缓存不受保护,其他应用程序可能访问该缓存,从而暴露DNS信息。
为了避免DNS泄露,你应该定期检查VPN和网络设置,确保使用可信赖的VPN和DNS服务提供商,并时常更新软件和操作系统,以修复可能的安全漏洞。同时,使用安全的浏览器插件和网络防火墙也是保护隐私的重要措施。
DNS泄露会对我们造成不晓得损失与计算机危害所以我们应该怎样避免DNS泄露?
DNS泄露可能导致隐私泄露和计算机安全风险,因此确保避免DNS泄露非常重要。以下是一些方法,可帮助你避免DNS泄露:
- 使用可信赖的VPN:选择一个可信赖的虚拟私人网络(VPN)服务提供商,并确保其配置正确。VPN可以加密你的互联网连接,防止DNS请求被泄露。
- 启用DNS over HTTPS(DoH)或DNS over TLS(DoT):这些是通过加密DNS请求和响应来保护你的隐私的技术。大多数现代浏览器和操作系统都支持这些安全的DNS传输方式。
- 更新操作系统和软件:及时更新你的操作系统、浏览器和其他应用程序,以确保使用的是最新的安全修补程序和功能。
- 关闭IPv6:如果你不需要IPv6支持,可以在设备上禁用它,因为IPv6有时可能绕过VPN导致DNS泄露。
- 使用安全的网络代理:如果使用网络代理,请确保配置正确且安全。不安全的代理设置可能导致DNS请求绕过代理。
- 浏览器插件和扩展:使用一些安全扩展程序,如广告和脚本拦截器,以增强你的隐私保护和安全性。
- 防火墙设置:配置网络防火墙,限制不明来源的DNS请求离开你的网络。
- 使用DNS安全服务提供商:选择信誉良好且专注于安全性的DNS服务提供商,他们可能会采取措施保护用户隐私和安全。
- 警惕公共Wi-Fi网络:在使用公共Wi-Fi时,尽量不要处理敏感信息,因为一些不安全的公共网络可能容易发生DNS劫持和其他安全问题。
- 教育员工和用户:如果你是网络管理员,确保教育员工和用户有关网络安全的最佳实践,以减少安全漏洞和泄露的风险。
通过采取这些预防措施,你可以大大减少遭受DNS泄露的风险,从而保护你的隐私和计算机安全。
具体保护DNS示例:
域名系统
域名系统
域名系统的特点是分级、去中心化。一共分为了递归解析器、权威域名服务器、顶级域名服务器、根服务器四个等级。
当用户发起DNS请求时,会经历以下流程:
用户本机的解析器(Stub Resolver)向递归解析器(Recursive Resolver)发起请求。
如果递归解析器缓存了该域名,直接返回结果。如果没有缓存,则向根服务器请求。
根服务器向递归解析器返回顶级域服务器的地址。递归解析器向顶级域名服务器请求。
顶级域名服务器返回权威域名服务器的地址。递归解析器向权威域名服务器发起请求。
递归解析器收到权威域名服务器解析后的IP地址,返回给本机解析器。
在传统的DNS协议中,请求和响应都是明文的,也就是说,在发起请求的各个阶段,中间的操作者都能够看到一些信息。其中,递归解析器能够看到是谁请求了什么域名。由ISP提供的DNS服务器是递归解析器,被发现通常会收集大量个人信息,出售给广告商以获利。另外,明文的域名请求也使得政府的监管成为了可能。一旦请求恶意的网站,监管机构就能够切断对该网站的访问。
加密的域名请求 域名系统遇到的问题和HTTP非常类似。自然而然地,给DNS请求加密的标准被提了出来,一共有三种:DNS-over-TLS、DNS-over-DTLS、DNS-over-HTTPS。它们的目的都是通过一种公钥加密算法给DNS请求加密,从而防止用户的隐私被ISP侵犯。但是,这也带来了相同的问题,作为DNS请求操作者的公司就是值得信任的吗,比如Cloudflare和Google?这个方案不过是把信任从ISP放到了提供加密DNS请求服务的提供者上。
ODNS:保护DNS隐私的新标准
https://blog.51cto.com/u_15080026/3336308
ODNS基本流程
ODNS基本流程
为了解决上面DOT等标准无法解决的隐私问题,ODNS被提了出来。ODNS是Oblivious DNS的简写,由普林斯顿大学的Paul Schmitt、Anne Edumundson等人于2018年提出,未来将会形成一份IETF的标准。
ODNS的基本思想是在递归解析器和其它域名服务器之间加入一个服务器——ODNS服务器,由ODNS服务器去完成域名的递归解析。原来的递归解析器这时充当的是一个代理。ODNS的协议不仅能够保证递归解析器只能够知道是谁发起了请求,但不知道请求了什么,还能够保证ODNS服务器只知道请求的内容,但不知道是谁发起了这次请求。换句话说,处理DNS请求的各个节点服务器都没有办法把请求者和请求的内容联系起来,因此,保护了用户的隐私。
ODNS请求的流程如下:
当客户端请求域名时,本地解析器生成对称会话密钥,使用这个密钥加密域名,生成字符串s1。之后再使用ODNS服务器的公钥加密会话密钥,生成字符串s2。把整个加密后的字符串和ODNS的域名拼接在一起,形成一个新的域名请求——{s1}{s2}.odns。
发送域名请求给递归解析器,递归解析器把域名发送给权威域名服务器查找特定的odns域名。
ODNS解析器收到请求的域名,解密出会话密钥,再用会话密钥解密出真正想要请求的域名。
ODNS解析器按照递归解析器的流程解析该域名,从其它服务器获得响应。
ODNS解析器把响应加密后返回给客户端的递归解析器。
递归解析器把已经加了密的响应内容返回给本机解析器。
在上述流程中,ODNS解析器既是一个权威域名服务器,又是一个递归解析器。在接收ODNS后缀形式的域名请求时,它是权威域名服务器。在返回ODNS后缀形式的域名请求响应时,它是一个递归解析器。根域名服务器、其它权威域名服务器只能够看到ODNS发起了请求,但不知道背后真正发起请求的人是谁。客户端的递归解析器只能够看到客户端发起了请求,也不知道客户端到底请求了什么。而ODNS解析器虽然知道请求的内容是什么,但是它只能够看到客户端的递归解析器的地址,看不到客户端的真实地址。所以,在DNS的解析流程中,没有任何一个服务器能够同时看到请求者和请求的内容,除非递归解析器和ODNS是同一个服务器。
任播(anycast)是一种路由策略,可以选择若干目的节点中的一个作为数据报文的目的地,也即是一对多个中的一个,相比之下,多播(multicast)是一对多的。ODNS使用任播来实现ODNS解析服务器的复制,从而提高可用性和性能。在地理位置上,可以优先由离用户最近的ODNS解析服务器提供服务。当其中一个节点下线后,还有其它的节点提供服务。
ODNS:保护DNS隐私的新标准
https://blog.51cto.com/u_15080026/3336308
ODNS问题
ODNS的问题
尽管ODNS为用户带来了一定程度上的隐私保证,但它也引入了新的问题,这些问题中最重要的是性能问题。ODNS的加密和协议交互相比原有的会有额外的性能开销。同时,每一次请求都使用不同的对称密钥,会造成递归解析器的缓存失效,也就是说,即使请求相同的域名,但是递归解析器看到的是不同的内容,因此都会向ODNS发起解析请求。缓存失效带来了两个结果,一个是请求时间增加,另一个是网络中的流量会增多。
另外,ODNS的隐私保证是建立在一个前提之上——ODNS解析服务器的提供者和递归解析器的提供者不能是同一个人,或者说,他们没有共谋。在现实中,这样的假设可能很容易就被打破。
ODoH(Oblivious DNS over HTTPS) 文章最开头提到Cloudflare和Apple等公司开始支持这一新标准。它们基于这个新标准,设计、提出了ODNS的一种具体实现——ODoH,并部署到了现实环境中进行测试,以衡量它对网络的实际影响。另外,Cloudflare还开源了分别用Rust、Go语言编写的ODoH库,使用这个库可以实现ODoH的客户端、服务器程序。
ODNS:保护DNS隐私的新标准
https://blog.51cto.com/u_15080026/3336308
ODoH(Oblivious DNS over HTTPS)
提到Cloudflare和Apple等公司开始支持这一新标准。它们基于这个新标准,设计、提出了ODNS的一种具体实现——ODoH,并部署到了现实环境中进行测试,以衡量它对网络的实际影响。另外,Cloudflare还开源了分别用Rust、Go语言编写的ODoH库,使用这个库可以实现ODoH的客户端、服务器程序。
Cloudflare网站:https://dash.cloudflare.com/
- 作者:bagabaga
- 链接:#/article/3573672f-9563-4e9c-860d-b42a29a3acc6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。