一:DNS 系统的作用及类型
DNS
系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与
IP
地
址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
正向解析:根据域名查 IP 地址,即将指定的域名解析为相对应的 IP
地址。域名的 正向解析是 DNS
服务器最基本的功能,也是最常用的功能。
反向解析:根据 IP 地址查域名,即将指定的 IP 地址解析为相对应的域名。域名的 反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。
实际上,每一台
DNS
服务器都只负责管理一个有限范围(一个或几个域)内的主机域
名和
IP
地址的对应关系,这些特定的
DNS
域或
IP
地址段称为
zone
(区域)。根据地址解
析的方向不同,
DNS
区域相应地分为正向区域(包含域名到
IP
地址的解析记录)和反向区
域(包含
IP
地址到域名的解析记录)。
根据所管理的区域地址数据的来源不同,
DNS 系统可以分为不同,DNS 系统可以分为不同的类型。在同一台 DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下。
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,
但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定
其他
DNS
服务器作为解析来源。
主域名服务器:维护某一个特定
DNS
区域的地址数据库,对其中的解析记录具有
自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务
器时,需要自行建立所负责区域的地址数据文件。
从域名服务器:与主域名服务器提供完全相同的
DNS
解析服务,通常用于
DNS
服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询
的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定
的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位
置,以便服务器能自动同步区域的地址数据库。
二:BIND
的安装和控制
2.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
和
bind-libs
,因此只需要安装
bind
和
bind-chroot
即可。
2.2:BIND
服务控制
BIND
软件包安装完毕以后,会自动增加一个名为
named
的系统服务,通过
systemctl
工具可以控制
DNS
域名服务的运行。例如,执行以下操作可以查询
named
服务的运行状
态。
[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)
三:BIND
服务的配置文件
使用
BIND
软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域数
据文件。其中,主配置文件用于设置
named
服务的全局选项、注册区域及访问控制等各种
运行参数;区域数据文件用于存放某个
DNS
区域的地址解析记录(正向记录或反向记
录)
1:主配置文件
主配置文件
named.conf
通常位于
/etc/
目录下,在
named.conf
文件中,主要包括全局
配置、区域配置两个部分,每一条配置记录的行尾以分号
“;”
表示结束,以
“#”
号或
“//”
开始的
部分表示注释文字(大段注释可以使用
“/* …… */”
的格式)。
3.1.1:
全局配置部分
全局配置参数包括在形如
“options { };”
的大括号中,如可以设置监听的地址和端口、区
域数据文件存放的目录、允许哪些客户机查询等。
3.1.2:
区域配置部分
区域配置参数使用
“zone …… { };”
的配置格式,一台
DNS
服务器可以为多个区域提供
解析,因此在
named.conf
文件中也可以有多个
zone
配置段。区域类型按照解析方向可分
为正向区域、反向区域。
2:
区域数据配置文件
区域数据配置文件通常位于
/var/named/
目录下,每个区域数据文件对应一个
DNS
解析
区域,文件名及内容由该域的管理员自行设置。
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
,地址):记录正向解析条目。例如,
“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
,添加的反向解析记录可以是以下形式。
1 IN PTR www.bdqn.com.
4 IN PTR mail.bdqn.com.
三:
使用
BIND
构建域名服务器
缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对
互联网访问的出口流量。例如,在一个小型企业的内部网络(图
3.1
)中,可单独建立一台
(或集成在网关主机中)缓存域名服务器,为各部门的员工计算机提供
DNS
解析服务。
1
.建立主配置文件
named.conf
若使用范本文件创建
named.conf
,应注意修改或删除默认的监听设置、查询控制,以
便能够为局域网段的客户机提供服务。另外,
logging
、
view
配置部分一般用不到,可以先
注释以避免其干扰。
[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
};
上述配置内容中,
dump-file
、
statistics-file
等配置项用于指定缓存数据库文件、状态统
计文件的位置。添加了
“zone '.' IN { };”
部分的根区域设置,尽管缓存服务器并没有自主控制
的区域数据,但可以向根服务器进行迭代查询,并将最终获得的解析结果反馈给客户。
有时候为了提高解析效率,也可以不向根区域查询,而是将来自客户端的查询请求转发
给国内电信运营商的
DNS
服务器(如北京的
202.106.0.20
、
202.106.148.1
),缓存服务器
收到返回的查询结果后再传递给客户端。只要去掉
“zone '.' IN {……};”
的设置,并在全局配
置中正确设置
forwarders
参数即可实现该功能,具体操作如下:
[root@localhost ~]#
vi /etc/named.conf
options {
…… //
省略部分内容
forwarders { 202.106.0.20; 202.106.148.1; };
};
2:确认根域的区域数据文件
named.ca
根区域的区域数据文件默认位于文件
/var/named/named.ca
中,该文件记录了
Internet
中
13
台根域服务器的域名和
IP
地址等相关信息。
3:启动
named
服务
执行
“systemctl start named”
命令,启动
named
服务,并通过
netstat
命令确认
named
服务的端口监听状态。若服务启动失败或发现没有正常监听
UDP 53
端口,可以根据错误提
示信息(或者
/var/log/messages
文件中的日志记录)排除错误,然后重启服务即可。
[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
4:验证缓存域名服务器
四:构建主域名服务器
主域名服务器通常架设在
Internet
环境中,提供某一个域或某几个域内的主机名与
IP
地址的查询服务。为了分担域名查询的压力、提供区域数据的备份,有时还会另外架设一台
从域名服务器,与主域名服务器同时提供服务
1:
确认本机的网络地址、主机映射、默认
DNS
服务器地址
将主域名服务器的
IP
地址设为
173.16.16.5
,主机名设为
ns1.bdqn.com
。另外,为了
提高域名解析效率,建议将两个
DNS
服务器的地址映射直接写入
/etc/hosts
文件中,并在
/etc/resolv.conf
文件中指定两个
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
新 创 建 的
named.conf
主 配 置 文 件 只 需 要 提 供
bdqn.com
域 的 正 向 解 析 和
173.16.16.0/24
网段的反向解析,因此相应地添加这两个区域即可。根区域、回环域等其他
配置内容可以省略。建立主配置文件的操作如下:
[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; }; //允许从服务器下载反向区域数据
};
当不需要建立从域名服务器时,上述配置内容中的
“allow-transfer ……”
部分可以不添加;
当不需要提供反向解析时,
“zone "16.16.173.in-addr.arpa" ……”
部分也可以去掉。
3:
建立正、反向区域数据文件
根据
named.conf
中的
zone
区域设置,分别建立正向区域数据文件
bdqn.com.zone
、
反 向 区 域 数 据 文 件
173.16.16.arpa
, 操 作 如 下 。 配 置 内 容 可 以 参 考 区域 数 据 文 件
/var/named/named.localhost
。
[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
服务或重载配置
执行如下的
“systemctl start named”
命令以启动
named
服务,如果之前
named
服务已
经在运行,也可以通过
“systemctl reload named”
重载配置。
[root@localhost named]#
systemctl reload named
5:验证主域名服务器
在客户端将
DNS
服务器指向
173.16.16.5
(主域名服务器的
IP
地址),使用
nslookup
命令验证
DNS
查询结果。例如,以下操作使用
Windows 10
客户机分别验证了正向解析、
泛域名解析和反向解析的查询结果。
C:\Users\Administrator>
nslookup study.bdqn.com
//
验证正向域名解析