1.DNS提供服务
DNS(domain name system) 主要用于管理和解析域名与IP地址对应关系的技术,包括将域名解析为IP地址(正向解析)及将IP地址解析为域名(反向解析)。
此外,提供其他服务:
1.主机别名,将别名翻译成规范主机名。如:enterprise.com和www.enterprise.com的规范主机名类似relay.west-coast.enterprise.com。
2.邮件服务器别名,将邮件服务器别名翻译成规范主机名。如:邮件地址bob@yahoo.mail,但yahoo邮件服务器的规范主机名类似relay1.west-coast.yahoo.com。
3.负载均衡,一个域名包括多个IP地址的负载。
2.DNS工作原理
2.1 DNS服务器
2.1.1 按查询分类
DNS用分布式分层数据库记录域名与IP地址的对应关系。包括根DNS服务器、顶级DNS服务器(TLD)、权威DNS服务器。
1.根DNS(Root DNS server)。世界上共有13台根DNS服务器,实际包括504台服务器共用13个IP地址进行负载均衡,提供了顶级DNS服务器的IP地址。
2.顶级DNS(Top-level domain server)。顶级DNS服务器(TLD)提供了本地域名服务器的IP地址,对于每个顶级域如.com(商业组织)、.org(非营利性组织)、.gov(政府部门)、.net(网络服务商)、.edu(教育机构)、.pub(公共大众)及国家顶级域如.cn、.uk、.fr、.ca等均有TLD服务器(或服务器群)。
3.权威DNS(Authoritative DNS server)。每个在Internet上拥有可公开访问的主机的组织或者机构都拥有一个DNS映射主机IP地址的记录,组织或者机构的权威DNS服务器(或服务器集群)包含了这些记录。
4.本地DNS( local DNS server/recursive DNS server)。不属于DNS分布式分层数据结构,互联网服务提供商(Internet Service Provider,ISP)都有一个本地DNS服务器(递归DNS服务器),当主机连接到ISP时,ISP通常通过DHCP向主机提供多个本地DNS服务器的IP地址。
2.1.2 按功能分类
1.主服务器。在特定区域内具有唯一性,负责维护该区域内域名与IP地址之间的对应关系。
2.从服务器。从主服务器获得域名与IP地址的对应关系并进行维护,作为主服务器的HA。
3.缓存服务器。通过向其他域名解析服务器查询获得域名与IP地址对应关系,并将查询结果缓存到服务器本地,提高重复查询时的效率。
主服务器用户管理域名与IP地址对应的关系的真正服务器,从服务器分散部署在各个区域,以便用户就近查询,减轻主服务器压力,缓存服务器一般部署在组织或机构的内网网关,加速用户的域名查询请求。
2.1.3 nslookup
nslookup可以查看本机的DNS服务器IP地址(114.114.114.114),目标域名www.cisco.com的IP地址(IPv6,IPv4),非权威应答表示从本地DNS的缓存获取的结果。
2.2 访问原理
以客户端访问pypi.org为例
0:首先检查主机本地缓存(ipconfig/displaydns),再查本地HOSTS文件是否有对应域名-IP对应关系。
Q1:客户端询问本地DNS,pypi.org对应的IP地址是?
Q2:本地DNS无缓存,询问根DNS pypi.org对应的IP地址是?
A1:根DNS返回.org对应的TLD。
Q3:本地DNS问TLD pypi.org对应的IP地址是?‘
A2:TLD返回pypi.org对应的权威DNS。
Q4:本地DNS问权威DNS pypi.org对应的IP地址是?
A3:权威DNS返回IP地址151.101.0.223。
A4:本地DNS返回客户端IP地址151.101.0.223。
2.2.1 DNS缓存
用以提高延迟性能,减少Internet上传播的DNS信息数量。在查询链中,当DNS服务器收到DNS回复(主机名-IP地址映射关系),即可将其缓存到本地内存中,以待下次有相同请求时可以高效地获得。
2.2.2 DNS信息
(Name,Value,Type,TTL)
标识 | 说明 | 示例 |
---|---|---|
TTL | 信息缓存的时间 | |
Type=A | Name=规范主机名,Value=IP地址 | relay1.bar.foo.com, 145.37.93.126, A |
Type=NS | Name=主机别名,Value=权威DNS | foo.com, dns.foo.com,NS |
TType=CNAME | Name=主机别名,Value=规范主机名 | 名foo.com, relay1.bar.foo.com,CNAME |
Type=MX | Name=主机别名,Value=规范邮件服务名 | foo.com,mail.bar.foo.com,MX |
nslookup查询A记录、NS记录、CNAME记录及MX记录
A记录
NS记录
CNAME记录
MX记录
3.DNS安全漏洞
3.1 DDos攻击
3.1.1 DoS vs. DDoS
拒绝服务攻击(Denial-of-Service attack,DoS)使合法用户无法使用网络、主机或其他基础设施。包括:
1.漏洞攻击(Vulnerability attack)。利用软件漏洞使目标主机瘫痪,无法处理网络请求。
2.带宽消耗(Bandwidth flooding)。向目标服务器发送大量数据包,导致网络拥堵,使得正常用户请求无法到达。
3.连接耗尽(Connection flooding)。与目标服务器建立大量TCP连接,将其端口资源消耗殆尽,使得正常用户无法与其建立TCP连接。
若使用一台主机以第二种方式实施攻击,一是想用一台主机去将服务器的资源耗尽非常困难,二是单一源头非常容易被目标服务器的安全检测发现,因此出现了分布式拒绝服务攻击(Distributed Denial-of-Service attack,DDOS),通过一台主机利用僵尸网络模拟多个源头,耗尽目标服务器的资源。
3.1.2 DDos攻击DNS
DDos攻击根DNS。攻击者向13个根DNS发送大量数据包,导致合法的DNS查询无法得到应答。但是根DNS配置通常为阻止指向根DNS的ICMP ping的消息,此外,本地DNS中通常缓存了TLD的IP地址,使得查询过程绕过了根DNS,此类攻击对用户的影响较小。
DDos攻击TLD。相对与根DNS,对TLD的查询难以绕过。通过再本地DNS缓存可部分缓解。
3.2 DNS缓存中毒攻击
攻击者向DNS服务器发送虚假回复,诱使DNS服务器在缓存中记录下错误信息。但由于需要拦截数据包,此类攻击较难实施。
参考文献(强推)
Kurose J F, Ross K W. Computer Networking: A Top-Down Approach. Edition[J]. Addision Wesley, 2007.