• CentOS7下BIND配置主从服务器和缓存服务器


    系统环境:CentOS Linux release 7.4.1708 (Core)  3.10.0-693.el7.x86_64

    软件版本:bind-chroot-9.9.4-51.el7_4.1.x86_64

    服务器规划:1台主服务器、1台从服务器,主从服务器都作为DNS缓存服务器,启用DNS转发

    主DNS服务器:10.20.20.2

    从DNS服务器:10.20.20.3

    一、安装与主配置文件

    1、安装bind-chroot

    CentOS7不同于6,只需要安装bind-chroot,就会自动安装主程序包bind和库bind-libs。同时安装bind-utils(包含host和dig程序的包)

    # yum install bind-chroot bind-utils
    # systemctl start named-chroot.service
    # systemctl enable named-chroot.service

    CentOS7下安装了bind-chroot之后,若要使用named-chroot.service,则需要关闭named.service。两者只能运行一个。

    参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-bind

    2、主配置文件named.conf

    acl trusted {
            192.168.10.0/24;  #定义一个acl列表
    };
    options {
        listen-on port 53 { 10.20.20.2; };  #指定监听端口和ip,可以指定多个ip
       listen-on-v6 port 53 { none; };
       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     { trusted; };  #允许查询的客户端列表
        allow-recursion    { trusted; };  #运行通过本服务器递归查询的客户端列表
        forward    first;  #转发模式,first选项代表首先查询forwarders中的DNS服务器,如果查询失败,则从根服务器开始递归查询(需要定义zone "."区域),only选项代表只查询forwarders中的服务器,如果查询失败也不会继续从根服务器进行递归查询
        forwarders    {      #转发DNS查询的权威DNS服务器列表
            202.103.24.68;
            202.103.44.150;
            223.5.5.5;
            223.6.6.6;
            114.114.114.114;
            8.8.8.8;
        };
        
        recursion yes;  #允许递归查询
        dnssec-enable no;  #DNSSEC相关选项,国内的DNS服务器基本没有配置DNSSEC,因此关闭
        dnssec-validation no;
       bindkeys-file "/etc/named.iscdlv.key";
       managed-keys-directory "/var/named/dynamic";
       pid-file "/run/named/named.pid";
       session-keyfile "/run/named/session.key";
    };
    logging {  
            channel default_debug {
                    severity dynamic;
            };
    };
    zone "." IN {  
        type hint;
        file "named.ca";
    };
    #正向解析
    zone "st.local" IN {  #本地区域配置
        type master;  #主服务器
        file "st.local.zone";  #区域解析文件,位于CHROOT-PATH/var/named/
        allow-update { none; };  
        allow-transfer { 10.20.20.3; };  #允许同步区域的从服务器列表
        notify yes;  #定时通知从服务器刷新区域信息,时间间隔为区域解析文件中的refresh值
    };
    #反向解析
    zone "20.20.20.in-addr.arpa" IN {
      type master;
      file "10.20.20.zone";
      allow-update { none; };
      allow-transfer { 10.20.20.3; };
      notify yes;
    };

      这里直接在named.conf里面写zone的配置,也可以单独写到其他文件里,用include包含进来。zone里定义的区域解析文件位于CHROOT-PATH/var/named中,新建或cp的时候注意zone文件的权限,应定义为named用户或归属named组。

    二、区域解析文件

    1、正向解析

    $TTL 1D
    $ORIGIN st.local.
    @       IN SOA  ns1.st.local. admin.st.local. (
                                    2017121106      ; serial
                                            1D      ; refresh  #服务器刷新时间
                                            1H      ; retry  #重新刷新的时间
                                            1W      ; expire  #宣告失效的时间
                                            3H )    ; minimum  #缓存保留时间
                    NS      ns1.st.local.
                    NS      ns2.st.local.
            IN      MX      10 mail.st.local.
    ns1     IN      A       10.20.20.2
    ns2     IN      A       10.20.20.3
    mail    IN      A       10.20.20.2

    如果修改区域解析文件后不能同步至从服务器,则需要更改serial值大于当前值。从服务器在同步主服务器时,会比对serial值,如果发现大于当前值,则立即同步。

    2、反向解析

    $TTL 1D
    $ORIGIN 20.20.10.in-addr.arpa.
    @       IN SOA  ns1.st.local. admin.st.local. (
                                    2017121107      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                    NS      ns1.st.local.
                    NS      ns2.st.local.
            IN      MX      10 mail.st.local.
    2       IN      PTR     ns1.st.local.
    3       IN      PTR     ns2.st.local.
    2       IN      PTR     mail.st.local.

     三、测试配置文件

    # named-checkconf -z
    zone st.local/IN: loaded serial 2017121106
    zone 20.20.10.in-addr.arpa/IN: loaded serial 2017121107
    # named-checkzone st.local var/named/st.local.zone 
    zone st.local/IN: loaded serial 2017121106
    OK
    # named-checkzone 20.20.10.in-addr.arpa var/named/10.20.20.zone 
    zone 20.20.10.in-addr.arpa/IN: 20.20.10.in-addr.arpa/MX 'mail.st.local' (out of zone) has no addresses records (A or AAAA)
    zone 20.20.10.in-addr.arpa/IN: loaded serial 2017121107
    OK

    四、rndc管理工具

    配置完成后,可直接使用rndc flush;rndc reload刷新并重载配置

    rndc可用选项:

    reload 重新装入配置文件和区域

    reload zone [class [view]] 重新装入单个区域

    refresh zone [class [view]] 安排区域的立即维护

    reconfig 仅重新装入配置文件和新区域

    stats 将服务器统计信息写入统计文件中 

    querylog 切换查询日志

    dumpdb 将高速缓存转储到转储文件 (named_dump.db)

    stop 将暂挂更新保存到主文件并停止服务器

    halt 停止服务器,但不保存暂挂更新

    trace 将调试级别增加一级

    trace level 更改调试级别

    notrace 将调试级别设置为 0

    flush 刷新服务器的所有高速缓存

    flush [view] 为某一视图刷新服务器的高速缓存

    status 显示服务器的状态

    五、防火墙

    # iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
    # iptables -I INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
    # iptables-save >/etc/sysconfig/iptables

     六、从服务器配置

    1、安装bind-chroot

    # yum install bind-chroot bind-utils
    # systemctl start named-chroot.service
    # systemctl enable named-chroot.service

    2、主配置文件

    acl trusted {
            192.168.10.0/24;  
    };
    options {
        listen-on port 53 { 10.20.20.3; };
        listen-on-v6 port 53 { none; };
        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     { trusted; };  
        allow-recursion    { trusted; };  
        forward    first;  
        forwarders    {      
            202.103.24.68;
            202.103.44.150;
            223.5.5.5;
            223.6.6.6;
            114.114.114.114;
            8.8.8.8;
        };
        recursion yes;  
        dnssec-enable no;  
        dnssec-validation no;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
    };
    logging {  
            channel default_debug {
                    severity dynamic;
            };
    };
    zone "." IN {  
        type hint;
        file "named.ca";
    };
    #正向解析
    zone "st.local" IN {
            type slave;  #类型为slave
            masters { 10.20.20.2; };  #主服务器ip
            file "slaves/st.local.zone";  
    };
    #反向解析
    zone "20.20.10.in-addr.arpa" IN {
            type slave;
            masters { 10.20.20.2; };
            file "slaves/10.20.20.zone";
    };

     注意/var/named/slaves文件夹的权限

    3、重载配置

    分别重载主从服务器配置。

    # rndc flush;rndc reload

    4、防火墙

    # iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
    # iptables -I INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
    # iptables-save >/etc/sysconfig/iptables

    参考

    http://www.361way.com/bind-dnscache/4802.html

    http://www.361way.com/bind-dns/4807.html

    https://www.server-world.info/en/note?os=CentOS_7&p=dns

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-bind

  • 相关阅读:
    Salesforce的数据权限机制
    Java并发编程:Java内存模型和volatile
    Java并发编程:synchronized和锁优化
    权限控制和OAuth
    MySQL explain详解
    ConcurrentHashMap源码阅读
    HashMap源码阅读
    领域驱动设计的基础知识总结
    Chris Richardson微服务翻译:重构单体服务为微服务
    Chris Richardson微服务翻译:微服务部署
  • 原文地址:https://www.cnblogs.com/st-jun/p/8022137.html
Copyright © 2020-2023  润新知