Linux学习(十二)使用BIND提供域名解析服务

Linux学习(十二)使用BIND提供域名解析服务

码动青春 541 2021-03-19

1. DNS域名解析服务

  相较于IP地址,域名更容易被理解和记忆。DNS(Domain Name System,域名系统)技术是一项用于管理和解析域名与IP地址对应关系的技术,可以将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。

  域名后缀一般分为国际域名和国内域名。常见的域名后缀有 .com(商业组织)、.org(非营利组织)、.gov(政府部门)、.net(网络服务商)、.edu(教育机构)、.pub(公公大众)、.cn(中国国家顶级域名)。

  为了为网民提供不间断、稳定且快速的域名查询服务,保证互联网的正常运转,提供了下面三种类型的服务器。

主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。

从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。

缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。

2. 安装Bind服务程序

  建议大家在生产环境中安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。

[root@localhost ~]# yum install -y bind-chroot

在bind服务程序中有下面这三个比较关键的文件。

主配置文件(/etc/named.conf):这些参数用来定义bind服务程序的运行。

区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。

数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。

  把主配置文件 listen-on port 53、allow-query 均修改为 any,分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。这两个地方一定要修改准确。

[root@localhost ~]# vim /etc/named.conf

# 找到以下两处配置修改为 any
listen-on port 53 { any; };
allow-query { any; };

2.1 正向解析实验

  正向解析是指根据域名找到对应的IP地址,这也是最常用的DNS工作模式。

第1步:编辑区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones

# 添加到配置文件的最后面
# type:服务类型,有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器 
# file:解析规则保存的文件位置
# allow-update:允许那些用户动态修改解析信息
zone "namedtest.com" IN {
        type master;
        file "namedtest.com.zone";
        allow-update {none;};
};

第2步:编辑数据配置文件。从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls -al named.localhost
-rw-r-----. 1 root named 152 6月  21 2007 named.localhost
[root@localhost named]# cp -a named.localhost namedtest.com.zone

# 编辑数据配置文件
[root@localhost named]# vim namedtest.com.zone

$TTL 1D #生存周期为1天	
@       IN SOA           namedtest.com. root.namedtest.com. (
        #授权信息开始:   #DNS区域的地址  #域名管理员的邮箱(不要用@符号)                            
                                        0       ; serial   #更新序列号
                                        1D      ; refresh  #更新时间 
                                        1H      ; retry    #重试延时  
                                        1W      ; expire   #失效时间 
                                        3H )    ; minimum  #无效解析记录的缓存时间
        NS      ns.namedtest.com.                          #域名服务器记录
ns      IN A    192.168.10.20                              #地址记录(ns.linuxprobe.com.)
www     IN A    192.168.10.20                              #地址记录(www.linuxprobe.com.)


# 重启named服务程序
[root@localhost named]# systemctl restart named

第3步:检验解析结果。修改网络配置的DNS地址为DNS服务器的IP地址,这样就可以使用由本机提供的DNS查询服务了。


# 使用 nslookup  查看解析结果
C:\Users\Duke>nslookup www.namedtest.com
服务器:  UnKnown
Address:  192.168.10.10

名称:    www.namedtest.com
Address:  192.168.10.20

2.2 反向解析实验

  反向解析的作用是将用户提交的IP地址解析为对应的域名。

第1步:编辑区域配置文件。在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.10.0,反写后应该就是10.168.192,而且只需写出IP地址的网络位即可。

[root@localhost named]# vim /etc/named.rfc1912.zones

zone "10.168.10.in-addr.arpa" IN {
       type master;
       file "192.168.10.arpa";
       allow-update {none;};
};

第2步: 编辑数据配置文件。

[root@localhost named]# cp -a named.loopback 192.168.10.arpa
[root@localhost named]# vim 192.168.10.arpa

$TTL 1D
@       IN SOA  namedtest.com.  root.namedtest.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.namedtest.com.
ns      A       192.168.10.20  
20      PTR     ns.namedtest.com. #PTR为指针记录,仅用于反向解析中。
20      PTR     www.namedtest.com.
30      PTR     bbs.namedtest.com.


[root@localhost named]#  systemctl restart named

第3步:检验解析结果。

[root@localhost named]# nslookup 192.168.10.20
20.10.168.192.in-addr.arpa      name = www.namedtest.com.
20.10.168.192.in-addr.arpa      name = ns.namedtest.com.

[root@localhost named]# nslookup 192.168.10.30
30.10.168.192.in-addr.arpa      name = bbs.namedtest.com.

3. 部署从服务器

  从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。

在本实验中,主服务器与从服务器分别使用的操作系统和IP地址。

主机名称操作系统IP地址
主服务器RHEL 8192.168.10.10
从服务器RHEL 8192.168.10.11

第1步:在主服务器的区域配置文件中允许该从服务器的更新请求,即修改allow-update 参数。

[root@localhost named]# vim /etc/named.rfc1912.zones

zone "namedtest.com" IN {
        type master;
        file "namedtest.com.zone";
        allow-update {192.168.10.11;};
};


zone "10.168.192.in-addr.arpa" IN {
       type master;
       file "192.168.10.arpa";
       allow-update {192.168.10.11;};
};

[root@localhost named]# systemctl restart named

第2步:在从服务器中填写主服务器的IP地址与要抓取的区域信息,然后重启服务。注意此时的服务类型应该是slave(从),而不再是master(主)。masters参数后面应该为主服务器的IP地址,而且file参数后面定义的是同步数据配置文件后要保存到的位置,稍后可以在该目录内看到同步的文件。

[root@localhost ~]# vim /etc/named.rfc1912.zones

zone "namedtest.com" IN {
       type slave;
       masters { 192.168.10.10; };
       file "slaves/namedtest.com.zone";
};

zone "10.168.192.in-addr.arpa" IN {
       type slave;
       masters { 192.168.10.10; };
       file "slaves/192.168.10.arpa";
};

[root@localhost ~]# systemctl restart named

第3步:检验解析结果。当从服务器的DNS服务程序在重启后,一般就已经自动从主服务器上同步了数据配置文件,而且该文件默认会放置在区域配置文件中所定义的目录位置中。随后修改从服务器的网络参数,把DNS地址参数修改成192.168.10.11,这样即可使用从服务器自身提供的DNS域名解析服务。

[root@localhost slaves]#  nslookup www.namedtest.com
Server:         192.168.10.11
Address:        192.168.10.11#53

Name:   www.namedtest.com
Address: 192.168.10.11

[root@localhost slaves]# nslookup 192.168.10.20
20.10.168.192.in-addr.arpa      name = www.namedtest.com.
20.10.168.192.in-addr.arpa      name = ns.namedtest.com.


# Linux