参考1:https://skyao.io/learning-dns/dns/
参考2:http://www.ruanyifeng.com/blog/2016/06/dns.html
参考3:https://www.freebuf.com/articles/system/58096.html
0x01 本质
Domain Name System,域名系统。实际生活中是一个DNS服务器,将域名与ip进行转化。
DNS协议运行在UDP协议之上,使用端口号53。
0x02 DNS类型
授权型 DNS:一种授权型 DNS 服务提供一种更新机制,供开发人员用于管理其公用 DNS 名称。然后,它响应 DNS 查询,将域名转换为 IP 地址,以便计算机可以相互通信。授权型 DNS 对域有最终授权且负责提供递归型 DNS 服务器对 IP 地址信息的响应。Amazon Route 53 是一种授权型 DNS 系统。
递归型 DNS:客户端通常不会对授权型 DNS 服务直接进行查询。而是通常连接到称为解析程序的其他类型 DNS 服务,或递归型 DNS服务。递归型 DNS 服务就像是旅馆的门童:尽管没有任何自身的 DNS 记录,但是可充当代表您获得 DNS 信息的中间程序。如果递归型 DNS 拥有已缓存或存储一段时间的 DNS 参考,那么它会通过提供源或 IP 信息来响应 DNS 查询。如果没有,则它会将查询传递到一个或多个授权型 DNS 服务器以查找信息。
0x03 DNS查询过程
dig 域名显示了dns查询的全过程,具体分析
0x03 DNS记录类型
域名与IP之间的对应关系,称为"记录"(record)。
根据使用场景,"记录"可以分成不同的类型(type)
- A记录
A 记录或地址记录(也称为主机记录)可将域名关联到托管相应网域服务的计算机物理 IP 地址。使用 Google Cloud 服务时,您可以添加 A 记录来启用您的“裸”网域地址。
- AAAA记录
AAAA记录和A记录类似,两者都是指向IP地址,但对应的IP版本不同。A记录指向IPv4地址,AAAA记录指向IPv6地址,AAAA记录是A记录的升级版本。
- NS记录
域名服务器 (NS) 记录用于确定哪些服务器为一个网域传达 DNS 信息。您的网域通常会有主要的和辅助的域名服务器记录。
一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。
- CNAME 记录
(即规范名称记录)将一个别名关联到另一个真正的或规范的域名。例如,www.example.com 可能会关联到 example.com。
A记录与CNAME记录的关系
A记录是把域名解析到IP地址,而CNAME记录是把域名解析到另外一个域名,而这个域名最终会指向A记录,在功能实现在上A记录与CNAME记录没有区别。
CNAME记录在做IP地址变更时要比A记录方便。CNAME记录允许将多个名字映射到同一台计算机,当有多个域名需要指向同一服务器IP,此时可以将一个域名做A记录指向服务器IP,然后将其他的域名做别名(即:CNAME)到A记录的域名上。当服务器IP地址变更时,只需要更改A记录的那个域名到新IP上,其它做别名的域名会自动更改到新的IP地址上,而不必对每个域名做更改。
- TXT 记录
为所在网域之外的来源提供文本信息的一种 DNS 记录,可用于多种用途。该记录的值可以是人工可读文本,也可以是机器可读文本,可任意填写,可为空。
使用场景:
1、 一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录
2、使用 Google Cloud 服务时,TXT 记录可用于验证域名所有权和实施电子邮件安全措施,如 SPF、DKIM 和 DMARC。
- 邮件交换 (MX) 记录
将一个网域的电子邮件定向到托管该网域用户帐号的服务器。如果G Suite 用户,要设置 Gmail,则需要将 MX 记录定向到 Google 邮件服务器。一个网域可定义多条 MX 记录,每条记录有不同的优先级。如果邮件通过最高优先级记录无法递送,则采用第二优先级,以此类推。
- PTR记录
是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名。
- SOA记录
起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器。SOA 记录表示此域名的权威解析服务器地址。 当要查询的域名在所有递归解析服务器中没要域名解析的缓存时,就会回源来请求此域名的SOA记录,也叫权威解析记录。
- SRV记录
服务器资源记录的缩写,记录服务器提供的服务,SRV记录的作用是说明一个服务器能够提供什么样的服务。
SRV记录是DNS记录中的新鲜面孔,在RFC2052中才对SRV记录进行了定义,因此很多老版本的DNS服务器并不支持SRV记录
0x04 获取DNS记录
- host
host命令可以看作dig命令的简化版本,返回当前请求域名的各种记录。
host 域名
host -a 域名
- dig
dig 域名
dig -x ip地址//反查ip地址的域名。
加上any,获取所有的记录,不加只有一条记录。
- dnsenum
dnsenum 域名
获取的信息:
- 主机IP地址 2. 该域名的DNS服务器 3. 该域名的MX记录
- dnsdict6
dnsdict6 域名
默认的状态对目标域名进行IPv6扫描。同时,我们也可以使用dnsdict6查找域名上的IPv4,使用选项 -4.并且使用-d还可以收集DNS和NS的信息:
dnsdict6 -4 -d 域名
- nslookup
互动式地查询域名记录