1.3.1. 简介
DNS是一个简单的请求-响应协议,是将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP协议的53端口。
1.3.2. 术语
1.3.2.1. mDNS
Multicast DNS (mDNS),多播DNS,使用5353端口,组播地址为 224.0.0.251 或 [FF02::FB] 。在一个没有常规DNS服务器的小型网络内可以使用mDNS来实现类似DNS的编程接口、包格式和操作语义。mDNS协议的报文与DNS的报文结构相同,但有些字段对于mDNS来说有新的含义。
启动mDNS的主机会在进入局域网后向所有主机组播消息,包含主机名、IP等信息,其他拥有相应服务的主机也会响应含有主机名和IP的信息。
mDNS的域名是用 .local 和普通域名区分开的。
1.3.2.2. FQDN
FQDN (Fully-Qualified Domain Name) 是域名的完全形态,主要是包含零长度的根标签,例如 www.example.com. 。
1.3.2.3. TLD
Top-Level Domain (TLD) 是属于根域的一个域,例如 com 或 jp 。
TLD一般可以分为 Country Code Top-Level Domains (ccTLDs) 、Generic Top-Level Domains (gTLDs) 以及其它。
1.3.2.4. IDN
Internationalized Domain Names for Applications (IDNA) 是为了处理非ASCII字符的情况。
1.3.2.5. CNAME
CNAME即Canonical name,又称alias,将域名指向另一个域名。
1.3.2.6. TTL
Time To Live,无符号整数,记录DNS记录过期的时间,最小是0,最大是2147483647 (2^31 - 1)。
1.3.3. 请求响应
1.3.3.1. 响应码
NOERROR
No error condition
FORMERR
Format error - The name server was unable to interpret the query
SERVFAIL
Server failure - The name server was unable to process this query due to a problem with the name server
NXDOMAIN
this code signifies that the domain name referenced in the query does not exist
NOTIMP
Not Implemented - The name server does not support the requested kind of query
REFUSED
Refused - The name server refuses to perform the specified operation for policy reasons
NODATA
A pseudo RCODE which indicates that the name is valid, for the given class, but [there] are no records of the given type A NODATA response has to be inferred from the answer.
1.3.4. 域名系统工作原理
DNS解析过程是递归查询的,具体过程如下:
用户要访问域名www.example.com时,先查看本机hosts是否有记录或者本机是否有DNS缓存,如果有,直接返回结果,否则向递归服务器查询该域名的IP地址;
递归缓存为空时,首先向根服务器查询com顶级域的IP地址;
根服务器告知递归服务器com顶级域名服务器的IP地址;
递归向com顶级域名服务器查询负责example.com的权威服务器的IP;
com顶级域名服务器返回相应的IP地址;
递归向example.com的权威服务器查询www.example.com的地址记录;
权威服务器告知www.example.com的地址记录;
递归服务器将查询结果返回客户端。
1.3.5. 根服务器
根服务器是DNS的核心,负责互联网顶级域名的解析,用于维护域的权威信息,并将DNS查询引导到相应的域名服务器。
根服务器在域名树中代表最顶级的 . 域, 一般省略。
13台IPv4根服务器的域名标号为a到m,即a.root-servers.org到m.root-servers.org,所有服务器存储的数据相同,仅包含ICANN批准的TLD域名权威信息。
1.3.6. 权威服务器
权威服务器上存储域名Zone文件,维护域内域名的权威信息,递归服务器可以从权威服务器获得DNS查询的资源记录。
权威服务器需要在所承载的域名所属的TLD管理局注册,同一个权威服务器可以承载不同TLD域名,同一个域也可以有多个权威服务器。
1.3.7. 递归服务器
递归服务器负责接收用户的查询请求,进行递归查询并响应用户查询请求。在初始时递归服务器仅有记录了根域名的Hint文件。
1.3.8. DGA
DGA(Domain Generate Algorithm,域名生成算法)是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检测的技术手段,常见于botnet中。一般来说,一个DGA域名的存活时间约在1-7天左右。
通信时,客户端和服务端都运行同一套DGA算法,生成相同的备选域名列表,当需要发动攻击的时候,选择其中少量进行注册,便可以建立通信,并且可以对注册的域名应用速变IP技术,快速变换IP,从而域名和IP都可以进行快速变化。
DGA域名有多种生成方式,根据种子类型可以分为确定性和不确定性的生成。不确定性的种子可能会选用当天的一些即时数据,如汇率信息等。
1.3.9. DNS隧道
DNS隧道工具将进入隧道的其他协议流量封装到DNS协议内,在隧道上传输。这些数据包出隧道时进行解封装,还原数据。
1.3.10. 参考链接
1.3.10.1. RFC
RFC 1034 DOMAIN NAMES CONCEPTS AND FACILITIES
RFC 1035 DOMAIN NAMES IMPLEMENTATION AND SPECIFICATION
RFC 5936 DNS Zone Transfer Protocol
RFC 6895 DNS IANA Considerations
RFC 8482 Providing Minimal-Sized Responses to DNS Queries That Have QTYPE=ANY
RFC 8490 DNS Stateful Operations
网友评论