前言
DNS(域名解析服务)作为互联网基础设施的核心组件,承担着将易记的域名转换为机器可识别的IP地址的关键任务。其正向解析与反向解析功能,极大简化了网络资源的访问与管理。
2.1BIND域名服务基础
2.1.1DNS系统的作用及类型
DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。
反向解析:根据IP地址查域名,即将指定的IP地址解析未相应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。
实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为zone(区域)。根据地址解析的反向不同,DNS区域相应地分为正向区域(包含域名到ip地址的解析记录)和反向区域(包含域名到ip地址的解析记录)。根据所管理的区域地址数据的来源不同,DNS系统可以分为不同类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见类型如下:
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源
主域名服务器:维护某一个特定NDS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询结果都是一样。关键区别在于,从域名服务器提供的解析结果不是由自己决定,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器位置,以便服务器能自动同步区域的地址数据库。
以上所述主、从服务器的角色只是针对某一个特定的DNS区域来说的。例,同一台DNS服务器可以是“.chinaunix.net”区域的主域名服务器,同时也可以是“.cublog.cn”区域的从域名服务器
2.1.2BIND的安装和控制
BIND不是唯一能够提供服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中
1.安装BIND软件
在openEuler系统中,系统光盘自带了BIND服务的安装文件。包括的软件包作用如下:
bind:提供了域名服务的主要程序及及相关文件
bind-utils:提供了对DNS服务器的测试工具程序,如nslookup
bind-libs:提供了bind、bind-utils需要使用的库函数
bind-chroot:为BIND服务提供了一个伪装的根目录(将/var/named/chroot/文件夹作为BIND服务的根目录),以提高安全性
使用dnf安装bind服务
命令:dnf install bind -y
2.BIND服务控制
BIND软件包安装完毕以后,会自动增加一个名为named的系统服务,通过systemctl工具可以控制DNS域名服务的运行。
例:查询named的运行状态
命令:systemctl status named
2.1.3BIND服务的配置文件
使用BIND软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域配置文件,其中,主配置文件用于设置named服务的全局选项、注册区域及访问控制等各种运行参数:区域数据文件用于存放某个DNS区域的地址解析记录(正向或反向)
1.主配置文件
主配置文件named.conf通常位于/etc/目录下,文件中主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号“;”表示结束,以“#”号或“//”开始的部分表示注释文字
(1)全局配置部分
全局配置参数包括在形如“options { };”的大括号中,如可以设置监听的地址和端口、区域数据文件存放的目录、允许哪些客户机查询。
options {
listen-on port 53 { 192.168.10.101; }; (监听地址和端口)
directory “/var/named”; (区域数据文件的默认存放位置)
allow-query { 192.168.10.0/24; 173.16.16.0/24;}; (允许使用DNS服务的网段)
};
上述配置内容中,除了directory配置项会保留外,其他的配置项都可以省略。若不指定listen-on配置项,则named默认在所有接口的UDP53端口监听服务;若不指定allow-query配置项,则默认会响应所有客户机的查询请求
(2)区域配置部分
区域配置参数使用“zone ...... { };”的配置格式,一台DNS服务器可以为多个区域提供解析,因此在named.conf文件中也可以有多个zone配置段。区域类型按照解析方向可分为正向区域、反向区域。
zone “bdqn.com” IN { (正向“bdqn.com”区域)
type master; (类型为主区域)
file “bdqn.com.zone”; (区域数据文件为bdqn.com.zone)
allow-transfer { 192.168.10.102; }; (允许下载的服务器地址)
};
zone “10.168.192.in-addr.arpa” IN { (反向“192.168.10.0/24”区域)
type master;
file “192.168.10.arpa”; (区域数据文件为192.168.10.arpa)
};
在上述配置内容中,有几个地方需要注意:
a.每个zone区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而定,zone配置部分的“IN”关键字也可以省略
b.反向区域的名称由倒叙的网络地址和“.in-addr.apra”组合而成。例,对于192.168.10.0/24网段,其反向区域名称表示为“10.168.192.in-addr.arpa”
c.file配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。区域设置中的部分参数(如allow-transfer)也可以放在全局配置中
修改完主配置文件以后,可以执行“named-checkconf”命令对named.conf文件进行语法检查。如文件中没有错误,该命令不会给出任何提示;反之,则会给出相应的提示信息,然后根据出错提示修正文件中的错误即可。带“-z”选项的“named-checkconf”命令还可以尝试加载主配置文件中对应的区域数据文件,并检查该文件是否存在问题。
2.区域数据设置文件
区域数据配置文件通常位于/var/named目录下,每个区域数据文件对应一个DNS解析区域,文件名及内容由该区域的管理员自行设置
根域“.”的区域数据文件比较特殊。Internet中所有的NDS服务器都使用同一份根区域数据文件,其中列出了所有根服务器的域名和ip地址。根区域数据文件可以从国际互联网信息中心的官方网址http://www.internic.net/下载
在区域数据文件中,主要包括TTL(生存时间)配置项、SOA(授权信息开始)记录、地址解析记录。文件中的注释信息以“;”开始
(1)TTL配置及SOA记录部分
第一行的TTL配置用于设置默认生存周期,即缓存结果的有效时间。SOA记录部分用于设置区域名称、管理邮箱,以及为域名服务指定更新参数。
$TTL 86400 (有效解析记录的生存周期)
@ IN SOA bdqn.com. admin.bdqn.com. ( (SOA标记、域名、管理邮箱)
2011030501 (更新序列号,可以是10位以内的整数)
3H (刷新时间,重新下载地址数据的间隔)
15M (重试延时,下载失败后的重试间隔)
1W (失效时间,超时该时间仍无法下载则放弃)
1D (无效解析记录的生存周期)
)
上述配置内容中,时间单位默认为秒(s),也可以使用M(分)、H(时)、W(周)、D(天)等单位。文件中的“@”符号表示当前的DNS区域名,相当于“dbqn.com”或“admin.bdqn.com.”,表示域管理员的电子邮箱地址。SOA记录中的更新序列号用来同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
(2)地址解析记录
地址解析记录用来设置DNS区域内的域名、IP地址映射关系,包括正向解析记录和反向解析记录。
反向解析记录只能用在反向区域文件中。
@ IN NS ns1.bdqn.com.
IN MX 10 mail.bdqn.com.
ns1 IN A 192.168.10.101
www IN A 192.168.10.102
mail IN A 192.168.10.101
ftp IN CNAME www
上述配置内容中,用到以下四种常见的地址解析记录。
NS(域名服务器):记录当前区域的NDS服务器的主机地址
MX(邮件交换):记录当前区域的邮件服务器的主机地址,数字10表示(当有多个MX记录时)选择邮件服务器的优先级,数字越大,优先级越低。
A(地址):记录正向解析条目。例,“www IN A 173.16.16.1”表示域名www.baqn.com对应的IP地址是173.16.16.1
CNAME(别名):记录某一个正向解析条目的其他名称。例,“ftp IN CNAME www”表示域名“ftp.dbqn.com”是www.dbqn.com的别名
其中,NS、MX记录行首的“@”符号可以省略(默认继承SOA记录行首的@信息),但是必须保留一个空格或Tab制表符
在反向区域数据文件中,不会用到A记录,而是使用PTR指针记录。例如,对于反向区域192.168.10.arpa,添加的反向解析记录可以是以下形式。
[root@node01 named]# cat 192.168.10.arpa
$TTL 86400
@ IN SOA bdqn.com. admin.baqn.com. (
2011030501
3H
1W
1D
)
NS ns1.bdqn.com.
102 IN PTR www.dbqn.com.
101 IN PTR main,bdqn.com.
使用PTR记录时,第一列只需要指明对应IP地址的“主机地址”部分即可,如“102”或“101”,系统在查找地址记录时会自动将当前反向区域的网络地址作为前缀。例如,上述文件中的“101 IN PTR main.bdqn.com.”表示IP地址为192.168.10.101的主机的域名是mail.bdqn.com.。
在区域数据配置文件中,凡是不以点号“.”结尾的主机地址,系统在查找地址记录时都会自动将当前的域名作为后缀。例如,若当前的DNS域为“bdqn.com”,则在文件中的主机地址“www”相当于"www.bdgn.com”。因此,当使用完整的 FQDN(Fully Qualified Domain Name,完全合格域名/全称域名)地址时,务必记得地址末尾的点号“.”不能省略。
修改完区域数据文件以后,可以执行“named-checkzone”命令对该文件进行语法检查。依次指定区域名称、数据文件名作为参数。如果文件中没有语法错误,系统将给出“0K”的提示信息。例如,若要检查 DNS 区域 bdqn.com 的区域数据文件 bdqn,com.zone,可以执行以下操作。
[root@localhost ~]# cd /var/named/
[root@localhost named]# named-checkzone bdgn.com bdqn.com.zone
zone bdgn.com/IN: loaded serial 2011030501
OK
当一台服务器需要同时承载某个DNS区域内的许多个不同的域名(如IDC 的虚拟主机服务器、提供个人主页空间的网站服务器等)时,可以在区域数据文件的最后一行添加泛域名解析记录,即使用“*”以匹配任意主机名。
安装BIND
- 在大多数Linux系统上,可以使用包管理工具来安装BIND。例如,在CentOS上,可以使用以下命令: sudo yum install bind bind - utils 。在Ubuntu上,使用 sudo apt - get install bind9 bind9 - utils 。
配置BIND
- 主要配置文件是 named.conf ,通常位于 /etc/bind/ 或 /etc/ 目录下。打开该文件,添加或修改以下内容来定义域名区域:
zone "example.com" {
type master;
file "example.com.zone";
};
- 上述配置定义了一个名为 example.com 的域名区域,类型为 master (主服务器),区域数据文件为 example.com.zone 。
创建区域文件
- 在 /var/named/ 目录下创建 example.com.zone 文件(根据实际域名修改),内容如下:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025040901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.100
www IN A 192.168.1.101
- 上述区域文件定义了域名 example.com 的相关记录,包括 SOA (起始授权机构)记录、 NS (域名服务器)记录和 A (地址)记录。将 192.168.1.100 和 192.168.1.101 替换为实际的服务器IP地址。
启动BIND服务
- 使用以下命令启动BIND服务: sudo systemctl start named 。并设置开机自启: sudo systemctl enable named 。
测试域名服务器
- 使用 nslookup 或 dig 命令来测试域名服务器是否正常工作。例如, nslookup www.example.com 或 dig www.example.com ,如果配置正确,应该能够得到相应的IP地址。