BIND 域名服务基础
1、DNS(Domain Name System)系统的作用及类型
整个 Internet 大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,如 www.google.com、mail.163.com 等。很显然这种地址形式要比使用 64.233.189.147、202.108.33.74 的 IP 地址形式更加直观,且更容易被用户记住。
DNS 系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与 IP 地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
①正向解析:根据域名查 IP 地址,即将指定的域名解析为相对应的 IP 地址。域名的正向解析是 DNS 服务器最基本的功能,也是最常用的功能。
②反向解析:根据 IP 地址查域名,即将指定的 IP 地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。
DNS系统域名分布式数据结构:
主机名字www.,二级域名字qq.,顶级域的域名监管机构.com(由全球13台根域统一管理);www.sina.com.cn.:完全合格的域名,最后的“.”代表根域
实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区域(包含 IP 地址到域名的解析记录)。
根据所管理的区域地址数据的来源不同,DNS 系统可以分为不同的类型。在同一台 DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下:
①缓存域名服务器:也称为DNS高速缓存服务器,通过向其它(根域名服务器,共有13台)域名服务器查询获得域名->ip地址记录,将域名查询结果缓存到本地,提高重复查询时的速度。只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。 缓存放在内存里面
②主域名服务器:特定DNS区域的权威服务器(也叫起始授权机构),具有唯一性,负责维护该区域内所有域名->ip地址的映射记录,需要自行建立所负责区域的地址数据文件。维护某一个特定 DNS 区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
③从域名服务器(只读,不能添加,任务就是做备份):也称为辅助域名服务器,是对主域名服务器的热备份,其维护的域名->ip地址记录来源于主域名服务器,需要从主域名服务器自动同步区域地址数据库。与主域名服务器提供完全相同的 DNS 解析服务,通常用于 DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
以上所述主、从服务器的角色只是针对某一个特定的 DNS 区域来说的。例如,同一台DNS 服务器,可以是“.chinaunix.net”区域的主域名服务器,同时也可以是“.cublog.cn”区域的从域名服务器。
2、BIND的安装和控制
BIND 不是唯一能够提供域名服务的 DNS 服务程序,但它却是应用最为广泛的,BIND可以运行在大多数 Linux/UNIX 主机中。其官方站点位于 ISC - ISC。
2.1、安装BIND软件
BIND(Berkeley Internet Name Daemon):是应用最广泛的DNS服务程序;官方站点:https://www.isc.org/
在 CentOS 系统中,系统光盘自带了 BIND 服务的安装文件,主要包括以下几个软件包还有其相关作用:
①bind-9.9.4-37.el7.x86_64.rpm。提供了域名服务的主要程序及相关文件;
②bind-utils-9.9.4-37.el7.x86_64.rpm。提供了对 DNS 服务器的测试工具程序,如 nslookup 等;
③bind-libs-9.9.4-37.el7.x86_64.rpm。提供了 bind、bind-utils 需要使用的库函数;
④bind-chroot-9.9.4-37.el7.x86_64.rpm。为 BIND 服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为 BIND 服务的根目录),以提高安全性。
默认已安装 bind-utils 和 bind-libs,因此只需要安装 bind 和 bind-chroot 即可。
2.2、BIND服务控制
BIND 软件包安装完毕以后,会自动增加一个名为 named 的系统服务,通过 systemctl工具可以控制 DNS 域名服务的运行。例如,执行以下操作可以查询 named 服务的运行状态。
3、BIND服务的配置文件
使用 BIND 软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域数据文件。其中,主配置文件用于设置 named 服务的全局选项、注册区域及访问控制等各种运行参数;区域数据文件用于存放某个 DNS 区域的地址解析记录(正向记录或反向记录)。
3.1、主配置文件
主配置文件 named.conf 通常位于/etc/目录下,在 named.conf 文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号“;”表示结束,以“#”号或“//”开始的部分表示注释文字(大段注释可以使用“/* …… */”的格式)。
1)全局配置部分
全局配置参数包括在形如“options { };”的大括号中,如可以设置监听的地址和端口、区域数据文件存放的目录、允许哪些客户机查询等。
上述配置内容中,除了 directory 配置项通常会保留以外,其他的配置项都可以省略。若不指定 listen-on 配置项,则 named 默认在所有接口的 UDP 53 端口监听服务;若不指定allow-query 配置项,则默认会响应所有客户机的查询请求。
2)区域配置部分
区域配置参数使用“zone …… { };”的配置格式,一台 DNS 服务器可以为多个区域提供解析,因此在 named.conf 文件中也可以有多个 zone 配置段。区域类型按照解析方向可分为正向区域、反向区域。
在上述配置内容中,有几个地方需要注意:
①每个 zone 区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而定,zone 配置部分的“IN”关键字也可以省略。
②反向区域的名称由倒序的网络地址和“.in-addr.arpa”组合而成。例如,对于192.168.1.0/24 网段,其反向区域名称表示为“1.168.192.in-addr.arpa”。
③file 配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。
④区域配置中的部分参数(如 allow-transfer)也可以放在全局配置中。
修改完主配置文件以后,可以执行“named-checkconf”命令对 named.conf 文件进行语法检查。如果文件中没有语法错误,该命令将不给出任何提示;反之,则会给出相应的提示信息,然后根据出错提示修正文件中的错误即可。带“-z”选项的“named-checkconf”命令还可以尝试加载主配置文件中对应的区域数据库文件,并检查该文件是否存在问题。例如,当出现“…file not found”的错误时,表示找不到对应的文件。
关于 named.conf 文件中各种配置项的详细说明,可以执行“man named.conf”命令查看手册页,也可参考配置样本文件/usr/share/doc/bind-9.9.4/sample/etc/named.conf。
3.2、区域数据配置文件
区域数据配置文件通常位于/var/named/目录下,每个区域数据文件对应一个 DNS 解析区域,文件名及内容由该域的管理员自行设置。
根域“.”的区域数据文件比较特殊。Internet 中所有的 DNS 服务器都使用同一份根区域数据文件,其中列出了所有根服务器的域名和 IP 地址。根区域数据文件可以从国际互联网络信息中心(InterNIC)的官方网站地址 InterNIC | The Internet's Network Information Center下载。
在区域数据文件中,主要包括 TTL(Time To Live,生存时间)配置项、SOA(Start Of Authority,授权信息开始)记录、地址解析记录。文件中的注释信息以“;”(分号)开始。
1)TTL 配置及 SOA 记录部分
第一行的 TTL 配置用于设置默认生存周期,即缓存解析结果的有效时间。SOA 记录部分用于设置区域名称、管理邮箱,以及为从域名服务指定更新参数。
上述配置内容中,时间单位默认为秒(s),也可以使用 M(分)、H(时)、W(周)、D(天)等单位。文件中的“@”符号表示当前的 DNS 区域名,相当于“bdqn.com.”或“admin.bdqn.com.”,表示域管理员的电子邮箱地址(由于“@”符号已有其他含义,因此将电子邮件地址中的“@”用“.”代替)。SOA 记录中的更新序列号用来同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
2)地址解析记录部分
地址解析记录用来设置 DNS 区域内的域名、IP 地址映射关系,包括正向解析记录和反向解析记录。反向解析记录只能用在反向区域数据文件中。
上述配置内容中,用到以下四种常见的地址解析记录:
①NS(Name Server,域名服务器):记录当前区域的 DNS 服务器的主机地址;
②MX(Mail Exchange,邮件交换):记录当前区域的邮件服务器的主机地址,数字10 表示(当有多个 MX 记录时)选择邮件服务器的优先级,数字越大,优先级越低;
③A(Address,地址):记录正向解析条目。例如,“www IN A 173.16.16.1”表示域名 www.bdqn.com 对应的 IP 地址是 173.16.16.1;
④CNAME(Canonical Name,别名):记录某一个正向解析条目的其他名称。例如,“ftp IN CNAME www”表示域名 ftp.bdqn.com 是 www.bdqn.com 的别名。
其中,NS、MX 记录行首的“@”符号可以省略(默认继承 SOA 记录行首的@信息),但是必须保留一个空格或 Tab 制表符。
在反向区域数据文件中,不会用到 A 记录,而是使用 PTR 指针(Point)记录。例如,对于反向区域 16.16.173.in-addr.arpa,添加的反向解析记录可以是以下形式:
使用 PTR 记录时,第一列只需要指明对应 IP 地址的“主机地址”部分即可,如“1”或“4” 等,系统在查找地址记录时会自动将当前反向域的网络地址作为前缀。例如,上述文件中的“4 IN PTR mail.bdqn.com.”表示 IP 地址为 173.16.16.4 的主机的域名是 mail.bdqn.com.。
在区域数据配置文件中,凡是不以点号“.”结尾的主机地址,系统在查找地址记录时都会自动将当前的域名作为后缀。例如,若当前的 DNS 域为“bdqn.com”,则在文件中的主机地址“www”相当于“www.bdqn.com.”。因此,当使用完整的 FQDN(Fully Qualified Domain Name,完全合格域名/全称域名)地址时,务必记得地址末尾的点号“.”不能省略。
修改完区域数据文件以后,可以执行“named-checkzone”命令对该文件进行语法检查。依次指定区域名称、数据文件名作为参数。如果文件中没有语法错误,系统将给出“OK”的提示信息。例如,若要检查 DNS 区域 bdqn.com 的区域数据文件 bdqn.com.zone,可以执行以下操作。
当一台服务器需要同时承载某个 DNS 区域内的许多个不同的域名(如 IDC 的虚拟主机服务器、提供个人主页空间的网站服务器等)时,可以在区域数据文件的最后一行添加泛域名解析记录,即使用“*”以匹配任意主机名。
下面演示缓存域名服务器、主域名服务器、从域名服务器的配置操作
实验环境:三台虚拟机;IP地址分别为:192.168.10.101(作为主域名服务器)、192.168.10.102(作为从域名服务器)、192.168.10.103(作为客户端测试)
一、缓存域名服务器的配置操作:
1、101主机关闭防火墙、关闭内核机制
若要永久关闭内核机制,需vi编辑器进入内核数据文件,将状态改为关闭
2、101主机安装bind的软件包
3、101主机vi编辑器进入域名主配置文件
上述文件里的53号端口既支持UDP也支持TCP
UDP的53号端口:
客户端发送解析请求给服务器(UDP53);不需要建立握手链接,封装的数据偏小(否则要分片处理,UDP不能解决)
TCP的53号端口:
迭代查询(两个服务器之间的查询)
主从DNS服务器;DNS服务器转发解析给另一个DNS服务器
修改里面的配置参数
在options配置区域的最后添加上转发器的参数,若后面测试时不成功,可以返回将此配置以“#”注释符号注释掉:
在文件的最后面进行区域的配置,这里文件中的区域类型是缓存域名服务器,因此这里不需要进行修改:hint:意思是缓存
配置好后按ESC键":wq"保存配置并退出
4、101主机启动named服务:
5、101主机vi编辑器进入网卡配置文件
将域名解析服务项修改为101主机的IP地址,另外一个注释掉:
配置好后按ESC键":wq"保存配置并退出;重启网卡服务
6、103主机:安装bind-utils软件包方便使用nslookup命令进行测试
随便测试一个域名
二、主域名服务器配置操作:
正向查找
1、101主机进入域名的主配置文件
将缓存区域的配置注释掉,添加主域名服务器的配置参数
配置好后按ESC键":wq"保存配置并退出,重启named服务
2、101主机;重启服务会报错,其解决方法如下:
vi编辑器进入拷贝好的文件
A记录:IPV4类型
将上图标注的地方修改为以下内容(IN:在...里面,是个介词;A、NS都是指定类型;*:是泛域名服务器):可以根据自己的需要配置
配置好后按ESC键":wq"保存配置并退出
3、101主机;检测(若检测显示错误可以进入主配置文件和正向查找区域文件检查填写的数据是否有错,一定要注意格式)
主配置文件检测(如无误没有任何提示):
正向查找区域文件检测(若无误显示OK)
4、101主机:列出named目录下的文件
可以看到bdqn.com.zone文件的属主是root,是不正确的,它的归属应该是named,这里将其属主进行修改,然后重启named服务
5、103主机:先安装一个bind-utils软件包以方便使用nslookup命令进行测试
显示以上结果说明主域名服务器正向查找配置完成无误;下面继续主域名服务器的反向查找配置:
6、101主机:vi编辑器进入主配置文件添加反向查找(图片中最后一个区域)的区域配置参数
7、101主机:有了之前的经验,这里我们将区域配置文件拷贝出来(后面的192.168.10.arap:是给反向查找区域配置文件起的名字,要与主配置文件里起的文件名相同),并将属主进行修改
vi编辑器进入反向查找的区域配置文件
添加配置信息如下(可以根据自己的需要配置)
保存退出后重启
8、101主机:检测(主配置区域文件以及反向查找区域文件检测):
9、103主机:测试
三、从域名服务器的配置
1、102主机:关闭内核机制、关闭防火墙,并安装bind软件包
2、102主机:vi编辑器进入主配置区域文件
将options区域参数进行修改
在文件末尾添加从域名服务器的区域配置(分为正向查找和反向查找)
配置好后保存退出,并重启named服务
3、进入网卡配置文件,修改里面的参数
将DNS域名解析改成102主机地址,另一个注释掉