目录
3.1 BIND域名服务基础
3.1.1 DNS系统的作用及类型
3.1.2 BIND的安装和控制
1. 安装BIND软件
2. BIND服务控制
3.1.3 BIND服务的配置文件
1. 主配置文件
1. 全局配置部分
2. 区域配置部分
2. 区域数据配置文件
1. TTL配置及SOA记录部分
2. 地址解析记录部分
3.2 使用BIND构建域名服务器
3.2.1 构建缓存域名服务器
1. 建立主配置文件named.conf
2. 确认根域的区域数据文件named.ca
3. 启动named服务
4. 验证缓存域名服务器
3.2.2 构建主域名服务器
1. 确认本机的网络地址、主机映射、默认DNS服务器地址
2. 建立主配置文件named.conf
3. 建立正、反区域数据文件
4. 启动named服务或重载配置
5. 验证主域名服务器
3.2.3 构建从域名服务器
1. 确认本机的网络地址、主机映射、默认DNS服务器地址
2. 建立主配置文件named.conf
3. 启动named服务,查看区域数据文件是否下载成功
4. 验证从域名服务器
整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,如 www.google.com、mail.163.com等。很显然这种地址形式要比使用64.233.189.147、202.108.33.74的IP地址形式更加直观,且更容易被用户记住。
DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
- 正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。
- 反向解析:根据IP地址查域名,即将指定的P地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。
实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为zone (区域)。根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)。
根据所管理的区域地址数据的来源不同, DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下。
- 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
- 主域名服务器:维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
- 从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
以上所述主、从服务器的角色只是针对某一个特定的DNS区域来说的。例如,同一台DNS服务器,可以是".chinaunix.net"区域的主域名服务器,同时也可以是".cublog.cn"区域的从域名服务器。
BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中。其官方站点位于 https:/www.isc.orgl。
1. 安装BIND软件
在CentOS系统中,系统光盘自带了BIND 服务的安装文件,主要包括以下几个软件包。
- bind-9.9.4-37.el7.x86_64.rpm
- bind-utils-9.9.4-37.el7.x86_64.rpm
- bind-libs-9.9.4-37.el7.x86_64.rpm
- bind-chroot-9.9.4-37.el7.x86_64.rpm
各软件包的主要作用如下:
- bind:提供了域名服务的主要程序及相关文件
- bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等
- bind-libs:提供了bind、bind-utils需要使用的库函数
- bind-chroot:为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND服务的根目录),以提高安全性
默认已安装 bind-utils 和l bind-libs,因此只需要安装bind和l bind-chroot即可。
2. BIND服务控制
BIND软件包安装完毕以后,会自动增加一个名为named 的系统服务,通过systemctl工具可以控制DNS域名服务的运行。例如,执行以下操作可以查询named服务的运行状态。
使用BIND软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域数据文件。其中,主配置文件用于设置named服务的全局选项、注册区域及访问控制等各种运行参数;区域数据文件用于存放某个DNS区域的地址解析记录(正向记录或反向记录)。
1. 主配置文件
主配置文件named.conf通常位于letc/目录下,在named.conf文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号";"表示结束,以"#"号或"I""开始的部分表示注释文字(大段注释可以使用“的格式)。
1. 全局配置部分
全局配置参数包括在形如“options { };"的大括号中,如可以设置监听的地址和端口、区域数据文件存放的目录、允许哪些客户机查询等。
上述配置内容中,除了directory 配置项通常会保留以外,其他的配置项都可以省略。
若不指定listen-on配置项,则named默认在所有接口的UDP53端口监听服务;若不指定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/sampleletc/named.conf。
2. 区域数据配置文件
区域数据配置文件通常位于lar/named/目录下,每个区域数据文件对应一个DNS解析区域,文件名及内容由该域的管理员自行设置。
根域"."的区域数据文件比较特殊。Internet中所有的DNS服务器都使用同一份根区域数据文件,其中列出了所有根服务器的域名和I地址。根区域数据文件可以从国际互联网络信息中心(InterNIC)的官方网站地址 http:Il/www.internic.net/下载。
在区域数据文件中,主要包括TTL(Time To Live,生存时间〉配置项、SOA ( Start OfAuthority,授权信息开始)记录、地址解析记录。文件中的注释信息以";”(分号)开始。
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 lN 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 DomainName,完全合格域名l全称域名〉地址时,务必记得地址末尾的点号"."不能省略。
修改完区域数据文件以后,可以执行"named-checkzone"命令对该文件进行语法检查。依次指定区域名称、数据文件名作为参数。如果文件中没有语法错误,系统将给出OK""的提示信息。例如,若要检查DNS区域 bdqn.com 的区域数据文件 bdqn.com.zone,可以执行以下操作。
当一台服务器需要同时承载某个DNS区域内的许多个不同的域名(如IDC的虚拟主机服务器、提供个人主页空间的网站服务器等)时,可以在区域数据文件的最后一行添加泛域名解析记录,即使用*”以匹配任意主机名。
缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对互联网访问的出口流量。例如,在一个小型企业的内部网络(图3.1〉中,可单独建立一台(或集成在网关主机中)缓存域名服务器,为各部门的员工计算机提供DNS解析服务。
参考上述网络结构,本小节案例使用的基本环境和要求如下所述。
- 缓存域名服务器的IP地址为192.168.1.5,并能够正常访问互联网。
- 缓存域名服务器代为处理客户端的DNS解析请求,并缓存查询结果。
- 局域网内的各PC将首选 DNS服务器地址设为192.168.1.5。
1. 建立主配置文件named.conf
若使用范本文件创建named.conf,应注意修改或删除默认的监听设置、查询控制,以便能够为局域网段的客户机提供服务。另外,logging、view配置部分一般用不到,可以先注释以避免其干扰。
上述配置内容中,dump-file、statistics-file 等配置项用于指定缓存数据库文件、状态统计文件的位置。添加了“zone : ' IN{ };"部分的根区域设置,尽管缓存服务器并没有自主控制的区域数据,但可以向根服务器进行迭代查询,并将最终获得的解析结果反馈给客户。
有时候为了提高解析效率,也可以不向根区域查询,而是将来自客户端的查询请求转发给国内电信运营商的DNS服务器(如北京的202.106.0.20、202.106.148.1),缓存服务器收到返回的查询结果后再传递给客户端。只要去掉"zone ":' lN......;"的设置,并在全局配置中正确设置forwarders参数即可实现该功能,具体操作如下:
2. 确认根域的区域数据文件named.ca
根区域的区域数据文件默认位于文件/var/named/named.ca中,该文件记录了Internet中13台根域服务器的域名和IP地址等相关信息。
3. 启动named服务
执行"systemctl start named"命令,启动named服务,并通过netstat命令确认named服务的端口监听状态。若服务启动失败或发现没有正常监听UDP53端口,可以根据错误提示信息(或者/var/log/messages文件中的日志记录)排除错误,然后重启服务即可。
4. 验证缓存域名服务器
在局域网内的客户机中,将首选DNS服务器的地址设为192.168.1.5,生效后,执行“nslookup www.google.com"命令对其进行解析,验证其是否能够获得该域名对应的IP地址信息。
主域名服务器通常架设在Internet环境中,提供某一个域或某几个域内的主机名与IP地址的查询服务。为了分担域名查询的压力、提供区域数据的备份,有时还会另外架设一台从域名服务器,与主域名服务器同时提供服务,如图3.2所示。
参考上述网络结构,本小节和下一小节将分别介绍主域名服务器、从域名服务器的构建过程。案例使用的基本网络环境和要求如下所述。
- 主、从域名服务器均位于Internet中,所负责的DNS区域为"bdqn.com"”。
- 主服务器的IP地址为173.16.16.5,主机名为ns1.bdqn.com。
- 从服务器的IP地址为173.16.16.6,主机名为ns2.bdqn.com。
- 在 bdqn.com区域中,除了NS记录以外,提供的解析记录还包括以下内容。
- 网站服务器www.bdqn.com,IP地址为173.16.16.1。
- 邮件服务器mail.bdqn.com,IP地址为173.16.16.2。
- 在线培训服务器study.bdqn.com,IP地址为173.16.16.3。
- 参考上述各服务器的地址映射关系,为173.16.16.0/24 网段提供反向解析。
- 设置bdqn.com域的泛域名解析,对应的I地址为173.16.16.1。
- 客户机将首选DNS服务器、备用DNS服务器分别设为173.16.16.5和173.16.16.6,
使用其中的任何一个服务器,都能够正常查询bdqn.com区域中的主机地址。下面首先讲解使用BIND构建主域名服务器的基本步骤。
下面首先讲解使用BIND构建主域名服务器的基本步骤。
1. 确认本机的网络地址、主机映射、默认DNS服务器地址
将主域名服务器的IP地址设为173.16.16.5,主机名设为ns1.bdqn.com。另外,为了提高域名解析效率,建议将两个DNS服务器的地址映射直接写入letc/hosts文件中,并在letc/resolv.conf文件中指定两个DNS服务器的地址,操作如下:
2. 建立主配置文件named.conf
新创建的named.conf主配置文件只需要提供 bdqn.com 域的正向解析和173.16.16.0/24网段的反向解析,因此相应地添加这两个区域即可。根区域、回环域等其他配置内容可以省略。建立主配置文件的操作如下:
当不需要建立从域名服务器时,上述配置内容中的"“allow-transfer ....."部分可以不添加;当不需要提供反向解析时,“zone "16.16.173.in-addr.arpa”....."部分也可以去掉。
3. 建立正、反区域数据文件
根据named.conf中的zone区域设置,分别建立正向区域数据文件 bdqn.com.zone、反向区域数据文件173.16.16.arpa,操作如下。配置内容可以参考区域数据文件lvar/named/named.localhost。
因为区域数据配置文件是手动创建的,默认的属主与属组均为root用户,而named 服务默认以名为“named”的用户身份运行。named用户要对区域数据文件有读取权限。否则,BIND服务将无法读取所创建的区域数据配置文件,具体操作如下:
4. 启动named服务或重载配置
执行如下的“systemctl start named"命令以启动named服务,如果之前named服务已经在运行,也可以通过“svstemctl reload named”重载配置。
5. 验证主域名服务器
在客户端将DNS服务器指向173.16.16.5(主域名服务器的P地址),使用nslookup命令验证DNS查询结果。例如,以下操作使用 Windows 10客户机分别验证了正向解析、泛域名解析和反向解析的查询结果。
在已经构建好主域名服务器173.16.16.5的基础上,继续构建从域名服务器173.16.16.6。
1. 确认本机的网络地址、主机映射、默认DNS服务器地址
将从域名服务器的IP地址设为173.16.16.6,主机名设为ns2.bdqn.com。另外,主机映射文件letc/hosts 和 DNS解析文件letc/resolv.conf 的内容与主服务器中的内容相同。
2. 建立主配置文件named.conf
在从域名服务器中,named.conf文件的内容与主服务器的内容大部分相同,只是不需要再设置"allow-transfer ......";更关键的一点是,zone部分的区域类型应设置为"slave",并添加“masters {};"语句来指定主域名服务器的地址,具体操作如下:
由于从服务器的区域数据文件是从主服务器中下载而来,因此该文件保存的名称可以自行定义,不用与主服务器中的名称一致。但需要注意的是,named服务默认以名为“named"的用户身份运行,因此要确认named用户对存放目录有写入权限,具体操作如下:
3. 启动named服务,查看区域数据文件是否下载成功
在从域名服务器中启动named服务,若配置无误,则 named将会从主域名服务器中自动下载指定的区域数据文件,并保存到slaves/目录下。另外,通过系统日志文件/var/log/messages 也可以观察到下载区域数据文件的过程,具体操作如下: