DNS基础知识
DNS基本概念
漫画网站介绍howdns work,感觉挺有意思
DNS的主要功能
DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。
解析域名:将域名解析成相应的IP地址
域名管理:管理互联网上的所有域名,包括注册、续费、修改、删除等操作。
负载均衡:将请求分发到不同的服务器上,实现负载均衡和高可用性。
在底层原理方面,DNS服务主要依赖于分布式数据库系统和递归查询机制。具体来说,DNS服务将所有的域名和IP地址存储在一个分布式的数据库系统中,每个DNS服务器都存储了一部分数据。当用户输入一个域名时,本地DNS服务器会先进行查询,如果本地DNS服务器没有相应的记录,则会向根域名服务器发送请求。根域名服务器将返回一个指向相应顶级域名服务器的IP地址。然后本地DNS服务器再向顶级域名服务器发送请求,顶级域名服务器会返回一个指向相应二级域名服务器的IP地址,以此类推,直到最终得到目标域名的IP地址。
需要注意的是,DNS查询过程中采用的是递归查询机制,即本地DNS服务器会向根域名服务器、顶级域名服务器、二级域名服务器等逐层发送查询请求,直到得到目标域名的IP地址为止。这种查询方式可以保证数据的安全性和可靠性,同时也可以防止DNS攻击和DNS污染等安全问题。
DNS结构层次
域名的层次结构:
- 根域,域名空间最顶层,一般用一个’.’表示
- 顶级域,代表一种类型的组织机构或者国家地区
- 二级域,标明顶级域内的的一个特定组织
- 子域,二级域下所创建的各级域统称为子域
- 主机,域名空间最下层,就是一台具体的计算机
顶级域名(TLD)、二级域名、子域名的概念:
- 顶级域名:Top-level domains(TLD)
- 二级域名:Second-level domain(SLD),处于顶级域名之下的域。二级域名是域名的倒数第二个部分
- 子域名:Subdomain,凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
DNS记录类型
A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录等
各种记录的作用与使用场景:
A记录,Address,也称主机记录,一个主机域名对应的ipv4地址
1
2www.baidu.com. IN A 1.1.1.2
mx1.baidu.com. IN A 1.1.1.3AAAA记录,一个主机域名对应的ipv6记录
CNAME记录,Canonical Name,别名记录,让一个服务器有多个域名
1
web.sangfor.com. IN CNAME www.sanfor.com.
MX记录,Mail Exchanger 邮件交换记录,用于说明哪台服务器是当前区域的邮件服务器,
1
2magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.NS记录,Name Server,域名服务器记录,用来指定该域名由哪个DNS服务器来解析,NS记录依赖A记录的解析,NS记录说明,在这个区域里,有多少个服务器承担解析的任务
1
2baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.TXT记录,一般指某个主机或域名的说明
PTR记录,逆向查询记录,用于从ip地址中查询域名。PTR记录是A记录的逆向记录
1
4.3.2.1.in-addr.arpa IN PTR www.sangfor.com.
TTL(生存时间Time-To-Live)对DNS记录的影响:
TTL是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。TTL就是一条域名解析记录在DNS服务器中的存留时间。
TTL值设置大:节约域名解析时间,给网站访问加速
TTL值设置小:减少更换空间时的不可访问时间。更换空间99.9%会有DNS记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效,但是在有的地方可能等到一两天甚至更久才生效。访问无所谓,但是涉及到邮件发送就比较麻烦。
一般操作系统的默认TTL值如下: TTL=32 Windows 9x/Me TTL=64 LINUX TTL=128 Windows 200x/XP TTL=255 Unix
DNS解析过程
- 用户输入网址,先查询本地DNS,本地DNS是一系列DNS的集合,比如ISP(Internet Service Provider)提供的DNS、公司网络提供的DNS。本地DNS是一个代理,将DNS请求转发到DNS网络中。如果本地DNS已经存在需要的记录,也就是本地DNS缓存中找到了对应的DNS条目,就会直接返回,而跳过之后的步骤
- 如果本地DNS服务器中没有对应的记录,那么请求回被转发到根DNS服务器。根DNS服务器只解析顶级域,例如”www.baidu.com",根服务器只查看com部分
- 根服务器返回顶级DNS服务器的IP
- 顶级域DNS服务器中存放的事二级域名的目录
- 顶级DNS服务器返回权威DNS服务器的IP
- 在权威服务器中存放具体的DNS记录
- 权威DNS服务器返回DNS记录到本地DNS服务器
- 本地DNS服务器返回具体的DNS记录给客户端
递归解析与迭代解析
递归算法只发出一次查询请求,要求服务器彻底地进行名字解析。当需要进一步查询时,本域名服务器向上级域名服务器返回其他域名服务器发出请求,直到查到记录。
迭代查询可能发出多条请求,即上级域名服务器若返回的是其他域名服务器的地址,本域名服务器把这个地址发给用户,用户再进行深一级的查询。
DNS解析过程中: 223.5.5.5 是什么角色
在DNS解析过程中,223.5.5.5扮演的是公共DNS服务器的角色。它是由阿里云(Alibaba Cloud)提供的一个免费的DNS解析服务地址。当用户配置他们的网络设置以使用这个IP地址作为DNS服务器时,他们的DNS查询请求将会被发送到这个由阿里云运营的服务器。
域名解析的授权
域名授权:指定谁是该域名的权威DNS,即由谁负责解析该域名(由NS记录操作完成)
权威DNS:特指对特定域名具有权威发布能力的DNS;互联网上域名(域名记录)解析结果的原出处
DNS安全
常见的DNS攻击(如:DNS欺骗、缓存投毒等):
DNS劫持(DNS Hijacking):通过篡改DNS解析结果,讲用户引导至恶意网站。攻击者通过入侵DNS服务器或者用户的本地配置。
DNS缓存投毒(DNS Cache Poisoning):攻击者通过向DNS服务器发送伪造的响应数据,污染其缓存,使得后续的DNS查询返回错误的IP地址
DNS放大攻击(DNS Amplification Attack):是一种分布式拒绝服务(DDoS)攻击,攻击者利用开放的DNS服务器向目标发送大量伪造的查询请求,导致目标服务器因处理大量响应而瘫痪。攻击流量放大
DNS隧道攻击(DNS Tunneling Attack):利用DNS协议进行数据泄漏或者绕过防火墙的技术。攻击者通过将数据编码到DNS查询和响应中,绕过传统的安全检查机制,实现隐蔽的数据传输。通常用于窃取敏感信息或者进行远程控制
DNS欺骗(DNS Spoofing):攻击者伪造DNS响应,使得用户误以为访问的是合法网站,实际上却被引导至恶意站点。这种攻击通常与中间人攻击(MITM)结合使用,进一步窃取用户的敏感信息。DNSSEC(DNS安全扩展)的基本概念:
DNSSEC(DNS安全扩展)是一种通过数字签名验证DNS响应真实性的技术。它可以有效防止DNS劫持、缓存投毒和欺骗攻击,确保用户访问的是合法的网站。为了实施这些加密签名,创建了两个新的 DNS 记录类型:DNSKEY 和 DS。DNSKEY 记录包含一个公开的签名密钥,而 DS 记录包含一个 DNSKEY 记录的哈希。
DS记录是DNSSEC(Domain Name System Security Extensions)中的一部分,用于验证子域的DNSSEC密钥。它存储了子域的DNSKEY记录的哈希值,并由父域发布,从而建立了一条从父域到子域的信任链。