目录
1.1 BIND 域名服务基础
1.1.1 DNS 系统的作用及类型
DNS 系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与 IP 地 址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
- 正向解析:根据域名查 IP 地址,即将指定的域名解析为相对应的 IP 地址。域名的 正向解析是DNS 服务器最基本的功能,也是最常用的功能。
- 反向解析:根据 IP 地址查域名,即将指定的 IP 地址解析为相对应的域名。域名的 反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。
根据所管理的区域地址数据的来源不同,DNS 系统可以分为不同的类型。在同一台 DNS 服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下。
- 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率, 但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定 其他 DNS 服务器作为解析来源。
- 主域名服务器:维护某一个特定 DNS 区域的地址数据库,对其中的解析记录具有 自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务 器时,需要自行建立所负责区域的地址数据文件。
- 从域名服务器:与主域名服务器提供完全相同的 DNS 解析服务,通常用于 DNS 服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定 的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位 置,以便服务器能自动同步区域的地址数据库。
1.1.2 BIND 的安装和控制
BIND 不是唯一能够提供域名服务的 DNS 服务程序,但它却是应用最为广泛的,BIND 可以运行在大多数 Linux/UNIX 主机中。其官方站点位于 https://www.isc.org/。
1.安装 BIND 软件
[root@localhost Server]# rpm -qa | grep "^bind" //查询是否已安装与BIND 相关的软件包
bind-utils-9.9.4-37.el7.x86_64
bind-license-9.9.4-37.el7.noarch
bind-libs-lite-9.9.4-37.el7.x86_64
bind-9.9.4-37.el7.x86_64
bind-libs-9.9.4-37.el7.x86_64
bind-chroot-9.9.4-37.el7.x86_64
2.BIND 服务控制
BIND 软件包安装完毕以后,会自动增加一个名为 named 的系统服务,通过 systemctl 工具可以控制 DNS 域名服务的运行。
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: inactive (dead)
1.1.3 BIND 服务的配置文件
使用 BIND 软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域数 据文件。其中,主配置文件用于设置 named 服务的全局选项、注册区域及访问控制等各种 运行参数;区域数据文件用于存放某个 DNS 区域的地址解析记录(正向记录或反向记 录)。
1.主配置文件。
1)全局配置部分
options {
listen-on port 53 { 173.16.16.1; }; //监听地址和端口
directory "/var/named"; //区域数据文件的默认存放位置
allow-query { 192.168.1.0/24; 173.16.16.0/24;}; //允许使用本 DNS 服务的网段
};
2)区域配置部分
zone "bdqn.com" IN { //正向"bdqn.com"区域
type master; //类型为主区域
file "bdqn.com.zone"; //区域数据文件为 bdqn.com.zone
allow-transfer { 173.16.16.2; }; //允许下载的从服务器地址
};
zone "16.16.173.in-addr.arpa" IN { //反向"173.16.16.0/24"区域
type master;
file "173.16.16.arpa"; //区域数据文件为 173.16.16.arpa
};
在上述配置内容中,有几个地方需要注意:
- 每个 zone 区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而 定,zone 配置部分的“IN”关键字也可以省略。
- 反向区域的名称由倒序的网络地址和“.in-addr.arpa”组合而成。
- file 配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。
- 区域配置中的部分参数(如 allow-transfer)也可以放在全局配置中。
修改完主配置文件以后,可以执行“named-checkconf”命令对 named.conf 文件进行语 法检查。如果文件中没有语法错误,该命令将不给出任何提示;反之,则会给出相应的提 示信息,然后根据出错提示修正文件中的错误即可。
[root@localhost ~]# named-checkconf -z /etc/named.conf
zone bdqn.com/IN: loading from master file bdqn.com.zone failed: file not found
zone bdqn.com/IN: not loaded due to errors.
_default/bdqn.com/IN: file not found
……
2.区域数据配置文件
1)TTL 配置及 SOA 记录部分
第一行的 TTL 配置用于设置默认生存周期,即缓存解析结果的有效时间。SOA 记录部 分用于设置区域名称、管理邮箱,以及为从域名服务指定更新参数。
$TTL 86400 //有效解析记录的生存周期
@ IN SOA bdqn.com. admin.bdqn.com.( //SOA 标记、域名、管理邮箱
2011030501 //更新序列号,可以是10 位以内的整数
3H //刷新时间,重新下载地址数据的间隔
15M //重试延时,下载失败后的重试间隔
1W //失效时间,超过该时间仍无法下载则放弃
1D //无效解析记录的生存周期
)
2)地址解析记录部分
地址解析记录用来设置 DNS 区域内的域名、IP 地址映射关系,包括正向解析记录和反 向解析记录。反向解析记录只能用在反向区域数据文件中。
@ IN NS ns1.bdqn.com.
IN MX 10 mail.bdqn.com.
ns1 IN A 58.119.74.203
www IN A 173.16.16.1
mail IN A 173.16.16.4
ftp IN CNAME www
上述配置内容中,用到以下四种常见的地址解析记录。
- NS(Name Server,域名服务器):记录当前区域的 DNS 服务器的主机地址。
- MX(Mail Exchange,邮件交换):记录当前区域的邮件服务器的主机地址,数字 10 表示(当有多个 MX 记录时)选择邮件服务器的优先级,数字越大,优先级越 低。
- A(Address,地址):记录正向解析条目。
- CNAME(Canonical Name,别名):记录某一个正向解析条目的其他名称。
在反向区域数据文件中,不会用到 A 记录,而是使用 PTR 指针(Point)记录。
1 IN PTR www.bdqn.com.
4 IN PTR mail.bdqn.com.
修改完区域数据文件以后,可以执行“named-checkzone”命令对该文件进行语法检查。 依次指定区域名称、数据文件名作为参数。如果文件中没有语法错误,系统将给出“OK”的 提示信息。
[root@localhost ~]# cd /var/named/
[root@localhost named]# named-checkzone bdqn.com bdqn.com.zone
zone bdqn.com/IN: loaded serial 2011030501
OK
1.2 使用 BIND 构建域名服务器
1.2.1 构建缓存域名服务器
缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对 互联网访问的出口流量。
- 缓存域名服务器的 IP 地址为 192.168.1.5,并能够正常访问互联网。
- 缓存域名服务器代为处理客户端的 DNS 解析请求,并缓存查询结果。
- 局域网内的各 PC 将首选 DNS 服务器地址设为 192.168.1.5。
1.建立主配置文件 named.conf
若使用范本文件创建 named.conf,应注意修改或删除默认的监听设置、查询控制,以 便能够为局域网段的客户机提供服务。
[root@localhost ~]# vi /etc/named.conf
options {
listen-on port 53 { 192.168.1.5; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db"; //设置域名缓存数据库文件位置
statistics-file "/var/named/data/named_stats.txt"; //设置状态统计文件位置
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
allow-query { 192.168.1.0/24; };
recursion yes;
};
zone "." IN { //正向"."根区域
type hint; //类型为根区域
file "named.ca"; //区域数据文件为 named.ca
};
2.确认根域的区域数据文件 named.ca
根区域的区域数据文件默认位于文件/var/named/named.ca 中,该文件记录了 Internet 中 13 台根域服务器的域名和 IP 地址等相关信息。
3.启动 named 服务
[root@localhost ~]# systemctl start named
[root@localhost ~]# netstat -anpu | grep named
udp 0 0 192.168.1.5:53 0.0.0.0:* 11687/named
udp 0 0 0.0.0.0:53 0.0.0.0:* 11687/named
执行“systemctl start named”命令,启动 named 服务,并通过 netstat 命令确认 named 服务的端口监听状态。若服务启动失败或发现没有正常监听 UDP 53 端口,可以根据错误提 示信息(或者/var/log/messages 文件中的日志记录)排除错误,然后重启服务即可。
4.验证缓存域名服务器
在局域网内的客户机中,将首选 DNS 服务器的地址设为 192.168.1.5,生效后,执行 “nslookup www.google.com”命令对其进行解析,验证其是否能够获得该域名对应的 IP 地址 信息。
1.2.2 构建主域名服务器
1.确认本机的网络地址、主机映射、默认 DNS 服务器地址
[root@ns1etc]# tail -2 /etc/hosts
173.16.16.5 ns1.bdqn.com ns1
173.16.16.6 ns2.bdqn.com ns2
[root@ns1etc]# tail -2 /etc/resolv.conf
nameserver 173.16.16.5
nameserver 173.16.16.6
2.建立主配置文件 named.conf
[root@ns1 ~]# vi /etc/named.conf
options {
listen-on port 53 { 173.16.16.5; };
directory "/var/named";
allow-query { 173.16.16.0/24; };
};
zone "bdqn.com" IN {
type master; //类型为主区域
file "bdqn.com.zone"; //区域数据文件为 bdqn.com.zone
allow-transfer { 173.16.16.6; }; //允许从服务器下载正向区域数据
};
zone "16.16.173.in-addr.arpa" IN {
type master;
file "173.16.16.arpa"; //区域数据文件为 173.16.16.arpa
allow-transfer { 173.16.16.6; }; //允许从服务器下载反向区域数据
};
3. 建立正、反向区域数据文件
[root@ns1~]# cd /var/named/ //切换到区域文件的默认存放位置
[root@ns1 named]# vi bdqn.com.zone //创建正向区域数据文件
$TTL 86400
@ SOA bdqn.com. admin.bdqn.com. (
2011030301
4H
30M
12H
1D
)
@ IN NS ns1.bdqn.com.
IN NS ns2.bdqn.com.
IN MX 10 mail.bdqn.com. ns1 IN A 173.16.16.5
ns2 IN A 173.16.16.6
mail IN A 173.16.16.2
www IN A 173.16.16.1
study IN A 173.16.16.3
* IN A 173.16.16.1
[root@ns1 named]# vi 173.16.16.arpa //创建反向区域数据文件
$TTL 86400
@ SOA bdqn.com. admin.bdqn.com. (
2011030301
4H
30M
12H
1D
)
IN NS ns1.bdqn.com.
IN NS ns2.bdqn.com. 1 IN PTR www.bdqn.com. 2 IN PTR mail.bdqn.com. 3 IN PTR study.bdqn.com
5 IN PTR ns1.bdqn.com.
6 IN PTR ns2.bdqn.com.
因为区域数据配置文件是手动创建的,默认的属主与属组均为 root 用户,而 named 服 务默认以名为“named”的用户身份运行。named 用户要对区域数据文件有读取权限。否则, BIND 服务将无法读取所创建的区域数据配置文件。
[root@ns1 named]# chown :named bdqn.com.zone
[root@ns1 named]# chown :named 173.16.16.arpa
[root@ns1 named]# ls -ld bdqn.com.zone 173.16.16.arpa
-rw-r-----. 1 root named 152 May 16 02:24 173.16.16.arpa
-rw-r-----. 1 root named 399 May 16 02:22 bdqn.com.zone
4. 启动 named 服务或重载配置
[root@localhost named]# systemctl reload named
5. 验证主域名服务器
C:\Users\Administrator>nslookup study.bdqn.com //验证正向域名解析
服务器: ns1.bdqn.com
Address: 173.16.16.5
名称: study.bdqn.com
Address: 173.16.16.3
C:\Users\Administrator>nslookup xxyyzz.bdqn.com //验证泛域名解析
服务器: ns1.bdqn.com
Address: 173.16.16.5
名称: xxyyzz.bdqn.com
Address: 173.16.16.1
C:\Users\Administrator>nslookup 173.16.16.2 //验证反向域名解析
服务器: ns1.bdqn.com
Address: 173.16.16.5
名称: mail.bdqn.com
Address: 173.16.16.2