搭建DNS服务器:正向解析区域、反向解析区域、主从DNS

在搭建DNS服务器之前,可以了解一下在什么情况才需要搭建DNS服务器,以及在什么情况下不需要搭建DNS服务器。在此之前,需要了解DNS中域(domain)和区域(zone)的基本概念,以及DNS资源记录的类型,如果对此不熟悉,可以参考我写的上一篇文章《Caching only DNS的设置与forwarding功能》

一、为什么需要自己搭建DNS服务器?

搭建DNS服务器的原因大致有三点:

(1)一般公司都有多台Server需要接入互联网上并提供服务,此时公司需要向ISP申请一个域(domain),而这多台Server则由公司所在的这个域下。

(2)一般来说,用户访问服务器时通常是根据FQDN查询到IP地址的,而如果FQDN或者IP地址经常有可能要变动时,最好能够自己搭建DNS服务器管理,这样修改起来方便。

(3)当你的Server的数量需要经常变动时,如果搭建了DNS服务器,而Server的FQDN与主机名的对应关系数据存放在这台DNS服务器上,那么只需要自己手动添加新的对应关系即可。

当然了,如果只有一台Server需要接入互联网并向其他主机提供网络服务时,这时只需要申请并让上层DNS服务器管理员帮你设置好hostname与IP地址的对应关系即可,不需要自己搭建DNS服务器。

二、正向解析库文件、反向解析库文件

在上一篇博客中有提到,对于一个域(domain)来说,受其管理的有其下层的子域和主机。一个域(domain)可以包含一个或多个正向解析区域、反向解析区域,但域是一种逻辑概念,而区域(zone)是针对每个要解析的域来定义的。区域的这种定义主要体现在解析库文件上,也就是说,一个区域代表一个解析库文件。但一个解析库文件只能是正向解析和反向解析中的一种。总结来说,对于向互联网提供DNS服务的DNS服务器来说,通常只负责解析某一个域。每一台DNS服务器可以管理一个或多个区域,每个区域可以是正解或反解的。

既然对于每个要解析的域需要用解析库文件来定义,而每个解析库文件就代表一个区域,那么就有必要知道要解析的域是哪些。基本上,根据主机名查询到IP地址的流程称为正向解析,其对应一个正向解析库文件;根据IP地址查询到主机名的流程称为反向解析,其对应一个反向解析库文件。

接下来介绍正向、反向解析库文件中必要的资源记录。

2.1 如何申请DNS正解、反解的设置权?

申请DNS正解的设置权:

任何人都可以向服务商(ISP)注册申请一个域名,只要这个域名还没有被注册。只要注册了域名,就可以使用了。需要注意的是,因为INTERNIC已经定义了TLD,所以自己定义的域名必须是在上层DNS所在域范围内才行,例如你可以申请itab.com、itab.org、itab.cn等域名,但不能随便自定义并申请一个叫做itab.hello这样的域名。总的来说,自定义并且要申请的域名必须符合INTERNIC和ISP规范。

申请DNS反解的设置权:

上面申请DNS正解设置权是向ISP申请在某一上层DNS服务器所管理的域中添加我们的DNS服务器的NS记录和A记录,比如要申请itab.com这个域名,则需要申请在.com这个域的DNS服务器上添加itab.com这个域的NS记录和NS记录对应的A记录。那反解呢?同样地,如果有反解的需求,就需要向你的直属上层ISP申请。比如要申请10.168.192.in-addr.arpa这个域,则需要向管理168.192.in-addr.arpa这个域的DNS服务器的ISP申请。而IP地址是由INTERNIC发放给各家ISP的,而且IP地址是不能够随便设置的(路由问题)。

2.2 DNS的正向解析库文件中必要的资源记录

因为是正向解析,所以重点是根据FQDN查询到IP地址。而一个区域解析库文件是针对某一个域(domain)来定义的,因此在这个域内DNS服务器的FQDN与IP地址的映射也要定义清楚(不然别人没办法查询到这个域所管理的子域和主机信息)。总的来说,正向解析库文件至少应该有以下几种资源记录类型:

①SOA记录

起始授权记录定义了当前区域的区域名称(也可以是当前区域名的主DNS服务器FQDN)、当前区域管理员的邮箱地址、主从服务协调属性的定义以及否定答案的缓存时间TTL。

②NS记录

NS记录定义了当前区域内一个或多个DNS服务器FQDN。

③A记录或AAAA记录

A记录定义了当前区域内各台主机的FQDN到IPv4地址的对应关系,AAAA记录定义了当前区域内各台主机的FQDN到IPv6地址的对应。在正向解析库文件中,对于MX、NS等各类型记录的value为FQDN,此FQDN都需要有对应的一个A记录或AAAA记录。

2.3 DNS反向解析库文件中必要的资源记录

反向解析的重点是由FQDN查询到IP地址,所以反向解析库文件中必要的资源记录类型至少应该有SOA,NS,PTR。SOA和NS记录在上面正向解析已经介绍,这里简单说明一下PTR记录。

PTR记录

就是指向(PoinTeR)的缩写,后面记录的是根据IP地址反解到的FQDN.

三、搭建一个DNS服务器

现在以itab.com这个域为例搭建局域网内的DNS服务器,这个DNS服务会监听在port 53。如果要想让互联网上的其他主机能够访问到本地DNS服务器所管理的主机,需要向ISP注册,并且让DNS服务监听在能够与外部主机进行通信的IP地址的port 53之上。但这里只是作为实验,所以搭建的DNS服务器仅可由本地局域网范围之内使用。

接下来以我的主机(192.168.10.140)搭建DNS服务器。

配置解析一个正向区域的步骤:

(1)定义区域

(2)建立区域数据库文件(主要记录为A记录或AAAA记录)

(3)让服务器重载配置文件和区域数据库文件

配置解析一个反向区域的步骤:

(1)定义区域

(2)建立区域数据库文件(主要记录为PTR记录)

(3)让服务器重载配置和区域数据库文件

3.1 配置解析一个正向区域

(1)定义区域

在主配置文件中(/etc/named.conf)或主配置文件中包含进来的辅助配置文件中(/etc/named.rfc1912.zones)实现,其格式为:

zone "ZONE_NAME" IN {
    type {master|slave|hint|forward};    //四选一。
    file "ZONE_NAME.zone";               //区域数据库文件名可自定义。
}

区域类型:

master:主DNS服务器,可作为DNS主从服务中的主DNS服务器。

slave:从DNS服务器,是DNS主从服务中的从DNS服务器。

hint:根域服务器,是DNS服务器内置的区域,一般安装bind之后在配置文件中就有根域的定义了,这是由bind的rpm包制作者提供的。

forward:转发DNS服务器,详解请见上一篇博客《Caching only DNS的设置与forwarding功能》

查看根域的定义:

[[email protected] ~]# vim /etc/named.conf

zone "." IN {
    type hint;    //记录.这个域(domain)的区域(zone)的类型。
    file "named.ca";    //根域的正解区域数据库文件为/var/named/named.ca。
};

# 其它信息省略。

基本上,每台DNS服务器都至少需要定义两个区域(zone),一个是hint,一个是关于自己域的正解zone,而hint这个区域是DNS服务器内置的。当DNS在自己的数据库中找不到所需的信息时,一定会从根域开始迭代查询,所以根域的区域定义不能少。

需要注意的是,为了让主配置文件/etc/named.conf保持整洁,一般自定义区域可在/etc/named.rfc1912.zones文件中定义。

这里以itab.com这个域为例,在主配置文件的辅助配置文件/etc/named.rfc1912.zones中添加定义如下区域:

zone "itab.com" IN {
    type master;
    file "itab.com.zone";
};

注意:区域名字即为域名。

(2)建立区域数据库文件(主要记录为A记录或AAAA记录)

因为在主配置文件中的全局配置段(options段)里定义了一项:

directory   "/var/named";

所以,在定义zone时的file参数时,后面跟的文件名默认应该存放于/var/named/目录下。

因此,这一步中需在/var/named/目录下创建区域解析库文件itab.com.zone:

[[email protected] ~]# vim /var/named/itab.com.zone 
$TTL 3600    //在开头全局声明TTL值,之后在每一条记录中TTL值都继承这个值,无须再写。
$ORIGIN itab.com.    //定义域名,这里的定义会覆盖默认的ORIGIN变量值。
@       IN      SOA     ns1.itab.com.       dnsadmin.itab.com.  ( 
                2017032901
                1H
                10M
                2H
                1W )
        IN      NS      ns1
        IN      MX  10  mx1
        IN      MX  20  mx2
ns1     IN      A       192.168.10.140
mx1     IN      A       192.168.10.3
mx2     IN      A       192.168.10.4
www     IN      A       192.168.10.140
web     IN      CNAME   www
bbs     IN      A       192.168.10.140
bbs     IN      A       192.168.10.141

需要注意的是,同一个IP地址可以对应多个FQDN(同一台主机可以提供多种服务),而同一个FQDN可以对应多个IP地址(负载均衡)。

为了让其他用户不能访问区域数据库文件,需要把其他用户设置为无任何权限,而且同时还需要把属组设置为named。所以,配置好区域数据库文件之后,还需要修改属组和权限。

[[email protected] ~]# chgrp named /var/named/itab.com.zone    //修改属组为named。
[[email protected] ~]# chmod o= /var/named/itab.com.zone    //设置其他用户没有任何权限。
[[email protected] ~]# ll /var/named/itab.com.zone        //查看区域数据库文件属性。
-rw-r-----. 1 root named 384 3月  29 23:19 /var/named/itab.com.zone

修改属组的还可以用chgrp,如下:

[[email protected] ~]# chown :named /var/named/itab.com.zone
[[email protected] ~]# ll /var/named/itab.com.zone

这样即使named进程被劫持也不能修改区域数据库文件中的内容了。

接下来还需要检查语法错误。

检查主配置文件/etc/named.conf以及主配置文件include进来的辅助配置文件(包括/etc/named.rfc1912.zones)是否有语法错误的命令是named-checkconf,而检查区域数据库文件是否有语法错误的命令是named-checkzone,其使用格式如下:

# named-checkzone ZONE_NAME ZONE_FILE
                  区域名    区域数据库文件路径

示例:

[[email protected] ~]# named-checkconf
//检查主配置文件是否有语法错误,若无任何显示则表示没有语法错误。

[[email protected] ~]# named-checkzone itab.com /var/named/itab.com.zone   //检查区域数据库文件
zone itab.com/IN: loaded serial 2017032901
OK    //显示OK即无错误。

(3)让服务器重载配置文件和区域数据库文件

如果没有任何语法错误,就可以直接重载了。

[[email protected] ~]# rndc reload
server reload successful

# 或者:
[[email protected] ~]# systemctl reload named.service

可用rndc查看DNS服务状态:

[[email protected] ~]# rndc status
version: 9.9.4-RedHat-9.9.4-37.el7 <id:8f9657aa>
CPUs found: 2
worker threads: 2    //DNS服务线程数。
UDP listeners per interface: 2    //表示在每个网络接口上启动的udp监听个数。
number of zones: 7    //当前加载的zone的个数。
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000    //当前为多少个DNS客户端做递归查询,包括能够接受请求并做
                               //递归查询的DNS客户端数量。
tcp clients: 0/100    //当前已建立tcp连接的客户端的数量。
server is up and running    //表示服务已经启动并正常运行了。

这样一个正向解析库文件就配置好,这里进行测试

测试之前确保/etc/resolv.conf文件中配置的DNS指向为192.168.10.140,如下:

[[email protected] ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.10.140

itab.com这个域的区域数据库文件中各资源记录如下:

使用dig工具测试NS记录:

[[email protected] ~]#  dig -t NS itab.com

;; ANSWER SECTION:
itab.com.		3600	IN	NS	ns1.itab.com.

测试A记录:

[[email protected] ~]#  dig -t A web.itab.com

;; ANSWER SECTION:
web.itab.com.		3600	IN	CNAME	www.itab.com.
www.itab.com.		3600	IN	A	192.168.10.140
[[email protected] ~]#  dig -t A bbs.itab.com

;; ANSWER SECTION:
bbs.itab.com.		3600	IN	A	192.168.10.140
bbs.itab.com.		3600	IN	A	192.168.10.141

测试MX记录:

[[email protected] ~]#  dig -t MX itab.com

;; ANSWER SECTION:
itab.com.		3600	IN	MX	20 mx2.itab.com.
itab.com.		3600	IN	MX	10 mx1.itab.com.

测试SOA记录:

[[email protected] ~]#  dig -t SOA itab.com

;; ANSWER SECTION:
itab.com.		3600	IN	SOA	ns1.itab.com. dnsadmin.itab.com. 2017032901 3600 600 7200 604800

经测试,正向解析没有问题。

3.2 配置解析一个反向区域

(1)定义区域

这一步骤跟之前类似,需要注意的一点是反解区域的区域名称遵循特定格式(反写网段地址、加特定后缀)。反解区域的区域名称格式如下:

反写网段地址.in-addr.arpa

举个例子,要反解的IP所在网段为192.168.10.0/24,所以反解区域名称就需要写成10.168.192.in-addr.arpa

这里就以192.168.10.0/24这个网段作为示例定义区域:

[[email protected] ~]# vim /etc/named.rfc1912.zones
//在文件中添加如下内容。
zone "10.168.192.in-addr.arpa" IN {
    type master;
    file "10.168.192.zone";
};

检查主配置文件的语法错误:

[[email protected] ~]# named-checkconf 
[[email protected] ~]#

没有任何提示,说明没有语法错误。

(2)建立区域数据库文件(主要记录为PTR记录)

[[email protected] ~]# vim /var/named/10.168.192.zone    //文件名需要与配置文件中定义的一致。
$TTL 3600
$ORIGIN 10.168.192.in-addr.arpa.
@       IN      SOA     ns1.itab.com.       nsadmin.itab.com.   (
                2017040101
                1H
                10M
                10H
                12H )
        IN      NS      ns1.itab.com.
140     IN      PTR     ns1.itab.com.
32      IN      PTR     mx1.itab.com.
33      IN      PTR     mx2.itab.com.
34      IN      PTR     www.itab.com.
35      IN      PTR     bbs.itab.com.
34      IN      PTR     bbs.itab.com.

注意,在反向区域数据库中不需要定义MX记录。另外,和正向区域数据库一样,同一个IP地址可以对应多个FQDN,一个FQDN也可以对应一个IP地址。

检查反向解析数据库文件是否有语法错误:

[[email protected] ~]# named-checkzone 10.168.192.in-addr.arpa /var/named/10.168.192.zone
zone 10.168.192.in-addr.arpa/IN: loaded serial 2017040101
OK    //语法正确。

修改属组及权限:

[[email protected] ~]# chgrp named /var/named/10.168.192.zone 
[[email protected] ~]# chmod o= /var/named/10.168.192.zone
[[email protected] ~]# ll /var/named/10.168.192.zone
-rw-r-----. 1 root named 327 4月   1 22:00 /var/named/10.168.192.zone

(3)让服务器重载配置和区域数据库文件

[[email protected] ~]# rndc reload
server reload successful

使用rndc查看DNS服务状态:

[[email protected] ~]# rndc status
version: 9.9.4-RedHat-9.9.4-37.el7 <id:8f9657aa>
CPUs found: 2
worker threads: 2
UDP listeners per interface: 2
number of zones: 8    //zone的数量+1.
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

反向区域数据库文件内容如下:

测试

由IP反向解析得到FQDN:

[[email protected] ~]# dig -x 192.168.10.32

;; ANSWER SECTION:
32.10.168.192.in-addr.arpa. 3600 IN	PTR	mx1.itab.com.

经测试,反向解析没有问题。

四、主-从DNS服务器

在生产环境中,为了实现高可用,通常使用两台或多台服务器提供服务,而DNS服务也不例外。但DNS服务器有多台时,系统管理员就不得不手动为多台服务器配置DNS服务,而且还有可能导致配置出错问题,因此就需要使用主-从同步(或者主-辅同步)的机制了。有了主从同步,系统管理员只需要在主DNS服务器上配置修改,而其他从DNS服务器可以自动地、动态地从主DNS服务器那里“复制”一份同样的数据进行同步操作,极为方便。

主-从DNS服务器的职责:

主DNS服务器:维护所负责解析的域数据库的那台DNS服务器,读写操作均可进行。
从DNS服务器:从主DNS服务器那里或其他从DNS服务器那里“复制”一份数据库,但只能进行读操作。

那么从服务器是如何与主DNS服务器进行同步操作的?在上一篇文章中有提到,SOA记录中的信息包括了主从服务协调属性的定义,所以SOA也是同步机制的一种。但这还不够,根据SOA记录,假如设置为从DNS服务器每10分钟到主DNS服务器同步一次数据库的数据,那么如果刚完成某次同步操作时,主DNS服务器马上发生了变化,这样就会导致从DNS服务器有将近10分钟的时间没有更新数据库,而不管是主DNS服务器还是从DNS服务器都是同时向外提供解析服务的,DNS客户端就可能无法查询到结果或查询到错误的结果。为了解决这一问题,除了SOA记录的参数作为同步的参考,还需要引入另外的机制:主DNS服务器只要有更新数据就立即通知从DNS服务器。总结一下,主从同步的实施方式为:

(a)依据SOA记录

序列号:serial,即数据库的版本号,主DNS服务器数据库内容发生变化时,其版本号要递增。

刷新时间间隔:refresh,从DNS服务器每隔多久到主DNS服务器检查序列号更新状况。

重试时间间隔:retry,从DNS服务器从主DNS服务器同步数据库失败时,定义多久之后再次发起尝试请求。

过期时长:expire,从DNS服务器始终联系不上主DNS服务器时,定义多久之后放弃从主DNS服务器同步数据库,并停止提供服务。

否定答案的缓存时长。

(b)一旦更新数据,主DNS服务器立即“通知”从DNS服务器更新数据

接下来介绍主-从DNS服务器的配置。因为在上面已经配置好了一台DNS服务器,且类型为master,因此直接将之作为主DNS服务器即可,这里只需要再配置一台从DNS服务器。主-从DNS服务器用到的主机如下:

主DNS服务器:192.168.10.140    # CentOS 7系统,主机名修改为master.
从DNS服务器:192.168.10.128    # CentOS 6系统,主机名为slave.

需要注意的是,从DNS服务器是区域级别的概念,一个从DNS服务器是一个或多个区域的“从”(slave)(这一个或多个区域在主DNS服务器上定义),而不是一开始就作为整台DNS服务器上所有区域的“从”。

因此,配置一个从区域的步骤如下(首先确保从DNS服务器上安装了bind):

On Slave:

(1)定义一个从区域

zone "ZONE_NAME" IN {
    type slave;
    file "slaves/ZONE_NAME.zone";    //数据库文件应该同步到/var/named/slaves目录下。
    masters { MASTER_IP; };    //说明主DNS服务器是哪台。
};

配置好之后对配置文件的语法进行检查:

[[email protected] ~]# named-checkconf

这里把从区域的数据库文件存放在/var/named/slaves目录下,是因为从DNS服务器向主DNS服务器同步数据库时,这个同步操作是由named进程进行的,而named进程是守护进程,由named用户发起,因此对/var/named/目录不具有写权限,如下:

[[email protected] ~]# ps aux | grep named | grep -v ‘grep‘
named     22451  1.5  2.6 236376 12724 ?       Ssl  15:11   0:00 /usr/sbin/named -u named
# 可见,named进程由named用户发起。

[[email protected] ~]# ll -d /var/named/
drwxr-x--- 5 root named 4096 Mar 28 08:16 /var/named/
# 属主为root,属组为named,named用户不具有写权限。

但bind专门为named同步内置了一个/var/named/slaves目录,对named来说有写权限:

[[email protected] ~]# ll -d /var/named/slaves/
drwxrwx--- 2 named named 4096 Jan 17 21:04 /var/named/slaves/
# named用户具有写权限。

因此,/var/named/slaves目录专用于从DNS服务器从主DNS服务器那里同步数据文件时,需要动态地、自动地创建数据文件。

这里需要注意的是,如果直接把/var/named/的属主改为named,虽然也可以让从DNS服务器自动地创建数据文件,但会引入风险,一旦named进程被劫持,则named所有数据文件会被清空。

(2)重载配置

[[email protected] ~]# rndc reload

如果是首次启动,则:
[[email protected] ~]# service named start    //CentOS 6.
[[email protected] ~]# systemctl reload named.service    //CentOS 7.

On Master:

确保区域数据库文件中为每个从服务器配置NS记录,而且,如果是正向区域文件,还需要为每个从服务器的NS记录配置一个A记录;如果是反向区域文件,则需要为每个从服务器的NS记录配置一个PTR记录。

现在分别为上面配置的主DNS服务器上的正、反向区域做从区域:

On Slave:

修改全局配置段,使其监听在任何地址的53端口上,并设置允许任何人查询:

options {
    ... ...
    listen-on port 53 { any; };
    allow-query     { any; };
    dnssec-enable no;
    dnssec-validation no;
    ... ...
};

定义从区域:

[[email protected] ~]# vim /etc/named.rfc1912.zones
# 在文件中添加如下内容。
zone "itab.com" IN {        //为itab.com这个域做从区域。
    type slave;
    file "slaves/itab.com.zone";
    masters { 192.168.10.140; };
};

zone "10.168.192.in-addr.arpa" IN {        //为10.168.192.in-addr.arpa这个域做从区域。
    type slave;
    file "slaves/10.168.192.zone";
    masters { 192.168.10.140; };
};

检查语法错误:

[[email protected] ~]# named-checkconf 
[[email protected] ~]#     //语法正确。

On Master:

在/var/named/itab.com.zone中添加从DNS服务器的NS记录以及与之对应的A记录:

[[email protected] ~]# vim /var/named/itab.com.zone

$TTL 3600
$ORIGIN itab.com.
@       IN      SOA     ns1.itab.com.       dnsadmin.itab.com.  (
                2017032901
                1H
                10M
                2H
                1W )
        IN      NS      ns1
        IN      NS      ns2        //从DNS服务器的NS记录
        IN      MX  10  mx1
        IN      MX  20  mx2
ns1     IN      A       192.168.10.140
ns2     IN      A       192.168.10.128    //与从DNS服务器的NS记录对应的A记录
mx1     IN      A       192.168.10.3
mx2     IN      A       192.168.10.4
www     IN      A       192.168.10.140
web     IN      CNAME   www
bbs     IN      A       192.168.10.140
bbs     IN      A       192.168.10.141

在/var/named/10.168.192.zone中添加从DNS服务器的NS记录以及与之对应的A记录:

[[email protected] ~]# vim /var/named/10.168.192.zone

$TTL 3600
$ORIGIN 10.168.192.in-addr.arpa.
@       IN      SOA     ns1.itab.com.       nsadmin.itab.com.   (
                2017040101
                1H
                10M
                10H
                12H )
        IN      NS      ns1.itab.com.
        IN      NS      ns2.itab.com.    //从DNS服务器的NS记录
140     IN      PTR     ns1.itab.com.
128     IN      PTR     ns2.itab.com.    //与从DNS服务器的NS记录对应的PTR记录    
32      IN      PTR     mx1.itab.com.
33      IN      PTR     mx2.itab.com.
34      IN      PTR     www.itab.com.
35      IN      PTR     bbs.itab.com.
34      IN      PTR     bbs.itab.com.

将/etc/named.conf文件全局配置段中的不允许转发注释掉:

[[email protected] ~]# vim /etc/named.conf
options {
    ... ...
//  allow-transfer  { none; };
    ... ...
};

为itab.com和10.168.192.in-addr.arpa这两个区域设置允许192.168.10.128这个主机(从DNS服务器)进行区域转发:

[[email protected] ~]# vim /etc/named.rfc1912.zones
# 其他内容省略。
zone "itab.com" IN {
    type master;
    file "itab.com.zone";
    allow-transfer { 192.168.10.128; };    //仅允许192.168.10.128主机进行区域转发。
};

zone "10.168.192.in-addr.arpa" IN {
    type master;
    file "10.168.192.zone";
    allow-transfer { 192.168.10.128; };    //仅允许192.168.10.128主机进行区域转发。
};

检查语法错误:

[[email protected] ~]# named-checkconf 
[[email protected] ~]#

分别重载主从DNS服务器

On Master:

[[email protected] ~]# rndc reload
server reload successful

On Slave:

[[email protected] ~]# rndc reload
server reload successful

如果之前没有启动过named服务,则直接启动即可。

[[email protected] ~]# service named start
Starting named: named: already running                     [  OK  ]

查看状态信息:

在从服务器上能看到传送过来的区域文件,并且能够通过本地解析才行:

[[email protected] ~]# ll /var/named/slaves/
total 8
-rw-r--r-- 1 named named 454 Mar 28 16:37 10.168.192.zone
-rw-r--r-- 1 named named 521 Mar 28 16:37 itab.com.zone

测试:

[[email protected] ~]# dig -t A web.itab.com @192.168.10.128

;; ANSWER SECTION:
web.itab.com.		3600	IN	CNAME	www.itab.com.
www.itab.com.		3600	IN	A	192.168.10.140
[[email protected] ~]# dig -x 192.168.10.34 @192.168.10.128

;; ANSWER SECTION:
34.10.168.192.in-addr.arpa. 3600 IN	PTR	bbs.itab.com.
34.10.168.192.in-addr.arpa. 3600 IN	PTR	www.itab.com.

经测试,没有问题。

现在在主DNS服务器上的正向和反向区域数据库文件中分别添加一条A记录与PTR记录,测试从DNS服务器是否能够同步。

On Master:

[[email protected] ~]# vim /var/named/itab.com.zone
# 为该正向区域数据库添加一条A记录。
$TTL 3600
$ORIGIN itab.com.
@       IN      SOA     ns1.itab.com.       dnsadmin.itab.com.  (
                2017032902        //修改之后记得增加版本号
                1H
                10M
                2H
                1W )
        IN      NS      ns1
        IN      NS      ns2
        IN      MX  10  mx1
        IN      MX  20  mx2
ns1     IN      A       192.168.10.140
ns2     IN      A       192.168.10.128
mx1     IN      A       192.168.10.3
mx2     IN      A       192.168.10.4
www     IN      A       192.168.10.140
web     IN      CNAME   www
bbs     IN      A       192.168.10.140
bbs     IN      A       192.168.10.141
pop3    IN      A       192.168.10.103    //添加该A记录
[[email protected] ~]# vim /var/named/10.168.192.zone
# 为该反向区域数据库添加一条PTR记录。
$TTL 3600
$ORIGIN 10.168.192.in-addr.arpa.
@       IN      SOA     ns1.itab.com.       nsadmin.itab.com.   (
                2017040102        //修改之后记得增加版本号
                1H
                10M
                10H
                12H )
        IN      NS      ns1.itab.com.
        IN      NS      ns2.itab.com.
140     IN      PTR     ns1.itab.com.
128     IN      PTR     ns2.itab.com.
32      IN      PTR     mx1.itab.com.
33      IN      PTR     mx2.itab.com.
34      IN      PTR     www.itab.com.
35      IN      PTR     bbs.itab.com.
34      IN      PTR     bbs.itab.com.
123     IN      PTR     pop3.itab.com.    //添加该PTR记录

检查区域数据库文件语法错误:

[[email protected] ~]# named-checkzone itab.com /var/named/itab.com.zone
zone itab.com/IN: loaded serial 2017032902
OK
[[email protected] ~]# named-checkzone 10.168.192.in-addr.arpa /var/named/10.168.192.zone 
zone 10.168.192.in-addr.arpa/IN: loaded serial 2017040102
OK

重载服务:

[[email protected] ~]# rndc reload
server reload successful

查看日志:

On Slave:

用dig工具(或host、nslookup等)测试:

[[email protected] ~]# dig -t A pop3.itab.com @192.168.10.128

;; ANSWER SECTION:
pop3.itab.com.		3600	IN	A	192.168.10.103
[[email protected] ~]# dig -x 192.168.10.123 @192.168.10.128

;; ANSWER SECTION:
123.10.168.192.in-addr.arpa. 3600 IN	PTR	pop3.itab.com.

同步成功!

五、时间同步

任何在分布式环境中让多台服务器彼此之间基于某种特定应用进行协调的服务都应该配置时间同步。对于DNS服务来说,如果不配置时间同步,有可能会导致从服务器无法同步主服务器的数据库。但即便同步了时间,再过一段时间后仍然有可能导致误差,因此可以利用周期性计划,让其每隔一段时间同步一次。而在Linux上进行时间同步需要用到utpdate命令,这里使用互联网上的一个时间服务器:cn.pool.ntp.org.

查看ntpdate命令的程序文件路径:

[[email protected] ~]# which ntpdate 
/usr/sbin/ntpdate

配置周期性任务计划:

[[email protected] ~]# crontab -e

0 0 * * * /usr/sbin/ntpdate cn.pool.ntp.org

这里需要注意的是,要想与cn.pool.ntp.org进行同步,首先必须解析cn.pool.ntp.org这个FQDN,而解析是需要一定的时间的,所以如果想省去解析FQDN占用的时间,或者担心因为某种原因导致解析不成功,从而无法同步时,可以先获取cn.pool.ntp.org的IP地址:

[[email protected] ~]# dig -t A cn.pool.ntp.org

;; ANSWER SECTION:
cn.pool.ntp.org.	16	IN	A	51.15.41.135
cn.pool.ntp.org.	16	IN	A	163.172.177.158
cn.pool.ntp.org.	16	IN	A	79.98.105.18
cn.pool.ntp.org.	16	IN	A	213.239.204.119

这里随意选取一个IP地址即可,这里就选取51.15.41.135这个地址吧!

用IP地址来配置周期性任务计划:

[[email protected] ~]# crontab -e

0 0 * * * /usr/sbin/ntpdate 51.15.41.135

这样进行时间同步时就不需要解析FQDN了。同样地,从服务器也需要配置时间同步,方法和上述一样。

时间: 2024-10-06 02:45:17

搭建DNS服务器:正向解析区域、反向解析区域、主从DNS的相关文章

CentOS 7系统搭建DNS服务(正向解析、反向解析、主从同步)

DNS简介: 互联网中的地址是数字的IP地址,而我们平时用来访问网站的域名主要就是为了便于记忆.域名解析的作用就是把域名指向网站的IP地址,让人们通过注册的域名可以方便地访问到网站的一种服务.域名解析就是域名到IP地址的转换过程.而域名的解析工作就是由DNS服务器完成. DNS系统的作用: 正向解析:根据主机名称(域名)查找对应的IP地址.反向解析:根据IP地址查找对应的主机域名. DNS系统类型: 缓存域名服务器:也称为高速缓存服务器,通过向其他域名服务器查询获得域名.IP地址记录,然后将域名

搭建DNS服务,正向解析和反向解析搭建DNS服务器

搭建DNS服务器 DNS系统在网络中的作用:维护着一个地址数据库,其中记录了各种主机域名与IP地址的对于关系,以方便为客户程序提供正向或反向的地址查询服务,即正向解析与方向解析. 正向解析:将指定的域名解析为相对应的IP地址. 反向解析:将制定的IP地址解析为相对应的域名.   实验环境:在虚拟机Linux(redhat6.5)系统上搭建DNS服务,实现域名与IP地址的正向解析和反向解析. 一.正向解析 1. 安装DNS软件包 2. 更改主配置文件,开启监听端口53. 3. 更改区域配置文件 4

使用bind实现DNS主服务器的配置以及正向解析、反向解析、主从复制

实验须知:       192.168.1.11作为实验主机1,    192.168.1.12作为实验主机2 1.     缓存服务器的配置 (1)      首先安装bind (2)      在主配置文件/etc/named.conf注释相应内容(如dnssec相关的)   #yum  install bind –y #service named start #ss–tnlp | grep :53 # cp /etc/named.conf{,.bak} #vim /etc/named.co

Centos 7 搭建DNS正向解析和反向解析

Centos 7 搭建DNS正向解析和反向解析 服务的三要素:安装-配置-启动 1.使用yum安装DNS yum install bind -y 2.修改配置文件 vi /etc/named.conf 修改以下内容: listen-on port 53 { any; }; allow-query { any; }; vi /etc/named.rfc1912.zones 在末尾添加以下内容: zone "hello.com" IN { -----正向解析 type master; fi

DNS配置详解 bind实现正向解析和反向解析

DNS是域名服务(Domain Name Service),负责把域名解析成IP地址(正向解析)或者把IP地址解析为域名(反向解析). DNS查询过程: 假设我们要访问www.abc.com,dns解析请求会发送给我们配置dns服务器,如果当前已有缓存则直接把结果返回给我们的终端,如果没有则向dns的根查询负责解析.com的服务器的IP,找到负责.com域的服务器后再向其查询负责abc.com这个域的服务器的IP,得到结果后再向其查询www.abc.com的IP地址,查询到结果后再返回给我们.

Linux DNS正向解析和反向解析配置实例(一)

示例:建立正向反向解析区域为ning.com 在下面的配置中,有详细的解析配置: 1.配置文件的内容设置 #vim /etc/named/named.conf options {   // listen-on port 53 { 127.0.0.1; };----------必须监听在可以和外部通信的一个地址上可以指定,注意书写格式.(注释//掉是监听到所有的53号端口上)   //listen-on-v6 port 53 { ::1; };--------------IPV6的监听地址(注释/

DNS正向解析、反向解析、主从复制以及正向子域授权

一.DNS概述以及相关术语 1.DNS是域名系统 (Domain Name System) 的缩写,是一种组织域层次结构的计算机和网络服务命名系统.它的作用是:把域名转换成为网络可以识别的 IP 地址,查询结果保存起来,并告诉给客户端. 2.FQDN全名是Fully Qualified Domain Name,即完全合格域名 3.CDN的全称是Content Delivery Network,即内容分发网络,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统

DNS域名解析服务(正向解析、反向解析)

介 绍 Internet发展至今,在网的服务器和个人主机数量庞大,每个用户通过记忆IP地址访问网络资源并不现实了. 目前大家访问互联网进行上网浏览信息时,正常是通过域名进行访问(例如:www.baidu.com),而实际上网络中的计算机之间只能基于IP地址来相互访问识别对方的身份,而且要想在互联网中传输数据,也必须基于外网的IP地址来完成.这里就出现了DNS域名系统技术来帮我们简化此过程,以此来降低用户访问网络资源的门槛.为什么呢?因为它相对于IP地址,域名更容易被理解并记忆,这样大家便可以通过

DNS原理和正、反向解析配置

DNS and Bind Sockets: C/S: Client:发起应用请求的程序 Server:响应请求(提供服务)的程序 LISTEN:Sockets DNS :Domain Name Server, 应用层协议 C/S: 53/tcp , 53/udp DNS查询类型: 递归查询 迭代查询 DNS服务器类型: 负责解析至少一个域: 主名称服务器 辅助名称服务器 不负责解析: 缓存名称服务器 一次完整的查询请求经过的流程: Client > hosts文件 > DNS Local Ca

Linux-dns基础知识和BIND的简单配置-2(正向解析和反向解析)

DNS服务器基本配置 bind详解:包名:bind进程:named协议:dns使用端口:53(tcp,udp)相关包:bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性.bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)bind-libs:bind服务器端和客户端都使用到的公共库文件bind-utils : bind客户端工具程序文件:/usr/sbin/namedbind权限相关:安装完named会自动创建用户named系统用户,nam