DNS 服务器

DNS ( Domain Name Service, 域名服务 ) 是 Internet/Intranet 中最基础也非常重要的一项服务,它提供了网络访问中域名和 IP 地址的互相转换。

域名空间

DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的数,这个逻辑的属性结构称为域名空间。

DNS 域名空间中,数的最大深度不超过 127 层,树中的每个节点最长可以存储 63 个字符。

  1. 域和域名

    DNS 数的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。域名空间的每个域的名字通过域名表示。 域名通常由一个完全正式域名(FQDN —— Fully Quanlified Domain Name)标识。FQDN 采用节点到树根的反向书写形式,并将每个节点用 “.” 分隔,来表示每个节点相对于 DNS 域树根的位置。

通常 FQDN 有严格的命名限制,长度不能超过 256 字节,只允许使用字符 a-z, 0-9, A-Z 和 -(减号)。.(点号)只允许在域名标志之间或者 FQDN 的结尾使用。

域名不区分大小写。

  1. Internet 域名空间

    Inernet 域名空间整体进行划分,由最顶层到下层,可以分成:根域、顶级域、二级域、子域,并且域中能够包含主机和子域。

    Internet 域名空间的最顶层是根域(root),其记录着 Internet 的重要 DNS 信息,由 Internet 域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到 Internet 的各个组织。

    DNS 根域下面是顶级域,也由 Internet 域名注册授权机构管理。共有 3 种类型的顶级域。

    • 组织域:采用 3 个自负的代号,表示 DNS 域中所包含的组织及其主要功能或活动。比如,com 为商业机构组织,edu 为教育机构组织, gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非盈利机构组织,int 为国际机构组织。

    • 地址域:采用两个字符的国家或地区代号。比如,cn 代表中国,kr 代表韩国,us 代表美国。

    • 反向域:名字为 in-addr.arpa 的特殊域,用于将 IP 地址映射到域名(反向查询)。
  2. 区是 DNS 名称空间的一个连续部分,包含了一组存储在 DNS 服务器上的资源记录。

    每个区都位于一个特殊的节点,但区并不是域。DNS 域是名称空间的一个分支,而区一般是存储在文件中的 DNS 名称空间的一部分,可以包括多个域。一个域再分成几个部分,每个部分或区可以由一台 DNS 服务器控制。使用区的概念,DNS 服务器回答关于自己区中主机的查询,以及哪个区的授权服务器。

DNS 服务器分类

  1. 主 DNS 服务器(Master 或 Primary)

    主 DNS 负责维护所管辖域的域名服务信息,并从本地磁盘中的取文件中加载域信息。

    配置主与服务器需要一整套的配置文件,包括主配置文件、正向域的区文件、反向域的区文件、高速缓存初始化文件和回送文件。

  2. 辅助 DNS 服务器(Slave 或 Secondary)

    辅助 DNS 服务器用于分担主 DNS 服务器的查询负载。

    辅助 DNS 服务器上的区文件是从主服务器中转移出来并作为本地磁盘文件存储在辅助服务器中。因此,配置辅助 DNS 服务器只需配置主配置文件、高速缓存文件和会送文件即可。

  3. 转发 DNS 服务器(Forwarder Name Server)

    转发 DNS 服务器可以向其他 DNS 服务器转发解析请求。

    当 DNS 服务器无法解析客户端的请求,则需要向其他制定的 DNS 服务器转发解析请求;其他 DNS 服务器完成解析并返回解析结果,转发 DNS 服务器将结果缓存在自己的 DNS 缓存中,并向客户端返回解析结果。

目前网络中所有的 DNS 服务器均被配置为转发 DNS 服务器,向指定的其他 DNS 服务器或者根域服务器转发自己无法解析的请求。

  1. 唯高速缓存 DNS 服务器(Caching-only DNS server)

    唯高速缓存 DNS 服务器供本地网络上的客户机进行域名转换。

    唯高速缓存 DNS 服务器通过查询其他 DNS 服务器并将获得的信息存放在高速缓存中,为客户机查询提供服务。其提供的所有信息都是间接信息,因此并不是权威的服务器。

DNS 查询模式

  1. 递归查询

    DNS 服务器收到请求后会在本机查找,如果没有查询结果,将会转发到其他 DNS 服务器查询,并将查询结果返回给客户机。

  2. 转寄查询(又称迭代查询)

    DNS 服务器收到请求后会在本机查找,如果没有查询结果,将会返回给客户端另一台 DNS 服务器的 IP 地址,然后客户端向另一台 DNS 服务器查询结果。以此类推,直到查询到所需结果。如果最后一台 DNS 服务器也没有查到所需数据,则通知客户端查询失败。

一般在 DNS 服务器之间的查询便属于转寄查询。

域名解析工作原理

  1. 客户机提交域名解析请求,发送给本地的 DNS 服务器。

  2. 本地 DNS 服务器收到请求后,首先查询本地缓存。如果缓存中有结果,则直接返回结果,否则,本地 DNS 服务器将把请求转发给根域名服务器。

  3. 根域名服务器返回给本地 DNS 服务器所查询域的顶级域名服务器的地址。

  4. 本地 DNS 服务器向该顶级域名服务器发送查询请求。

  5. 顶级域名服务器查询缓存和记录,如果成功,将结果返回给客户机。否则,向客户机返回二级域名服务器的地址。

  6. 本地 DNS 服务器向二级域名服务器发送查询请求。

  7. 二级域名服务器查询并返回结果(重复转寄查询)。

  8. 本地 DNS 服务器将得到的结果返回给客户机并缓存该结果。

正向解析:将域名解析为 IP 地址。

反向解析:将 IP 地址解析为域名。反向解析可用于服务器身份验证。

资源记录

服务器区文件(又称 DNS 数据库文件或简单数据库文件)中包含组成相关 DNS 域资源信息的资源记录(RR)。

  1. SOA 资源记录

    每个区的开始处都包含了一个起始授权记录(Start of Authority Record),简称 SOA 记录。SOA 定义了域的全局参数,管理整个域。

    一个区文件中只允许存在唯一的 SOA 记录。

  2. NS 资源记录

    名称服务器(NS)资源记录表示该区的授权服务器,即表示 SOA 资源记录中指定的该区的主服务器和辅助服务器。每个区在区根处都至少包含一个 NS 记录。

  3. A 资源记录

    地址(A)资源记录把 FQDN 映射到 IP 地址。

  4. PTR 资源记录

    相对于 A 资源记录,指针(PTR)记录把 IP 地址映射到 FQDN。

  5. CNAME 资源记录

    规范名字(CNAME)资源记录创建特定 FQDN 的别名。

    用户可以使用 CNAME 来隐藏用户网络的实现细节。

  6. MX 资源记录

    邮件交换(MX)资源记录为 DNS 域名指定邮件交换服务器。