1.是什么
DNS(Domain Name System)是域名系统,包括1)分层的DNS服务器实现的分布式数据库;2)使得主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP运输协议上,使用53端口。
2.干什么
DNS通常由其他应用层协议使用,包括HTTP,FTP,SMTP等,将用户提供的主机名解析为IP地址。主机名便于人类记忆,IP地址便于计算机解析,DNS为平衡二者提供映射服务。
除了进行主机名到IP地址的转换,DNS还提供一些其他服务:
1)主机别名:主机可能有复杂的规范主机名,可能还有多个简单的别名,以便于记忆。
2)邮件服务器别名:解析邮件服务器别名,获取该主机的规范主机名和IP地址。
3)负载分配:在多个服务器之间进行请求的分发。
3.工作机理
客户端程序(如浏览器)调用DNS客户端,指明需要被转换的主机名,DNS客户端向网络中发送DNS请求报文,一段时间后客户DNS收到响应报文并传给调用程序。
3.1.分布式、层次数据库
DNS使用大量的DNS服务器,包括根DNS服务器、顶级域DNS服务器(Top-Level Domain DNS)、权威DNS服务器。
另一类重要的DNS,称为本地DNS服务器。严格说它不属于DNS层次结构,但对DNS层次结构至关重要。
3.2.DNS缓存
在一个DNS请求链中,当某DNS服务器收到DNS回答时,能将回答中的信息缓存在本地存储器。对有缓存的地址进行访问,该DNS服务器能直接提供IP地址。
主机和主机名与IP地址间的映射不是永久的,DNS服务器在一段时间后将丢弃缓存信息。
4.DNS记录和报文
4.1. DNS服务器存储了资源记录,(Name,Value,Type,TTL),TTL为该记录的生存时间。
1)Type=A,则Name是主机名,Value是主机名对应IP地址。如(relay.bar.foo.com , 124.34.15.116 , A)。
2)Type=NS,则Name是域(如foo.com),Value是可获取该域中主机IP地址的权威DNS服务器的主机名。如(foo.com , dns.foo.com , NS)。
3)Type=CNAME,则Name是主机别名,Value是主机别名对应的规范主机名。如(foo.com , relay.bar.foo.com , CNAME)。
4)Type=MX,则Name是邮件主机别名,Value是邮件主机别名对应的规范主机名。如(foo.com , mail.bar.foo.com , MX)。
4.2在DNS数据库中插入记录
由注册登记机构为用户登记注册域名,用户向该机构提供基本和辅助权威DNS服务器名字和地址,机构确保将类型NS和A的记录输入TLD服务器。
5.DNS安全
1)DDoS分布式拒绝攻击,指向根DNS服务器。攻击者向根DNS服务器发送大量分组,使多数合法DDoS请求得不到回答。许多根DNS服务器收到分组过滤器的保护,而且大多数本地DNS服务器缓存了顶级域名服务器的IP,使根DNS服务器几乎不受影响。
2)DDoS攻击指向顶级域名服务器。难以过滤,可通过本地DNS缓存来缓解伤害。
3)中间人攻击,攻击者截获用户请求并伪造回答。
4)DNS毒害攻击,攻击者向一台DNS服务器发送伪造的回答,是该服务器缓存伪造的记录。中间人攻击和DNS毒害攻击难以实现,因为要截获分组或扼制服务器。
5)利用DNS反射,向目标主机发起DDoS攻击。攻击者伪造目标主机发来请求,使许多权威DNS服务器向目标主机返回大量的回答报文,淹没目标主机。