• 使用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地址,验证结果

  • 相关阅读:
    python快速查看内置模块函数
    kettle -小技巧 null 跳过唯一索引
    IOException:Connection refused:connect Kettle连接数据库
    各种数据库的jdbc驱动下载及连接方式
    DataCleaner中文文档
    ModuleNotFoundError: No module named 'xlwt' 。
    liunx 常用命令
    Mysql 环境搭建详解
    查询mysql所有表数据、字段信息
    mysqp pk、nn、qu、b、un、zf、ai、g代表的意思
  • 原文地址:https://www.cnblogs.com/volac/p/10385387.html
Copyright © 2020-2023  润新知