一、DNS是什么
域名系统 (DNS) 将人类可读的域名 (例如,www.amazon.com) 转换为机器可读的 IP 地址 (例如,192.0.2.44)。
二、DNS解析过程
DNS的解析过程大致可以分为三种方式:
2.1 本地缓存解析
主机发起解析请求时,会先查询主机Localhosts文件是否有对应的域名-IP映射。如果查询失败,则查询主机DNS解析Cache。(360、百度浏览器实验发现不会读本地Localhosts、firefox会读本地Localhosts文件)
2.2 LocalDNS解析
本地缓存解析失败,则主机向ISP运营商的LocalDNS服务器发起解析请求。LocalDNS服务器会先查询本地解析配置池,如果查询失败,则查询LocalDNS解析Cache。
2.3 迭代解析
迭代解析由LocalDNS服务器发起,LocalDNS服务器根据配置不同可以把解析请求发给上级DNS服务器,或者向13台根逻辑域名服务器(编号分别为“A”至“M”,IPV4协议,美国拥有最多的根域名服务器,中国1台也没有,IPv6根域名服务器中国一共部署了4台,1台主根,3台辅根,占全球IPv6根域名服务器的16%)。
根DNS服务器会返回一个授权管理该域的顶级域名服务器IP,LocalDNS服务器收到应答后向该顶级域名DNS服务器发起查询请求。该顶级域名DNS服务器如果无法解析会返回下一级DNS服务器IP,LocalDNS向下一级DNS服务器发起查询请求,如此迭代下去,直到查询结束。
下图是AWS概述的递归型和授权型 DNS 服务如何协同工作以将终端用户路由到您的网站或应用程序。
- 用户打开 Web 浏览器,在地址栏中输入 www.example.com,然后按 Enter 键
- www.example.com 的请求被路由到 DNS 解析程序,这一般由用户的互联网服务提供商 (ISP) 进行管理,例如有线 Internet 服务提供商、DSL 宽带提供商或公司网络。
- ISP 的 DNS 解析程序将 www.example.com 的请求转发到 DNS 根名称服务器。
- ISP 的 DNS 解析程序再次转发 www.example.com 的请求,这次转发到 .com 域的一个 TLD 名称服务器。.com 域的名称服务器使用与 example.com 域相关的四个 Amazon Route 53 名称服务器的名称来响应该请求。
- ISP 的 DNS 解析程序选择一个 Amazon Route 53 名称服务器,并将 www.example.com 的请求转发到该名称服务器。
- Amazon Route 53 名称服务器在 example.com 托管区域中查找 www.example.com 记录,获得相关值,例如,Web 服务器的 IP 地址 (192.0.2.44),并将 IP 地址返回至 DNS 解析程序。
- ISP 的 DNS 解析程序最终获得用户需要的 IP 地址。解析程序将此值返回至 Web 浏览器。DNS 解析程序还会将 example.com 的 IP 地址缓存 (存储) 您指定的时长,以便它能够在下次有人浏览 example.com 时更快地作出响应。有关更多信息,请参阅存活期 (TTL)。
- Web 浏览器将 www.example.com 的请求发送到从 DNS 解析程序中获得的 IP 地址。这是您的内容所处位置,例如,在 Amazon EC2 实例中或配置为网站端点的 Amazon S3 存储桶中运行的 Web 服务器。
- 192.0.2.44 上的 Web 服务器或其他资源将 www.example.com 的 Web 页面返回到 Web 浏览器,且 Web 浏览器会显示该页面。
三、现有DNS分类
目前常见的DNS有运营商DNS、公共DNS、企业自己设计的自定义DNS
3.1 如果你使用的是运营商DNS,那么有以下问题你需要注意
域名劫持
攻击者常用的攻击方式可分为:攻击DNS 服务器,伪造DNS服务器,伪造DNS 应答报文
攻击DNS 服务器。DNS 服务器本身由于管理员配置或者管理不当存在安全隐患、使用了弱口令、没有及时更新漏洞补丁、防火墙存在安全隐患等。极易遭受黑客成功入侵,获取最高权限,修改DNS 配置域,在主机进行LocalDNS 解析时返回被篡改的IP 地址,使用户无法访问目标网站或者跳转非法网站。
伪造DNS 服务器。攻击者搭建非法DNS 服务器,配置解析域,修改对特定目标域名的IP 映射。如将www.ccb.cn(中国建设银行)的IP(202.106.80.106)映射成192.168.1.11(攻击者搭建的钓鱼网站),用户在难以察觉的情况下,泄露了自己的银行信息,给自己的财产安全带来严重的安全隐患。
伪造DNS 应答报文。DNS 解析所使用的UDP 报文使用明文传输,这就为伪造应答报文提供了可能性。攻击者往往事先对攻击域内发起ARP 欺骗攻击,将用户主机网关IP-MAC 映射成攻击者主机的MAC 地址,对攻击域内DNS 解析请求报文进行监听。针对敏感域名的DNS 解析请求,伪造DNS 应答报文。由于攻击者主机跟用户主机在同一网络域内,攻击者伪造的DNS 应答报文会先于LocalDNS 服务器的应答报文到达用户主机。用户主机对相同16 位标识字段的DNS 应答报文,优先相应先到达者。用户主机完成域名解析之后,就会丢弃之后所有相同 16 位标识字段的DNS 应答报文,即使用户主机收到了正确的DNS 解析包也不会响应,最终用户被跳转到了非法IP 所指向的网站。
跨网访问
传统的DNS 解析机制,可能因ISP 的DNS 服务器设置问题,导致对在多个ISP 部署节点的域名查询时,最终的查询结果指向其他ISP 内的主机,这就导致用户跨网访问问题。
3.2 公共DNS
公共DNS一般都能做到防劫持、域名变更秒级生效等功能 阿里云公共DNS。
3.3 自定义DNS
很多的大厂应用例如微信、小红书、美团、滴滴、抖音等,当用户手机上安装的app要向对应的服务器发起请求的时候,设置的DNS服务器通常是自己自定义的DNS,以便于有针对性的做一些优化。 基本要满足防劫持、域名IP秒级切换、单元化(精准调度)
原理
- 客户端直接访问自定义HTTPDNS的API接口,获取业务在域名配置管理系统上配置的访问延迟最优的IP。(基于容灾考虑,还是保留次选使用运营商LocalDNS解析域名的方式)
- 客户端向获取到的IP后就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向HttpDNS返回的IP发送标准的Http请求即可。
优点
-
安全,解析请求不再经过LocalDNS 服务器,用户主机直接使用HTTP 协议向公共DNS 服务器直接发起查询请求,即使链路存在域名劫持攻击,攻击者也无法伪造解析结果。可以有效避免因链路监听与LocalDNS 安全隐患所引起的域名劫持问题。
虽然HTTPDNS服务器本身也是一个域名HTTP服务器,走的是运营商的DNS解析。可是黑客劫持这个HTTPDNS服务器的IP映射没有用。如果你是黑客你劫持了这个HTTPDNS服务器,让用户的应用访问到了你伪装的HTTPDNS服务器是没有用的,因为你伪装HTTPDNS返回的包体的数据结构你是不知道正确的HTTPDNS服务器定义的数据结构是什么样子的(有SSL加密),客户端本地收到你伪装的结果也解析不了,这个事情对于黑客来说是没有意义的。
同时如果你是用浏览器访问的HTTPS的网站,如果被DNS劫持了,DNS是可以把你带到攻击者的ip上,但攻击者没有目标网站的证书私钥啊,所以ssl握手是不会成功的,浏览器的小绿锁会显示红叉,只要不强行继续访问就是安全的了。浏览器内置了权威机构的CA证书 -
调度精准:HttpDNS能直接获取到用户IP,某些厂商提供的IP地址库以及测速系统,可以智能将用户引导的访问最快的IDC节点上。
-
实现成本低廉,用户只需要稍作修改既可以完成对现有APP 的DNS 部署。
-
延迟下降,直接访问更可靠的DNS server,省去运营商LocalDns层层解析的过程。同时HTTP协议相对于UDP 协议更稳定,不容易丢包。
-
高可用性,HttpDNS在多个数据中心进行了部署,任意一个节点发生故障时均能无缝切换到备份节点,保证用户解析正常。
-
精准调度的能力(在以下几个场景你会需要精准调度的能力,个人认为这是公共DNS和自定义DNS最重要的作用)
场景1:中国用户旅游到美国,DNS根据用户ID解析,将用户解析到美国机房,导致用户无法访问到用户数据
场景2:有些小运营商没有DNS解析服务,会转交给其他运营商,此时就不是最精确的解析了
场景3:两个相关的域名,要求在同一个机房,由于DNS解析缓存,以及生效的不一致,导致两个域名解析到不同的机房,造成数据混乱
3.4 DNS-over-HTTPS
Google Public DNS
# 如何在Mozilla Firefox上启用DNS-over-HTTPS?
四、普通用户如何设置自己的公共DNS
1、114DNS: 国内用户量巨大的DNS,访问速度快,各省都有节点,同时满足电信、联通、移动各运营商用户。
DNS 服务器 IP 地址:
首选:114.114.114.114
备选:114.114.114.115
2、阿里 AliDNS: 阿里公共DNS是阿里巴巴集团推出的DNS递归解析系统,目标是成为国内互联网基础设施的组成部分,面向互联网用户提供“快速”、“稳定”、“智能”的免费DNS递归解析服务。
DNS 服务器 IP 地址:
首选:223.5.5.5
备选:223.6.6.6
3、Google DNS: 谷歌公共域名解析服务(Google Public DNS)是由谷歌公司于2009年发布的一项新的DNS服务。主要为了替代ISPs或其他公司提供的DNS服务。
已被污染,强烈不推荐!
DNS 服务器 IP 地址:
首选:8.8.8.8
备选:8.8.4.4
五、现在的dns劫持为什么越来越少了
DNS劫持的减少主要归功于多种安全技术的进步和普及,具体包括以下几个方面:
-
DNS加密协议的普及:
- DNS over HTTPS (DoH) 和 DNS over TLS (DoT) :这些协议通过加密DNS查询,防止中间人攻击和数据篡改。加密的DNS查询使得攻击者无法轻易劫持或篡改DNS解析过程。
-
更强的DNS安全性技术:
- DNSSEC(DNS Security Extensions) :DNSSEC通过使用数字签名验证DNS数据的完整性和真实性,防止DNS缓存投毒和其他形式的DNS劫持。
-
ISP和DNS服务提供商的改进:
- 增强的基础设施安全性:ISP和DNS服务提供商不断改进其基础设施的安全性,包括使用先进的防火墙、入侵检测系统和反欺诈技术,减少DNS服务器被劫持的风险。
- 提供公共DNS服务:例如Google Public DNS和Cloudflare DNS等公共DNS服务提供了更加可靠和安全的DNS解析服务,并且通过全球分布的服务器提升了抗攻击能力。
-
操作系统和应用程序的安全改进:
- 浏览器和操作系统的缓存改进:现代浏览器和操作系统对DNS缓存管理更加严格,减少了被恶意修改的风险。
- 自动更新和补丁:操作系统和应用程序的自动更新机制确保了系统及时修补已知的安全漏洞。
-
用户安全意识的提高:
- 安全软件和防火墙的使用:越来越多的用户安装和使用防病毒软件和防火墙,监控和保护网络流量,防止恶意软件篡改DNS设置。
- 安全教育:对网络安全的教育普及,使得用户对潜在威胁和防范措施有了更高的认知。
-
法律和政策的加强:
- 法规和合规要求:许多国家和地区出台了相关法规,要求ISP和网络服务提供商采取必要的安全措施保护用户的网络安全。
这些因素共同作用,使得DNS劫持变得越来越难以实现和持续,从而大幅减少了此类攻击的发生频率。同时,随着技术的不断发展和用户安全意识的提升,DNS劫持将进一步被抑制和防范。
六、已经有了DNS over HTTPS (DoH) 和 DNS over TLS (DoT)为什么还有HTTPDNS
尽管DNS over HTTPS (DoH) 和 DNS over TLS (DoT) 提供了加密和安全的DNS解析方式,但HTTPDNS(基于HTTP的DNS解析)仍然有其存在的理由和特定的应用场景。以下是HTTPDNS存在的一些原因和优点:
1. 绕过运营商劫持
HTTPDNS通过HTTP协议进行DNS解析请求,可以避免传统DNS解析过程中可能存在的运营商劫持问题。某些地区的网络服务提供商可能会篡改DNS解析结果,以插入广告或进行其他形式的干扰,HTTPDNS能够有效绕过这些干扰。
2. 更好的CDN适配
许多内容分发网络(CDN)服务提供商利用HTTPDNS来提供更精准的解析服务。HTTPDNS可以根据请求者的IP地址提供最优的CDN节点,从而提高内容分发的效率和速度,改善用户体验。
3. 应对NAT和共享IP环境
在使用NAT(网络地址转换)和共享IP地址的环境下,传统的DNS解析可能无法准确定位用户的地理位置。HTTPDNS可以通过直接与应用服务器通信,提供更加精准的地理位置数据,从而优化服务。
4. 无需操作系统支持
DoH和DoT需要操作系统和应用程序的支持才能工作,而HTTPDNS可以在应用层直接实现,不需要依赖操作系统的DNS解析机制。这使得开发者能够更灵活地控制DNS解析过程,尤其在移动应用中表现得尤为突出。
5. 易于集成和部署
HTTPDNS可以很容易地与现有的HTTP/HTTPS基础设施集成,利用已有的负载均衡、缓存和安全机制进行部署。这使得HTTPDNS在某些特定应用场景下更为便捷和高效。
6. 灵活性和定制化
HTTPDNS允许开发者对DNS解析过程进行更高的定制化处理。例如,可以根据不同的业务需求进行特殊的解析策略,动态调整DNS解析结果,从而提高服务的可靠性和灵活性。
结论
虽然DoH和DoT提供了安全的DNS解析方式,但HTTPDNS在特定场景下仍然具有不可替代的优势,特别是在绕过运营商劫持、优化CDN服务、提高地理位置准确性以及应用层面的灵活控制等方面。因此,HTTPDNS仍然是一种有价值的DNS解析方式,被广泛应用于特定的网络环境和业务需求中。