2.1. DNS介绍

Date:

2018-09

2.1.1. DNS简述

参考:

小技巧

基于504个全球范围的“根域名服务器”(分成13组,分别编号为A至M)

DNS:

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库, 能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

注意

DNS和DNS服务器以及DNS服务软件是不同的概念。DNS是指协议标准。DNS服务器是提供DNS这种服务的服务器(硬件和软件的综合体)。 DNS软件是根据DNS协议开发的能够运行在硬件系统上并提供DNS服务的软件,这其中以bind为代表。

DNS主要用途:
  • 能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

DNS发展历史:

DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明; 原始的技术规范在882号因特网标准草案(RFC 882)中发布。 1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。 在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。

提示

早期的域名必须以英文句号“.”结尾。如今DNS服务器已经可以自动补上结尾的句号。

DNS详细描述:
DNS服务端口:
  • DNS使用 TCP和UDP 端口 53,这是服务端口。
    • tcp 53: 用于区域传输

    • ucp 53: 用于查询

DHCP服务模式:

DHCP工作在应用层,是c/s结构

2.1.2. DNS原理

2.1.2.1. DNS记录类型

DNS系统中,常见的资源记录类型有:
  • 主机记录(A记录): RFC 1035 定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。

  • 别名记录(CNAME记录): RFC 1035 定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。

  • IPv6主机记录(AAAA记录): RFC 3596 定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。

  • 服务位置记录(SRV记录): RFC 2782 定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。

  • NAPTR记录: RFC 3403 定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

以上记录类型可以简写成:
  • A: ipv4

  • AAAA: ipv6

  • PTR: ip->fqdn

  • SOA: 起始授权记录

  • NS: 域名

  • CNAME: 别名

  • MX: 邮件

提示

DNS所有记录类型可以参考:

https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F

2.1.2.2. DNS软件

  • BIND(Berkeley Internet Name Domain),使用最广的DNS软件

  • DJBDNS(Dan J Bernstein’s DNS implementation)

  • MaraDNS

  • Name Server Daemon(Name Server Daemon)

  • PowerDNS

  • Dnsmasq

dnsmasq是一个小型的dns服务,还集成了dhcp功能。所以一般小型办公网络比较适用,配置简单易用。

2.1.3. 常见概念

BIND(Bekerley Internet Name Domain) 是伯克利互联网名称域。提供了DNS服务。

DNS查询类型:
  • 递归查询

    递归查询,dns服务器压力会增大。DNS没有对应的域名时dns服务器会去查找根域然后迭代查找到对应的A记录然后返回给客户端程序。

  • 迭代查询

    迭代查询,是dns如果没有对应的记录就会让客户端程序去查找根服务器,但是一般根服务器不会允许客户端直接查询。如果可以这样做,本地的dns压力会降低。

递归查询过程:

../../../_images/recursion-query.jpg

迭代查询过程:

../../../_images/iteration-query.jpg
服务器类型:
  • 主dns:管理和负责解析域的服务器

  • 从dns:从服务器从主服务器复制库,在主DNS故障后从dns会坚持一段时间,如果过了这段时间主服务器故障没有恢复,从服务器也会自动停止dns服务。

  • 缓存dns:缓存dns,用来缓存客户端查询的dns记录,从而降低dns查询压力。

区域传输:
  • 完全传输:传输整个库

  • 增量传输:传递变化的部分内容

解析流程:

client->hosts->local dns cache->dns server -> server cache-> root -> 二级域

解析答案(应答):
  • 肯定答案: 有对应条目

  • 否定答案: 没有对应条目

  • 权威答案: 请求的主机就有对应的条目

  • 非权威答案: 请求的主机没有,通过迭代找到的答案

2.1.4. DNS安全

常见的dns攻击有:
  1. DDOS攻击造成域名解析瘫痪。

  2. 域名劫持:修改注册信息、劫持解析结果。

  3. 系统上运行的DNS服务存在漏洞,导致被黑客获取权限,从而篡改DNS信息。

  4. DNS设置不当,导致泄漏一些敏感信息。提供给黑客进一步攻击提供有力信息。