DNS 与BIND(第五版)

内容提要:

Bind( Berkeley Internet Name Domain) 是Internet上使用最广泛的源码开发的DNS服务器软件。

第一章  

背景

1.2.1 域名系统的历史

在20世纪70年代,ARPAnet是一个只有几百台主机的小型、友好的社区,所以只需要HOSTS.TXT这一个文件,就可以包含连接到ARPAnet的每台主机的名称到地址的解析。人们所熟知的UNIX主机表(/etc/hosts)就是由HOSTS.TXT演变而来的。

1.3 DNS简述

1. 域名系统是一个分布式数据库。这种结构允许对整体数据库的各个部分进行本地控制,并且在各个部分中的数据通过客户端/服务端模式变得对整个网络都可用。通过复制和缓存等机制,DNS拥有了健壮性和充足的性能。

2. 主机可以拥有一个或多个域名别名(domain name aliases),这些域名别名是从某个域名(别名)指向另一个域名(正式的或规范的域名)的指针。

第二章   DNS的运行机制

2.1 域名空间

DNS的分布式数据库通过域名进行索引。每个域名本质上就是一棵大型逆向树(inverted tree)的一条路径,而这棵逆向树又被称作域命名空间(domain namespace)。这棵树的顶端有唯一的根,称为root. 树的深度最多可达127层。

2.1.2 域

一个域(domain)就是域名空间的一棵子树,一个域的名称也就是该域最顶端节点的域名。

域名只是DNS数据库中的索引

一个域可能会拥有多课子树,这些子树被称为子域(subdomain

顶级域:top-level domain 

二级域: second-level domain

顶级域是root 的子域

一级域也是root的子域(一级域和顶级域是同一概念)

二级域是一级域的子域,依次类推

2.1.3 资源记录

与域名相关的数据都被包含在资源记录(resource record, RR)中

2.2.1 顶级域

原始的顶级域将Internet域名空间在组织层面上分成了7个域

com : 商业组织

edu : 教育组织

gov : 政府机构

mil : 军事组织

net : 原先仅用于提供网络基础设施的组织,后开放给商业组织

org : 原仅提供给非营利性组织,后解除该限制

int  : 国际组织

目前,这7个原始域被称为通用顶级域(generic top-level domains, gTLDs

"通用"是相对于国家代码顶级域(country-code top-level domains)而言的

2.3 授权

管理域的组织可以将域进一步划分成子域,每个子域都可以被授权给其他组织来管理,这意味着这些被授权的组织得负责维护子域中所有的数据。他们可以自由地改变域中的数据,甚至将子域进一步划分成更多的子域,然后再授权给其他组织管理。父域仅仅保留指向子域数据来源的指针,这样父域便可将查询者引到此处。

2.4 名称服务器和区域

存储域名空间信息的程序被称作名称服务器(nameserver)。名称服务器通常只拥有域名空间某一部分的完整信息,这一部分我们称作区域(zone),区域的内容是从文件或者另一个名称服务器加载而来。加载过后,这个名称服务器便可称对该区域具有权威(authority)。一个名称服务器可以同时对多个区域具有权威。

为什么名称服务器加载的是区域的数据而不是域的数据?

一个域所包含的信息可能超出了名称服务器的需要,因为它还包含了已经授权给其他名称服务器的数据。而区域通过授权已经被划出了界限,它将不会包含已经被授权出去的数据。

2.5 解析器

解析器(resolver)就是访问名称服务器的客户端程序。当运行在主机上的程序需要从域名空间中获取信息时就会使用到解析器。解析器的作用为:

1. 查询名称服务器

2. 解析响应信息(可能是资源记录或错误)
3. 将信息返回给查询它的程序

2.6.1 root 名称服务器

Internet上有13个root 名称服务器。

2.6.2 递归

查询有两种形式:递归的(recursive) 和迭代的(interative)

在递归方式中,解析器向名称服务器发送关于特定域名信息的递归查询请求。被查询的名称服务器必须负责回应对方所查询的数据,如果查询的数据类型不存在或租指定的域名不存在,就返回一个错误状态。名称服务器不能只是将查询指向另一个名称服务器,因为这是递归查询

2.6.3 迭代

迭代解析中,名称服务器之间将它所知道的最佳答案告诉查询者。它本身不再需要额外的查询。

2.6.4 如何选择权威名称服务器

BIND名称服务器使用一种称为往返时间(roundtrip, RTT)的度量方式来对同一区域中的名称服务器进行选择。

2.6.5名称解析的完整过程

2.7.1 生存时间

生存时间就是名称服务器允许数据在缓存中存放的时间。生存时间一到期,名称服务器就丢弃原有的缓存数据并从权威名称服务器获取新的数据。

第三章  从哪儿开始呢 

3.1 获得bind

下载地址:

http://ftp.isc.org/isc/bind/9.15.4/

nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题

nslookup domain [dns-server]

3.2.1 注册员和注册机构

注册机构(registry):是负责维护顶级域(实际上是区域)的数据文件的组织,这些数据文件包括了顶级域中各个子域的授权信息。

在目前的Internet结构下,一个给定的顶级域只能有一个注册机构

注册员(registrar): 扮演着客户与注册机构之间桥梁的角色,提供注册和增值服务。

注册(Registration):是某个客户告诉注册员,自己将使用哪个名称服务器来管理被授权的子域以及提供联络和计费信息的过程。

3.2.2

whois 服务也能帮助弄明白某个域的用途

3.23

子网络(subnetwork)

子网(subnet)

CIDR(Classless Inter-Domain Routing, 读作“cider”) : 无类域间路由

顾名思义,CIDR没有采用旧的A类,B类和C类网络的命名方法。它不再用1个字节、2个或3个字节来作为网络编号,分配者可以使用IP地址中任何相邻位的数字作为网络编号。

第四章  建立bind

 4.2 建立区域数据

名称到地址(name-to-address) 的查询被称作正向解析(forward mapping)

地址到名称(address-to-name)的查询被称作逆向解析(reverse mapping)

每个网络都拥有自己的逆向解析数据文件

4.2.1 区域数据文件

区域数据文件中的大部分条目被称为DNS资源记录(DNS resource record),DNS 查询是不区分大小写的。

区域数据文件中资源记录的顺序如下:

SOA记录: 指明该区域的权威

NS 记录: 列出该区域的名称服务器

Other 记录: 有关该区域中主机的数据

本章将会提到的其他记录包括以下三个:

A : 名称到地址的映射

PTR: 地址到名称的映射

CNAME: 规范名称(将别名映射到规范名称)

4.2.3 设置区域的默认TTL

查询BIND的版本信息: named -v

4.2.4 SOA 记录

root@cdndev:/usr/local/bind-9.15.4/sbin# dig 126.com

; <<>> DiG 9.15.4 <<>> 126.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3550
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;126.com.                       IN      A

;; ANSWER SECTION:
126.com.                112     IN      A       123.126.96.210

;; Query time: 2 msec
;; SERVER: 10.246.101.34#53(10.246.101.34)
;; WHEN: Sat Oct 12 10:35:35 CST 2019
;; MSG SIZE  rcvd: 52

上面的

IN代表Internet, 是一种数据类(class)

A: 代表地址(address)

4.2.5 NS记录

NS 记录(nameserver)

这些记录指明了movie.edu 区域有两个名称服务器。这两个名称服务器分别运行在主机toystory.movie.edu和wormhole.movie.edu

4.2.6 地址和别名记录

4.3 建立bind 配置文件

默认情况下,bind 的配置文件路径为/etc/named.conf

4.4.2 @ 符号

如果一个域名和来源相同的话,那么该域名就可以被表示为:@

这最常出现在区域数据文件的SOA记录中。

4.6.1 BIND 9 工具

named-checkconf :  用来检查配置文件的语法错误,默认检查/etc/named.conf 文件

named-checkzone : 用来检查区域文件的语法错误

4.7.1 启动名称服务器

/usr/local/bind-9.15.4/sbin/named -c conf-file

4.8 运行一个slave 名称服务器

primary名称服务器和slave名称服务器的区别

最关键的区别在于服务器从哪里获取数据的。

primary名称服务器是从区域数据文件中读取数据的。而slave名称服务器则是通过网络从其他名称服务器那里加载数据的。这个过程被称作区域传输(zone transfer)

slave 名称服务器不仅可以通过primary名称服务器加载区域数据,还能通过其他的slave名称服务器加载区域数据。

slave名称服务器的最大好处在于:对于一个区域只需维护一份区域数据文件,也就是primary名称服务器上的那份文件。不用担心这些名称服务器之间的文件同步问题。

4.8.1 建立

启动slave名称服务器的命令也是

/usr/local/bind-9.15.4/sbin/named

4.8.3 SOA值

序号(serial number) : 这里选择“1”这个逻辑上的起点作为起始序号。很多时候采用日期格式YYYYMMDDNN来表示。YYYY代表年份,MM代表月份,DD代表天,而NN代表当日区域数据被修改的次数。

当slave名称服务器联系其master服务器以获取区域数据时,会首先请求相关数据的序号。如果slave中该区域的序号比master服务器的小,就表示slave的区域数据过时了。在这种情况下,slave就会下载一份新的区域数据副本。

接下来的4个字段指定了四种时间间隔,默认单位是秒

refresh (更新): 更新间隔时间(refresh interval)用来告知区域的slave名称服务器,间隔多长时间检查一次区域的数据是否有更新。需要注意的是,这个功能会对系统负载造成影响。

retry (重试) : 如果slave服务器在更新间隔时间到来后无法访问其master名称服务器(主机可能宕机了), 它就会开删每隔一个重试间隔时间(retry interval)就尝试重新连接一次。

expire(过期): 如果slave名称服务器在过期时间到来时仍无法联系到其master名称服务器,则slave就会使该区域失效。使一个区域失效意味着salve将不再回答对于该区域的查询。本质上,这个字段的意义在于:在某个时刻,数据变得太陈旧了,与其提供陈旧的数据还不如不提供的好

negative caching TTL(否定缓存TTL):TTL代表着生存时间(time to live), 这个值使用于所有来自该区域权威名称服务器的否定响应。

RFC1537 建议顶级名称服务器采用如下数值:

第五章 DNS和电子邮件

5.1 MX记录

DNS使用单一类型的资源记录来实现增强的邮件路由,那就是MX记录。

MX记录:

邮件程序应该把邮件发往优先值最低的邮件交换器,最优先考虑的邮件交换器是优先值最小的。因为优先值是个无符号整数,所有就把“最好”的邮件交换器的优先值设为0.

如果发往优先级最高的邮件交换器的邮件发送失败,那么邮件程序会按照优先值由小到大的顺序,尝试把邮件发往次优先的邮件交换器。

5.4 MX算法

为了避免路由环路的发生,邮件程序在决定向哪里发送消息前,会先丢弃某些MX记录。邮件程序会根据优先值对MX记录列表进行分类,并在其中查找正在运行的主机上的规范域名列表。如果本地主机本身就是一个邮件交换器,那么邮件程序会把代表它本身的那个MX记录以及所有大于或等于其优先值(也就是优先级相同或者更低的)MX记录都删掉。这样做可以避免邮件程序把消息发送给自己,或是发送给离最终目的地“更远”的邮件程序。

5.5.1 发件人策略框架

Sender Policy Framework, SPF

它和MX记录的作用有点相反: MX记录告诉邮件程序将目的地为特定域名的邮件发往特定的邮件服务器。而SPF信息告诉邮件程序哪些邮件服务器被认可发送地址为特定域名的邮件

TXT 示例:

特定记录数据开头的v=spf1标签表示这个TXT记录是一个SPF记录。

SPF记录中的4个限定词:

+ 通过, 相匹配的邮件程序是一个有效的发件人

-  不通过, 相匹配的邮件程序不是一个有效的发件人

~ 软故障   相匹配的邮件程序可能不是一个有效的发件人,因此该消息应当被仔细检查

? 中立, 无效果

-all, 告诉邮件程序应当拒绝(不通过)其他所有发件人的oreilly.com 邮件

SPF TXT 记录常用机制列表

a  指定一个邮件服务器的域名,允许此邮件服务器从其地址发送来自于所有者域名的电子邮件

mx  指定一个域名, 允许其邮件交换器发送来自于所有者域名的电子邮件

ip4  指定一个邮件服务器的ipv4 地址,允许此邮件服务器发送来自于所有者域名的电子邮件。也可以通过CIDR标记法来指定一个网络。注意:网络编号的四个字节组必须全部指定

ipv6 :  指定一个邮件服务器的ipv6 地址, 允许此邮件服务器发送来自于所有者域名的电子邮件。

ptr : 要求发送邮件的服务器的地址上必须存在一个PTR记录。该PTR记录必须将地址映射到某个域名,且该域名必须以TXT记录中的所有者字段的域名结尾,或以冒号后所指定的参数结尾。

第六章  配置主机

第12章  nslookup 和dig

12.2 交互式与非交互式

要进入交互式会话,只需输入nslookup

[root@httpdns ~]# nslookup
> 

退出时,输入^D (ctrl+D )

对于非交互式查询,把要查询的名称放在命令行里:

[root@httpdns ~]# nslookup headline.m.163.com.
Server:         10.246.101.34
Address:        10.246.101.34#53

Non-authoritative answer:
headline.m.163.com      canonical name = headline.m.163.com.wsglb0.com.
Name:   headline.m.163.com.wsglb0.com
Address: 114.230.207.117
Name:   headline.m.163.com.wsglb0.com
Address: 219.146.68.13
Name:   headline.m.163.com.wsglb0.com
Address: 61.147.227.96
Name:   headline.m.163.com.wsglb0.com
Address: 61.164.210.25
Name:   headline.m.163.com.wsglb0.com
Address: 183.146.213.212
Name:   headline.m.163.com.wsglb0.com
Address: 122.228.24.221
Name:   headline.m.163.com.wsglb0.com
Address: 115.223.16.183

12.3 选项设置

[root@httpdns ~]# nslookup
> set all
Default server: 10.246.122.34
Address: 10.246.122.34#53
Default server: 10.246.122.33
Address: 10.246.122.33#53
Default server: 10.246.39.33
Address: 10.246.39.33#53

Set options:
  novc                  nodebug         nod2
  search                recurse
  timeout = 0           retry = 3       port = 53
  querytype = A         class = IN
  srchlist = cn.net.ai/n.ai.com.test
> 

[no]debug : 默认情况下,排错功能是关闭的。如果它被开启,名称服务器会显示超时并显示回应信息。

[no]search : 默认情况下,如果名称后面没有点号,nslookup 会在名称后面加上搜索列表里的域名(srchlist)

[no]recurse : nslookup 默认为发送递归查询。这需要将查询信息中的recursion-desired 位设置为1.

[no] vc : nslookup 默认会使用UDP数据包而不是TCP发送查询。大部分BIND解析器通过UDP发送查询。

port=53 : 名称服务器监听在53端口上。

querytype=A :  默认情况下,nslookup 查找A资源记录类型

class=IN : 只有一种类型Internet(IN)

timeout=5 : 如果名称服务器在5秒内没有响应,nslookup 会重新发送查询,并将超时时间加倍

retry=4 : 发送查询4次才放弃。每次尝试后,超时时间值都会加倍

 srchlist=cn.net.ai/n.ai.com.test : 如果search选项是打开的,这些域名添加到结尾不是以点号结束的名称上。这些域名按顺序列出以便他们被重试,并用反斜杠分隔。

12.5.1 查找不同类型的记录

默认的,nslookup 会为域名查找地址,或者为地址查找域名

[root@httpdns ~]# nslookup interface.music.163.com
Server:         10.246.122.34
Address:        10.246.122.34#53

[root@httpdns ~]# nslookup 59.111.160.197
Server:         10.246.122.34
Address:        10.246.122.34#53

** server can't find 197.160.111.59.in-addr.arpa.: NXDOMAIN

p127

猜你喜欢

转载自blog.csdn.net/ai2000ai/article/details/101295205