使用BIND提供域名解析服务

DNS(Doamin Name System)域名系统技术:用于管理和解析域名与IP地址之间对应关系的技术

包含三种服务器类型

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

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

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

BIND服务程序的配置文件:

  主配置文件:/etc/named.conf

  区域配置文件:/etc/named.rfc1912.zones

  数据配置文件目录:/var/named

下面开始配置DNS域名服务:

实验前准备:将服务器IP参数里的DNS修改为本机IP地址

[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
[root@linuxprobe named]# systemctl restart network

安装:添加chroot(俗称牢笼机制)扩展包,以便有效的限制BIND服务程序仅能对自身配置文件进行操作,确保服务器的安全:

[root@linuxprobe ~]# yum install bind-chroot

修改主配置文件11行和17行,为any;分别代表:该服务器所有IP地址均可提供DNS域名解析服务;允许所有人对本服务器发起DNS查询请求

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

 11         listen-on port 53 { any; };
 12         listen-on-v6 port 53 { ::1; };
 13         directory       "/var/named";
 14         dump-file       "/var/named/data/cache_dump.db";
 15         statistics-file "/var/named/data/named_stats.txt";
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";
 17         allow-query     { any; };

BIND服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名与IP地址对应关系的位置。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域)

正向解析、反向解析实验:

配置区域配置文件:

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

zone "linuxprobe.com" IN {
        type master;
        file "linuxprobe.com.zone";                       正向解析
        allow-update { none; };
};
zone "10.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.10.arpa";                反向解析
        allow-update { none; };
};

BIND服务程序数据配置文件目录中有named.localhost正向解析模板;named.loopback反向解析模板。

[root@linuxprobe named]# ls
chroot  dynamic   named.empty      named.loopback
data    named.ca  named.localhost  slaves

开始编辑数据配置文件:

[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.zone            cp一定加上 -a参数,否则named服务程序没有读取该文件权限,也可以将文件所在组改为named
[root@linuxprobe named]# cp -a named.loopback 192.168.10.arpa
[root@linuxprobe named]# vim linuxprobe.com.zone

$TTL 1D
@       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.linuxprobe.com.
ns      IN A    192.168.10.10
www     IN A    192.168.10.10
bbs     IN A    192.168.10.20
   
[root@linuxprobe named]# vim 192.168.10.arpa

$TTL 1D
@       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.linuxprobe.com.
ns      A       192.168.10.10
10      PTR     wwwlinuxprobe.com
20      PTR     tech.linuxprobe.com

    

重启服务:

[root@linuxprobe named]# systemctl restart named

验证:

[root@linuxprobe named]# nslookup 
> 192.168.10.10
Server:         127.0.0.1
Address:        127.0.0.1#53

10.10.168.192.in-addr.arpa      name = wwwlinuxprobe.com.10.168.192.in-addr.arpa.
> 192.168.10.20
Server:         127.0.0.1
Address:        127.0.0.1#53

20.10.168.192.in-addr.arpa      name = tech.linuxprobe.com.10.168.192.in-addr.arpa.
> www.linuxprobe.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   www.linuxprobe.com
Address: 192.168.10.10

 部署从服务器

实验环境:服务器IP 192.168.10.10 客户端IP 192.168.10.20

在主服务器的区域配置文件中允许从服务器的更新请求,重启服务

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

zone "linuxprobe.com" IN {
        type master;
        file "linuxprobe.com.zone";
        allow-update { 192.168.10.20; };
};
zone "10.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.10.arpa";
        allow-update { 192.168.10.20; };
[root@linuxprobe ~]# systemctl restart named

在从服务器的区域配置文件中填写主服务器的IP地址与要抓取的区域信息(注意从服务器主配置文件要与主服务器一样11行与17改为any),重启服务

[root@client A ~]# vim /etc/named.rfc1912.zones
 
zone "linuxprobe.com" IN {
        type slave;
        masters { 192.168.10.10; };
        file "slaves/linuxprobe.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.10.10; };
        file "slaves/192.168.10.arpa";
};
[root@client A slaves]# systemctl restart named

检验解析结果,此时切换到服务器数据配置目录/var/named/slaves目录下查看是否有域名解析的文件数据

没有数据,此时将主服务器iptables防火墙策略清空,再次检验

[root@client A slaves]# ls
192.168.10.arpa  linuxprobe.com.zone
[root@client A slaves]# nslookup 
> 192.168.10.10
Server:         114.114.114.114
Address:        114.114.114.114#53

** server can't find 10.10.168.192.in-addr.arpa.: NXDOMAIN

数据目录发现文件,但是无法解析,我们可以看到是由于从服务器的DNS没有设置为本机IP所致。

检验成功。

[root@client A slaves]# systemctl restart network
[root@client A slaves]# nslookup 
> www.linuxprobe.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   www.linuxprobe.com
Address: 192.168.10.10
> 192.168.10.10
Server:         127.0.0.1
Address:        127.0.0.1#53

10.10.168.192.in-addr.arpa      name = wwwlinuxprobe.com.10.168.192.in-addr.arpa.
> 192.168.10.20
Server:         127.0.0.1
Address:        127.0.0.1#53

20.10.168.192.in-addr.arpa      name = tech.linuxprobe.com.10.168.192.in-addr.arpa.

 安全的加密传输:

主服务器中生成密钥

[root@linuxprobe ~]# dnssec-keygen -a hmac-md5 -b 128 -n HOST master-slave
Kmaster-slave.+157+31596
[root@linuxprobe ~]# ls 
anaconda-ks.cfg       Kmaster-slave.+157+31596.key
initial-setup-ks.cfg  Kmaster-slave.+157+31596.private
[root@linuxprobe ~]# cat Kmaster-slave.+157+31596.private 
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: uGiFP0EPcKm938/c8QMHrg==
Bits: AAA=
Created: 20190215143904
Publish: 20190215143904
Activate: 20190215143904

主服务器中创建密钥文件,为了安全起见,将文件所属组改为named,降低其权限,并在etc目录创建硬链接

[root@linuxprobe ~]# cd /etc/named/chroot/etc
-bash: cd: /etc/named/chroot/etc: No such file or directory
[root@linuxprobe ~]# mkdir -p !$
mkdir -p /etc/named/chroot/etc
[root@linuxprobe ~]# cd /etc/named/chroot/etc      
[root@linuxprobe etc]# vim transfer.key
 key "master-slave" {
algorithm hmac-md5;
secret "uGiFP0EPcKm938/c8QMHrg==";
};
[root@linuxprobe etc]# chown root:named transfer.key 
[root@linuxprobe etc]# chmod 640 transfer.key 
[root@linuxprobe etc]# ln transfer.key /etc

开启并加载bind服务的密钥验证功能

include "/etc/transfer.key"
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        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";
        allow-query     { any; };
        allow-transfer  { key master-slave; };

从服务器中清空域名配置文件

192.168.10.arpa  linuxprobe.com.zone
[root@client A slaves]# rm *
rm: remove regular file192.168.10.arpa’? y
rm: remove regular file ‘linuxprobe.com.zone’? y
[root@client A slaves]# ls

配置从服务器

[root@client A etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "uGiFP0EPcKm938/c8QMHrg==";
};
[root@client A etc]# chown root:named transfer.key 
[root@client A etc]# chmod 640 transfer.key 
[root@client A etc]# ln transfer.key /etc

开启并加载从服务器的密钥验证功能

[root@client A etc]# vim /etc/named.conf
   9 include "/etc/transfer.key";
  

  42 server 192.168.10.10
  43 {
  44 keys { master-slave; };
  45 };

验证

[root@client A slaves]# ls
192.168.10.arpa  linuxprobe.com.zone
[root@client A slaves]# vim /etc/named.conf    
[root@client A slaves]# nslookup 
> 192.168.10.10
Server:         127.0.0.1
Address:        127.0.0.1#53

10.10.168.192.in-addr.arpa      name = wwwlinuxprobe.com.10.168.192.in-addr.arpa.
> 

 分离解析技术

是位于不同地理位置的用户通过访问相同的网址,而从不同的服务器中获取相同的数据,提高访问效率。

配置分离解析技术准备:

主机名称 操作系统 IP地址
DNS服务器 RHEL 7 北京网络:122.71.115.10
    美国网络:106.185.25.10
北京用户 Windows 7 122.71.115.1
海外用户 Windows 7 106.185.25.1

第一步:修改主bind配置文件,将11行17行修改为any,由于分离解析技术与DNS根服务器的配置参数有冲突,将51~54的根域信息删除

[root@linuxprobe ~]# systemctl start named
[root@linuxprobe ~]# vim /etc/named.conf 
 
    51 #zone "." IN {
    52 #       type hint;
    53 #       file "named.ca";
    54 #i};

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

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
 
acl "china" { 122.71.115.0/24; };
acl "american" { 106.185.25.0/24; };
view "china" {
match-clients { "china"; };
zone "linuxprobe.com" {
type master;
file "linuxprobe.com.china";
};
};
view "american" {
match-clients { "american"; };
zone "linuxprobe.com" {
type master;
file "linuxprobe.com.american";
};
};

第三步,创建数据配置文件

[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american
[root@linuxprobe named]# vim linuxprobe.com.china 
[root@linuxprobe named]# vim linuxprobe.com.american
    $TTL 1D
@       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.linuxprobe.com.
ns      IN A    122.71.115.10
www     IN A    122.71.115.15
$TTL 1D
@       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.linuxprobe.com.
ns      IN A    106.185.25.10
WWW     IN A    106.185.25.15

最后重启named服务,将客户端IP分别设置为122.71.115.1与106.185.25.1,将DNS地址分别设置为服务器主机的两个IP地址,验证结果

 

posted @ 2019-02-15 18:46  f1烈日灼心  阅读(444)  评论(0编辑  收藏  举报