• Web DNS 实战


    环境部署


      192.168.9.28     Centos7     zx28.zxjr.com     DNS 主  
      192.168.9.29   Centos7   zx29.zxjr.com   DNS 从
      192.168.9.30     Centos7     zx30.zxjr.com   测试机
      192.168.9.31   Centos7   zx31.zxjr.com   测试机
      192.168.9.32   Centos7   zx32.zxjr.com   测试机

    主上部署 DNS


      1 // 对应的主机修改主机名
      2 hostnamectl set-hostname zx28.zxjr.com
      3 hostnamectl set-hostname zx29.zxjr.com
      4 ... ...
      5 
      6 // 操作系统及内核版本
      7 [root@zx28 ~]# cat /etc/redhat-release 
      8 CentOS Linux release 7.4.1708 (Core) 
      9 [root@zx28 ~]# uname -r
     10 3.10.0-693.el7.x86_64
     11 
     12 // 安装 BIND
     13 yum -y install bind
     14 
     15 // DNS 主配置文件 /etc/named.conf; 
     16 *** 语法严格, 分号, 空格; 文件的权限, 属主: root , 属组: named , 640 ***
     17 // 配置文件主干
     18 '''
     19 options{
     20     //全局选项
     21 }
     22 zone "zone name" {
     23     //定于区域
     24 }
     25 logging{
     26     //日志文件
     27 }
     28 include:加载别的文件
     29 '''
     30 
     31 // 配置文件
     32 vim /etc/named.conf
     33 options {
     34     listen-on port 53 { 192.168.9.28; };
     35     directory     "/var/named";
     36     dump-file     "/var/named/data/cache_dump.db";
     37     statistics-file "/var/named/data/named_stats.txt";
     38     memstatistics-file "/var/named/data/named_mem_stats.txt";
     39     allow-query     { any; };
     40 
     41     /* 
     42      - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     43      - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion.
     44      - If your recursive DNS server has a public IP address, you MUST enable access
     45        control to limit queries to your legitimate users. Failing to do so will
     46        cause your server to become part of large scale DNS amplification
     47        attacks. Implementing BCP38 within your network would greatly
     48        reduce such attack surface
     49     */
     50     recursion yes;
     51 
     52         dnssec-enable no;
     53         dnssec-validation no;
     54 
     55     /* Path to ISC DLV key */
     56     bindkeys-file "/etc/named.iscdlv.key";
     57 
     58     managed-keys-directory "/var/named/dynamic";
     59 
     60     pid-file "/run/named/named.pid";
     61     session-keyfile "/run/named/session.key";
     62 };
     63 
     64 logging {
     65         channel default_debug {
     66                 file "data/named.run";
     67                 severity dynamic;
     68         };
     69 };
     70 
     71 zone "." IN {
     72     type hint;
     73     file "named.ca";
     74 };
     75 
     76 include "/etc/named.rfc1912.zones";
     77 include "/etc/named.root.key";
     78 
     79 // 检查配置文件; 后面配置文件可加可不加;
     80 named-checkconf [/etc/named.conf]
     81 
     82 // 启动 DNS, 并设置开机启动
     83 systemctl start named
     84 systemctl enable named
     85 
     86 // 使用测试机 192.168.9.30 配置DNS指向 192.168.9.28 进行测试;两种方法修改 DNS, 
     87 // 方法一: 修改 /etc/resolv.conf 配置文件
     88 vim /etc/resolv.conf 
     89 # Generated by NetworkManager
     90 search tian.com
     91 nameserver 192.168.9.28
     92 
     93 // 方法二: 修改 网卡配置的 DNS; /etc/sysconfig/network-scripts/ifcfg-eth0中, 优先级/etc/resolv.conf; 重启网卡生效;
     94 vim /etc/sysconfig/network-scripts/ifcfg-eth0 
     95 ... ...
     96 DNS1=192.168.9.28
     97 
     98 systemctl restart network
     99 
    100 // ping 百度验证解析
    101 [root@zx30 ~]# ping -c2 -i1 www.baidu.com
    102 PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
    103 64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=48 time=4.45 ms
    104 64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=48 time=14.7 ms

    自定义正解域


    主机域

    • 主机域和业务域无关, 且建议分开;
    • 主机域其实是一个假域,也就是说, 主机域其实是不能解析到互联网上的, 只对局域网(内网)提供服务;

    自定义区域数据库文件

    • 一般而言是文本文件, 且只包含 资源记录, 宏定义 和 注释;
    • 需要在自定义区域配置文件中指定存放路径, 可以绝对路径或相对路径 ( 相对于 /var/named )
    • 注意文件属性

    资源记录

     1 $ORIGIN .
     2 $TTL 600    ; 10 minutes
     3 zxjr.com            IN SOA    dns.zxjr.com. 983012***@qq.com. (
     4                 2019073101 ; serial
     5                 10800      ; refresh (3 hours)
     6                 900        ; retry (15 minutes)
     7                 604800     ; expire (1 week)
     8                 86400      ; minimum (1 day)
     9                 )
    10                 NS   dns.zxjr.com.
    11 $ORIGIN zxjr.com.
    12 $TTL 60    ; 1 minute
    13 ns1                             A    192.168.9.28
    14 
    15 // 资源记录格式
    16     name [ttl(缓存时间)] IN 资源记录类型(RRtype)  Value
    17 
    18 // 常用的资源记录类型
    19 // SOA 记录: 起始授权, 只能有一条
    20     name: 只能是区域名称,通常可以简写为@, 例如: zxjr.com
    21     value: 有n个数值, 最主要的是主DNS服务器的FQDN, 点不可省略;
    22     
    23     // *** SOA 必须是区域数据库文件的第一条记录
    24     @ 600 IN SOA  dns.zxjr.com. 管理员邮箱(983012***@qq.com.)(
    25          序列号(serial number) ;注释内容,十进制数据,不能超过10位,通常使用日期时间戳,例如2019073101
    26          刷新时间(refresh time) ;即每隔多久到主服务器检查一次
    27          重试时间(retry time) ;应该小于refresh time
    28          过期时间(expire time);当辅助DNS服务器无法联系上主DNS服务器时,辅助DNS服务器可以在多长时间内认为其缓存是有效的,并供用户查询。
    29          netgative answer ttl ;非权威应答的ttl,缓存DNS服务器可以缓存记录多长时间
    30 31  
    32 // NS记录: 可有多条, 每一NS记录, 必须对应一个 A 记录
    33     name: 区域名称, 通常可以简写为 @
    34     value: DNS服务器的FQDN(可以使用相对名称)
    35     
    36     // 示例 @ 120 IN NS dns
    37             zxjr.com.    120 IN NS dns.zxjr.com.
    38     
    39 // A记录: 只能定义在正向区域数据库文件中 (ipv4 → FQDN)
    40     name: FQDN(可以使用相对名称)
    41     value:IP
    42     
    43     // 示例    (可以轮询)
    44             dns    60 IN A 192.168.9.28
    45             zx28    60 IN A 192.168.9.28
    46 
    47 // MX 记录: 邮件交换记录, 可以有多个(不常用)
    48     name: 区域名称, 用于标识smtp服务器
    49     value: 包含优先级和FQDN
    50     优先级: 0-99, 数字越小, 级别越高;
    51     示例: @ 600 IN MX 10 mail
    52           @ 600 IN MX 20 smtp
    53           
    54 // CNAME记录: canonical name, 别名(FQDN → FQDN)
    55     name: FQDN
    56     value: FQDN
    57     示例: rong IN CNAME zx28
    58     
    59 // 宏定义
    60     $ORIGIN .
    61     $TTL 60

    正解主机域配置


    // 域可以放置/etc/named.conf 配置文件中, 可以放在 /etc/named.rfc1912.zones 文件中, 也可以放置在自定义的文件中, 在 /etc/named.conf 后使用include加载进来;
    
    // 在 /etc/named.rfc1912.zones 文件内追加以下内容
    zone "zxjr.com" IN {
         type master;
         file "zxjr.com.zone";
         allow-update { 192.168.9.28;192.168.9.29; };
    };
    
    // 在 /var/named 下创建 zxjr.com.zone 文件
    vim /var/named/zxjr.com.zone
        $TTL 600    ; 10 minutes
        @               IN SOA    dns.zxjr.com. 983012***@qq.com. (
                        2019073101 ; serial
                        10800      ; refresh (3 hours)
                        900        ; retry (15 minutes)
                        604800     ; expire (1 week)
                        86400      ; minimum (1 day)
                        )
                    NS   dns.zxjr.com.
        $ORIGIN zxjr.com.
        $TTL 60    ; 1 minute
        zx28                A    192.168.9.28
        dns                 A    192.168.9.28
        
    // 修改zone文件权限
    chmod 640 /var/named/zxjr.com.zone
    chown .named /var/named/zxjr.com.zone
    // 三种配置方式: 用宏定义 $ORIGIN . ; 下面使用 zxjr.com 不用宏定义; 下面使用 @ 不用宏定义, 下面使用 zxjr.com.

    检查配置并重启


    // 检查自定义区域配置
    named-checkzone zxjr.com. /var/named/zxjr.com.zone 
        zone zxjr.com/IN: loaded serial 2019073101
        OK
    
    // 检查主配置
    named-checkconf
    
    // 重启named
    systemctl restart named

    反解域的自定义区域配置


    // 在 /etc/named.rfc1912.zones 文件内追加以下内容
    zone "9.168.192.in-addr.arpa" IN {
         type master;
         file "9.168.192.in-addr.arpa.zone";
         allow-update { 192.168.9.28;192.168.9.29; };
    };
    
    // 在 /var/named 下创建 zxjr.com.zone 文件
    vim /var/named/9.168.192.in-addr.arpa.zone
        $TTL 600    ; 10 minutes
        @                 IN SOA    dns.zxjr.com. 983012***@qq.com. (
                        2019073101 ; serial
                        10800      ; refresh (3 hours)
                        900       ; retry (15 minutes)
                        604800     ; expire (1 week)
                        86400      ; minimum (1 day)
                        )
                        NS   dns.zxjr.com.
        $ORIGIN 9.168.192.in-addr.arpa.
        $TTL 60    ; 1 minute
        28            PTR         zx28.zxjr.com.
        29            PTR         zx29.zxjr.com.
    *** 一个IP只能对应唯一的FQDN反解PTR记录, 且应该与正解A记录对应 ***

    // 修改zone文件权限
    chmod 640 /var/named/9.168.192.in-addr.arpa.zone
    chown .named /var/named/9.168.192.in-addr.arpa.zone

    检查反解域配置及重启


    named-checkzone 9.168.192.in-addr.arpa. /var/named/9.168.192.in-addr.arpa.zone 
        zone 9.168.192.in-addr.arpa/IN: loaded serial 2019073101
        OK
        
    systemctl restart named

    检查解析是否生效


    // 方法一
    dig -t PTR 29.9.168.192.in-addr.arpa. @192.168.9.28 +short
        zx29.zxjr.com.
        
    // 方法二
    dig -x 192.168.9.29 @192.168.9.28 +short
        zx29.zxjr.com.
        
    // 反向解析正常

    DNS 主从同步


    在从上部署 DNS

      注意: 从DNS上的 bind 版本要小于等于 主DNS上bind的版本

    // 从DNS服务器配置与主相同
    cat /etc/redhat-release 
        CentOS Linux release 7.4.1708 (Core) 
    uname -r
        3.10.0-693.el7.x86_64
    
    // 安装bind
    yum -y install bind

    修改从DNS的主配置文件


    vim /etc/named.conf
        options {
            listen-on port 53 { 192.168.9.29; };
            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; };
            masterfile-format text;                // 定义域文件类型为 text;
    
            /* 
             - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
             - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion.
             - If your recursive DNS server has a public IP address, you MUST enable access
               control to limit queries to your legitimate users. Failing to do so will
               cause your server to become part of large scale DNS amplification
               attacks. Implementing BCP38 within your network would greatly
               reduce such attack surface
            */
            recursion yes;
    
                dnssec-enable no;
                dnssec-validation no;
    
            /* Path to ISC DLV key */
            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 {
                        file "data/named.run";
                        severity dynamic;
                };
        };
    
        zone "." IN {
            type hint;
            file "named.ca";
        };
    
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";

    修改主DNS配置文件


    // 在主配置文件中 options 添加以下两行; 也可以在主配置文件或named.rfc1912.zones文件同步单个域; 以下三行加入指定域中;
    vim /etc/named.conf
        ... ...
        allow-transfer { 192.168.9.29; };         // 允许哪些主机进行区域传送
        notify yes;                   // 通知从服务器
    also-notify { 192.168.9.29; }; // 主动通知从域名服务器进行更新 ... ... // 检查配置并重启DNS named-checkconf systemctl restart named

    从DNS操作


     1 // 检查完全区域数据传送
     2 dig -t axfr zxjr.com @192.168.9.28
     3 
     4     ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> -t axfr zxjr.com @192.168.9.28
     5     ;; global options: +cmd
     6     zxjr.com.        60    IN    SOA    dns.zxjr.com. 983012386.qq.com. 2019080106 21600 3600 604800 60
     7     zxjr.com.        120    IN    NS    dns.zxjr.com.
     8     dns.zxjr.com.        60    IN    A    192.168.9.28
     9     zx28.zxjr.com.        60    IN    A    192.168.9.28
    10     zx29.zxjr.com.        60    IN    A    192.168.9.29
    11     zxjr.com.        60    IN    SOA    dns.zxjr.com. 983012386.qq.com. 2019080106 21600 3600 604800 60
    12     ;; Query time: 1 msec
    13     ;; SERVER: 192.168.9.28#53(192.168.9.28)
    14     ;; WHEN: Fri Aug 02 15:32:59 CST 2019
    15     ;; XFR size: 8 records (messages 1, bytes 229)
    16     
    17 // 从DNS服务器上创建自定义正解域配置, 在 /etc/named.rfc1912.zones 追加
    18 vim /etc/named.rfc1912.zones
    19      ... ...
    20     zone "zxjr.com" IN {
    21         type slave;
    22         masters { 192.168.9.28; };
    23         file "slaves/zxjr.com.zone";
    24     };
    25     
    26 // 检查配置并启动从 DNS
    27 named-checkconf
    28 systemctl start named
    29 
    30 // 检查同步过来的区域数据库文件, 在 /var/named/slaves 下
    31 cat /var/named/slaves/zxjr.com.zone 
    32     $ORIGIN .
    33     $TTL 60    ; 1 minute
    34     zxjr.com        IN SOA    dns.zxjr.com. 983012386.qq.com. (
    35                     2019080106 ; serial
    36                     21600      ; refresh (6 hours)
    37                     3600       ; retry (1 hour)
    38                     604800     ; expire (1 week)
    39                     60         ; minimum (1 minute)
    40                     )
    41     $TTL 120    ; 2 minutes
    42                 NS    dns.zxjr.com.
    43     $ORIGIN zxjr.com.
    44     $TTL 60    ; 1 minute
    45     dns            A    192.168.9.28
    46     zx28            A    192.168.9.28
    47     zx29            A    192.168.9.29
    48     
    49 // 分别使用两台DNS服务器查询一个A记录, 验证解析是否正确
    50 [root@zx28 ~]# dig -t A zx29.zxjr.com @192.168.9.28 +short
    51     192.168.9.29
    52 [root@zx29 ~]# dig -t A zx29.zxjr.com @192.168.9.28 +short
    53     192.168.9.29

    DNS工具


    // 安装
    yum -y install bind-utils
    
    // 工具一: nslookup -- Windows也常用
        // 交互式
        nslookup 
            > www.baidu.com
            Server:        114.114.114.114
            Address:    114.114.114.114#53
    
            Non-authoritative answer:
            www.baidu.com    canonical name = www.a.shifen.com.
            Name:    www.a.shifen.com
            Address: 220.181.38.149
            Name:    www.a.shifen.com
            Address: 220.181.38.150
            > server localhost
            Default server: localhost
            Address: ::1#53
            Default server: localhost
            Address: 127.0.0.1#53
        // 非交互式
        nslookup www.baidu.com
            Server:        114.114.114.114
            Address:    114.114.114.114#53
    
            Non-authoritative answer:
            www.baidu.com    canonical name = www.a.shifen.com.
            Name:    www.a.shifen.com
            Address: 220.181.38.149
            Name:    www.a.shifen.com
            Address: 220.181.38.150
    
    // 工具二: host 简单粗暴
        host -t A www.baidu.com
            www.baidu.com is an alias for www.a.shifen.com.
            www.a.shifen.com has address 220.181.38.149
            www.a.shifen.com has address 220.181.38.150
            
    // 工具三: dig 功能强大的DNS工具, 重点 ******
    dig -t A www.baidu.com @192.168.9.28
        ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> -t A www.baidu.com @192.168.9.28
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49642
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6
    
        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags:; udp: 4096
        ;; QUESTION SECTION:
        ;www.baidu.com.            IN    A
    
        ;; ANSWER SECTION:
        www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.
        www.a.shifen.com.    300    IN    A    220.181.38.150
        www.a.shifen.com.    300    IN    A    220.181.38.149
    
        ;; AUTHORITY SECTION:
        a.shifen.com.        1200    IN    NS    ns3.a.shifen.com.
        a.shifen.com.        1200    IN    NS    ns4.a.shifen.com.
        a.shifen.com.        1200    IN    NS    ns2.a.shifen.com.
        a.shifen.com.        1200    IN    NS    ns1.a.shifen.com.
        a.shifen.com.        1200    IN    NS    ns5.a.shifen.com.
    
        ;; ADDITIONAL SECTION:
        ns1.a.shifen.com.    1200    IN    A    61.135.165.224
        ns2.a.shifen.com.    1200    IN    A    220.181.33.32
        ns3.a.shifen.com.    1200    IN    A    112.80.255.253
        ns4.a.shifen.com.    1200    IN    A    14.215.177.229
        ns5.a.shifen.com.    1200    IN    A    180.76.76.95
    
        ;; Query time: 606 msec
        ;; SERVER: 192.168.9.28#53(192.168.9.28)
        ;; WHEN: Fri Aug 02 16:13:27 CST 2019
        ;; MSG SIZE  rcvd: 271 
        opcode
        
    dig -t A www.baidu.com @192.168.9.28 +short
        www.a.shifen.com.
        220.181.38.149
        220.181.38.150

    企业级Web DNS


    安装部署 namedmanager

    // namedmanager 下载网址: https://repos.jethrocarr.com/pub/jethrocarr/linux/centos/7/jethrocarr-custom/x86_64/
    
    // 下载最新版本
    [root@zx28 ~]# ll /opt/
    total 1160
    -rw-r--r-- 1 root root  102136 Jul 31 16:29 namedmanager-bind-1.9.0-2.el7.centos.noarch.rpm
    -rw-r--r-- 1 root root 1084340 Jul 31 16:29 namedmanager-www-1.9.0-2.el7.centos.noarch.rpm
    
    // 安装
    [root@zx28 opt]# yum -y localinstall namedmanager-*

    MySQL 配置

    // 启动 Mariadb
    systemctl start mariadb
    
    // 设置开机启动
    systemctl enable mariadb
    
    // 为root设置密码
    mysqladmin -uroot password 123456
    
    // 导入namedmanager的数据库脚本
    cd /usr/share/namedmanager/resources
    ./autoinstall.pl
    ... ...
    Please enter MySQL root password (if any): 123456        // mariadb的root登录密码
    ... ...

    配置 namedmanager

    // 修改config.php; 增加一条配置
    cd /etc/namedmanager
    vim config.php
        ... ...
        $_SERVER['HTTPS'] = "TRUE";
        ... ...
    
    // 修改 config-bind.php
    vim config-bind.php
        ... ...
        $config["api_url"]              = "http://dns.zxjr.com/namedmanager";                   // Application Install Location
        $config["api_server_name"]      = "dns.zxjr.com";                               // Name of the DNS server (important: part of the authentication process)
        $config["api_auth_key"]         = "verycloud";                                  // API authentication key
        $config["log_file"]             = "/var/log/namedmanager_bind_configwriter";
        ... ...
    
    // 修改 php.ini 
    vim /etc/php.ini
        ... ...
        max_input_vars = 10000                // 提交限制表单数量
        ... ...
        
    // 绑 hosts
    vim /etc/hosts
        ... ...
        192.168.9.28    dns.zxjr.com

    配置 apache

    // 修改 apache 配置文件
    vim /etc/httpd/conf/httpd.conf
        ... ...
        Listen 192.168.9.28:8080
        ServerName dns.zxjr.com
        <Directory />
            AllowOverride none
            allow from all
            # Require all denied
        </Directory>
        ... ...
    
    // 检测配置文件的语法正确性
    httpd -t
      [Tue Aug 06 09:48:51.020316 2019] [core:warn] [pid 23118] AH00114: Useless use of AllowOverride in line 11 of /etc/httpd/conf.d/namedmanager.conf.
      Syntax OK
    // 启动并设置为开机启动 systemctl start httpd systemctl enable httpd

    配置 Nginx

    // Centos7 以后自带的yum源中不包含nginx的rpm包, 需要安装nginx源; 安装后在/etc/yum.repos.d下会生成一个 nginx.repo 的文件;
    rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    // 安装 Nginx
    yum -y install nginx
    
    // 修改 nginx 配置文件
    vim /etc/nginx/conf.d/dns.zxjr.com.conf
        server {
            server_name dns.zxjr.com;
    
            location =/ {
                rewrite ^/(.*) http://dns.zxjr.com/namedmanager  permanent;
            }
            location / {
                proxy_pass http://192.168.9.28:8080;
                proxy_set_header Host       $http_host;
                proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
            }
        }
    
    // 检测nginx配置文件语法正确性
    nginx -t
        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: configuration file /etc/nginx/nginx.conf test is successful
        
    // 启动并设置开机启动
    nginx
    systemctl enable nginx

    继续修改 namedmanager 的配置

    // 修改 namedmanager_bind_configwriter.php
    vim /usr/share/namedmanager/bind/namedmanager_bind_configwriter.php
        ... ...
        if (flock($fh_lock, LOCK_EX))
        {
                log_write("debug", "script", "Obtained filelock");
        }
        ... ...
        
    // 给namedmanager_logpush.rcsysinit添加执行权限并启动
    cd /usr/share/namedmanager/resources
    chmod u+x namedmanager_logpush.rcsysinit
    sh namedmanager_logpush.rcsysinit start
        Starting namedmanager_logpush service:
        [root@zx28 resources]# nohup: redirecting stderr to stdout
        
    // 查看是否启动
    ps -ef |grep -v grep |grep php
    root     20363     1  0 Aug04 ?        00:00:00 php -q /usr/share/namedmanager/bind/namedmanager_logpush.php

    使用supervisor管理

      这个脚本非常重要, 是整个 namedmanager 软件的核心, 所以要保证它一直在后台启动, 在这里使用 supervisor 这个软件把它管理起来

    // 首先安装 supervisor 软件, 使用yum安装, 前提保证 epel-release 已安装, 没有安装的话直接使用yum安装
    yum -y install epel-release
    yum -y install supervisor
    
    // 创建脚本启动的配置文件
    vim /etc/supervisord.d/namedmanager_logpush.ini 
        [program:namedmanager_logpush]
        command=php -q /usr/share/namedmanager/bind/namedmanager_logpush.php 2>&1 > /var/log/namedmanager_logpush
        numprocs=1
        directory=/usr/share/namedmanager/resources
        autostart=true
        autorestart=true
        startsecs=22
        startretries=4
        exitcodes=0,2
        stopsignal=QUIT
        stopwaitsecs=10
        user=root
        redirect_stderr=false
        stdout_logfile=/var/log/namedmanager_logpush.out
        stdout_logfile_maxbytes=64MB
        stdout_logfile_backups=4
        stdout_capture_maxbytes=1MB
        stdout_events_enabled=false
        stderr_logfile=/var/log/namedmanager_logpush.err
        stderr_logfile_maxbytes=64MB
        stderr_logfile_backups=4
        stderr_capture_maxbytes=1MB
        stderr_events_enabled=false
        
    // 启动 supervisord 服务并设置开机启动
    systemctl start supervisord
    systemctl enable supervisord
    
    // 查看脚本启动情况
    supervisorctl status
        namedmanager_logpush             RUNNING   pid 20710, uptime 0:00:47
    ps -ef |grep php|grep -v grep
        root     20710 20709  0 10:53 ?        00:00:00 php -q /usr/share/namedmanager/bind/namedmanager_logpush.php 2>&1 > /var/log/namedmanager_logpush
        
    // 查看日志
    tail -200f /var/log/namedmanager_logpush
    [root@hdss7-11 resources]# tail -fn 200 /var/log/namedmanager_logpush
        Error: Unable to authenticate with NamedManager API - check that auth API key and server name are valid
    
    // 修改 inc_soap_api.php
    vim /usr/share/namedmanager/bind/include/application/inc_soap_api.php
        ... ...
                                preg_match("/^http://(S*?)[:0-9]*//", $GLOBALS["config"]["api_url"], $matches);
        ... ...
        
    // 重启 namedmanager_logpush.rcsysinit;已经用supervisor管理起来,只需要kill掉脚本进程;
    ps -ef |grep php |grep -v grep
        root     23059 20709  0 13:36 ?        00:00:00 php -q /usr/share/namedmanager/bind/namedmanager_logpush.php 2>&1 > /var/log/namedmanager_logpush
    kill -9 23059
    ps -ef |grep php|grep -v grep
        root     23128 20709  0 13:38 ?        00:00:00 php -q /usr/share/namedmanager/bind/namedmanager_logpush.php 2>&1 > /var/log/namedmanager_logpush
        
    // 若是没有使用supervisor 管理, 则需要手动重启
    cd /usr/share/namedmanager/resources/
    sh namedmanager_logpush.rcsysinit restart

    配置 BIND9


    首先配置rndc

    // rndc 是BIND 安装包提供的一种控制域名服务运行的工具, 它可以运行在其他计算机上, 通过网络与 DNS服务器进行连接, 然后根据管理员的指令对 named 进程进行远程控制, 此时, 管理员不需要 DNS 服务器的根用户权限, 使用 rndc 可以在不停 DNS 服务器工作的情况进行数据更新, 使修改后的配置文件生效. 在实际情况下, DNS服务器是非常繁忙的, 任何短时间的停顿都会给用户的使用带来影响, 因此, 使用 rndc 工具可以使 DNS服务器更好的为用户提供服务.

    // 查看 rndc.key, 若是存在, 则删除 (若是配置的本机不需要删除, 直接使用) rm -f /etc/rndc.key // 删除后或者没有则生成 rndc.key rndc-confgen -r /dev/urandom // 配置rndc.conf vim /etc/rndc.conf key "rndc-key" { algorithm hmac-md5; secret "wkOZbb0OALfLlSAr2QvXhA=="; }; options { default-key "rndc-key"; default-server 192.168.9.28; default-port 953; };

    Bind 配置

    // bind 主配置文件
    vim /etc/named.conf
        options {
            ... ...
        }
        
        key "rndc-key" {
            algorithm hmac-md5;
            secret "wkOZbb0OALfLlSAr2QvXhA==";
        };
    
        controls {
            inet 192.168.9.28 port 953
                allow { 192.168.9.28; } keys { "rndc-key"; };
        };
        ... ...
        include "/etc/named.namedmanager.conf";
        
    // 修改 named.namedmanager.conf 文件属性
    chown apache.named /etc/named.namedmanager.conf
    
    // 检查配置
    named-checkconf
    
    // 重启bind; 重启的时候可能会报错, named.rfc1912.zones 与named.namedmanager.conf 配置文件中域的冲突; 将named.rfc1912.zones中对应项注释掉;
    systemctl restart named
    
    // 检查启动情况
    netstat -anptu |grep 53
        tcp        0      0 192.168.9.28:53         0.0.0.0:*               LISTEN      19491/named         
        tcp        0      0 192.168.9.28:953        0.0.0.0:*               LISTEN      19491/named         
        udp        0      0 192.168.9.28:53         0.0.0.0:*                           19491/named

    rndc 的使用

    // 如何使用 rndc 控制dns服务器
    rndc status            // 查看状态
    rndc reload            // 重读配置文件和区域文件
    rndc reload zone       // 重读区域问紧啊
    rndc transfer zone     // 重新传送
    rndc flush             // 清空缓存
    rndc stop              // 停止 dns 服务
    // 停止以后, 使用systemctl status named 可以看到状态为 faild; 使用 systemctl start named 启动;
    // 命令后可以指定配置文件, 例如 rndc -c /etc/rndc.conf flush;
    // 一般不要开放远程控制, 危险, 但本机上很常用;

    配置 NamedManager 页面


    浏览器访问 http://dns.zxjr.com (提前绑定好host), 用户名/密码: setup/setup123

    配置 Configuration 选项卡

    配置 Name Servers 选项卡

    Add NewServer

    Server Details

    • Name Server FQDN *

      dns.zxjr.com
      注意:这里一定要填config-bind.php里对应$config["api_server_name"]项配置的值

    • Description
      dns server for zxjr.com

    Server Type

    • Server Type

      API (supports Bind)

    API Authentication Key *

    verycloud

    Server Domain Settings

    • 必须勾选以下三项
    • Nameserver Group *

      default – Default Nameserver Group

    • Primary Nameserver *

      Make this server the primary one used for DNS SOA records.

    • Use as NS Record *

      Adds this name server to all domains as a public NS record.

    Save Changes

    保存后View Name Servers选项卡下,Logging Status应变绿且成为status_synced,如一直不变绿,需要进行排错,不要继续往下做了。

    配置 Domain/Zones 选项卡

    方法一: 手动添加域

    Domain Details

    • Domain Type *

      Standard Domain
      Reverse Domain (IPv4)
      Reverse Domain (IPv6)
      根据实际情况选择,这里选择Standard Domain(正解域)

    • Domain Name *

      zxjr.com

    • Description

      zxjr.com domain

    Domain Server Groups

    注意:一定要勾选域服务器组

    default – Default Nameserver Group

    Start of Authority Record
    • Email Administrator Address *

      Email Administrator Address *

    • Domain Serial *

      2019073101

    • Refresh Timer *

      21600

    • Refresh Retry Timeout *

      3600

    • Expiry Timer *

      604800

    • Default Record TTL *

      60
      注意:这里配置SOA记录最后一个参数值没有按套路出牌,配置的并不是否定应答超时时间(NegativeAnswerTTL),而是默认资源记录的过期时间

    Save Changes

     方法二: 自动添加域

    Import Domain(自动导入)

    • Import Source

      Bind 8/9 Compatible Zonefile

    • Zone File

      选择文件zxjr.com.txt

    导入一个正解域

    upload,选择文件

    附1:zxjr.com.txt   注意:这里可以不用给NS记录和对应的A记录了,会默认生成

    $ORIGIN .
    $TTL 600    ; 10 minutes
    zxjr.com            IN SOA    dns.zxjr.com. 983012***.qq.com. (
                    2019073101 ; serial
                    10800      ; refresh (3 hours)
                    900        ; retry (15 minutes)
                    604800     ; expire (1 week)
                    86400      ; minimum (1 day)
                    )
    $ORIGIN zxjr.com.
    $TTL 60    ; 1 minute
    zx28                   A    192.168.9.28
    zx29                   A    192.168.9.29

    Save Changes

    点保存进入下一个配置页面

    Domain Details

    这里可以配置域的信息和描述,我们这里先配一个Standard Domain(正解域)

    Start of Authority Record

    这里注意SOA记录的最后一个选项Default Record TTL *

    Domain Records

    检查一下和导入文件里的记录是否一致

    Save Changes

    先点一次保存

    Domain Details

    检查一遍域信息和描述

    Domain Server Groups

    注意:这里一定要勾选服务器组(上个页面没有,这里新出来的选项)

    Start of Authority Record

    检查一遍SOA记录

    Save Changes

    最后点一下保存,导入成功

    导入一个反解域

    upload,选择文件

    附2:9.168.192.in-addr.arpa.txt  注意:这里可以不用给NS记录和对应的A记录了,会默认生成

    $TTL 600    ; 10 minutes
    @                 IN SOA    dns.zxjr.com. 983012***.qq.com. (
                    2019073101 ; serial
                    10800      ; refresh (3 hours)
                    900       ; retry (15 minutes)
                    604800     ; expire (1 week)
                    86400      ; minimum (1 day)
                    )
    $ORIGIN 9.168.192.in-addr.arpa.
    $TTL 60    ; 1 minute
    28            PTR         zx28.zxjr.com.
    29            PTR         zx29.zxjr.com.

    Save Changes

    点保存进入下一个配置页面

    Domain Details

    注意:

      • Domain Type *应为Reverse Domain (IPv4)
      • IPv4 Network Address *应为192.168.9.0/24

    Start of Authority Record

    配置SOA记录

    Domain Records

    检查一下和导入文件里的记录是否一致

    Save Changes

    先点一次保存

    Domain Details

    检查一遍域信息和描述

    Domain Server Groups

    注意:这里一定要勾选服务器组(上个页面没有,这里新出来的选项)

    Start of Authority Record

    检查一遍SOA记录

    Save Changes

    最后点一下保存,导入成功

    对应的 Zone 里操作资源记录 (增/删/改)

    View Domains选项卡

    details 按钮

    维护domain的基本配置,略

    delete 按钮

    删除domain,略

    domain record(zxjr.com)

    配置页面

    • Domain Details

      Domain zxjr.com selected for adjustment

    • Nameserver Configuration

      这里是配置NS记录的配置区,默认会生成一条

    TypeTTLName/OriginContent-
    NS 120 host.com dns-manager.od.com -
    • Mailserver Configuration

      略,暂不配置MX记录

    • Host Records Configuration

      这里是配置重点,A记录、CNAME记录、TXT记录等都在这个里配置
      因为是从文件导入的域,默认会有记录

    TypeTTLNameContentReversePTR-
    A 60 zx28 192.168.9.28 delete
    A 60 zx29 192.168.9.29 delete

    Save Changes

    domain record(9.168.192.in-addr.arpa)

    配置页面

    • Domain Details

      Domain 7.4.10.in-addr.arpa selected for adjustment

    • Nameserver Configuration

      这里是配置NS记录的配置区,默认会生成一条

    TypeTTLName/OriginContent-
    NS 120 9.168.192.in-addr.arpa dns.zxjr.com -
    • Mailserver Configuration

      略,暂不配置MX记录

    • Host Records Configuration

      这里是配置重点,A记录、CNAME记录、TXT记录等都在这个里配置
      因为是从文件导入的域,默认会有记录

    TypeTTLNameContent-
    PTR 60 28 zx28.zxjr.com delete
    PTR 60 29 zx29.zxjr.com delete

    Save Changes

    返回Name Servers选项卡

    查看页面DNS服务器状态

    • Logging Status
      status_synced
    • Zonefile Status
      status_synced

    全部变绿且为status_synced即为正常

    查看服务器上配置文件(都是由namedmanager服务自动生成)


    cat /etc/named.namedmanager.conf 
        //
        // NamedManager Configuration
        //
        // This file is automatically generated any manual changes will be lost.
        //
        zone "zxjr.com" IN {          // 正向解析
            type master;            // 类型为主DNS
            file "zxjr.com.zone";       // 正向解析文件位置
            allow-update { none; };      // 允许自动更新
        };
        zone "9.168.192.in-addr.arpa" IN {  // 反向解析
            type master;
            file "9.168.192.in-addr.arpa.zone";
            allow-update { none; };
        };
        
    cat /var/named/zxjr.com.zone 
    $ORIGIN zxjr.com.
    $TTL 60
    @        IN SOA dns.zxjr.com. 983012386.qq.com. (
                2019080501 ; serial
                21600 ; refresh
                3600 ; retry
                604800 ; expiry
                60 ; minimum ttl
            )
    
    ; Nameservers
    
    zxjr.com.    120 IN NS dns.zxjr.com.
    
    ; Mailservers
    
    
    ; Reverse DNS Records (PTR)
    
    
    ; CNAME
    
    
    ; HOST RECORDS
    
    zx28    60 IN A 192.168.9.28
    zx29    60 IN A 192.168.9.29
    
    
    cat /var/named/9.168.192.in-addr.arpa.zone 
        $ORIGIN 9.168.192.in-addr.arpa.
        $TTL 60
        @        IN SOA dns.zxjr.com. 983012386.qq.com. (
                    2019080501 ; serial
                    21600 ; refresh
                    3600 ; retry
                    604800 ; expiry
                    60 ; minimum ttl
                )
    
        ; Nameservers
    
        9.168.192.in-addr.arpa.    120 IN NS dns.zxjr.com.
    
        ; Mailservers
    
    
        ; Reverse DNS Records (PTR)
    
        28    60 IN PTR zx28.zxjr.com.
        29    60 IN PTR zx29.zxjr.com.
    
        ; CNAME
    
        ; HOST RECORDS

    检查资源记录解析是否生效


    dig -t A zx28.zxjr.com @192.168.9.28 +short
        192.168.9.28
    dig -t A zx29.zxjr.com @192.168.9.28 +short
        192.168.9.29
    dig -x 192.168.9.28 @192.168.9.28 +short
        zx28.zxjr.com.

    使用NamedManager管理zone文件后主从不同步


    主从不同步初步排查

    检查主从服务器上zone文件中的 serial 值, 从服务器上的serial大于主服务器上的值时, 主从不同步;

    将主服务器上的 serial 值改成大于 从服务器上的;

    此处通过namedmanager管理后出现主从不同步

    // namedmanager管理named后, 在namedmanager配置文件 config-bind.php 中指定的 zone文件的路径
    
    # vim /etc/namedmanager/config-bind.php
    ... ...
    $config["bind"]["config"]       = "/etc/named.namedmanager.conf";   // configuration file to write bind config too
    ... ...
    
    // 配置named.namedmanager.conf 文件, 
    # vim /etc/named.namedmanager.conf
    ... ...
    zone "zxjr.com" IN {
        type master;
        file "zxjr.com.zone";
        allow-update { none; };
    };
    zone "9.168.192.in-addr.arpa" IN {
        type master;
        file "9.168.192.in-addr.arpa.zone";
        allow-update { none; };
    };
    
    // 在namd.conf中添加上面配置文件
    # vim /etc/named.conf
    ... ...
    include "/etc/named.namedmanager.conf";
    ... ...
    
    // 检测dns配置文件报 zone 冲突
    /etc/named.namedmanager.conf:6: zone 'zxjr.com': already exists previous definition: /etc/named.rfc191
    /etc/named.namedmanager.conf:8: writeable file 'zxjr.com.zone': already in use: /etc/named.rfc1912.zon
    /etc/named.namedmanager.conf:11: zone '9.168.192.in-addr.arpa': already exists previous definition: /ezones:49
    /etc/named.namedmanager.conf:13: writeable file '9.168.192.in-addr.arpa.zone': already in use: /etc/na:51
    
    // 以前的配置中手动在 named.rfc1912.zone 中添加过 zxjr.com 和 9.168.192.in-addr.arpa, 所以此处处理方法有两个
    // 方法一: 不需要上面修改 named.conf 文件, 添加 named.namedmanager.conf 行, 而是修改 config-bind.php 文件中, 指定zone文件到/etc/named.rfc1912.zone; 重启supervisord和named
    // 方法二: 将/etc/named.rfc1912.conf 的 zxjr.com 和 9.168.192.in-addr.arpa 域删掉, 重启named

    配置客户端DNS


    vim /etc/resolv.conf
        # Generated by NetworkManager
        search tian.com
        nameserver 192.168.9.28
        nameserver 192.168.9.29

    用户系统及操作审计功能


    用户系统

     可以创建不同的管理员用户

    User Management 选项卡

    该页面下可以查看所有的系统用户, 并可以进行用户管理

    Create a new User Account

    User Details

    User Password

    • password *

      123456

    • password_confirm *

      123456

    Save Changes

    User Permissions 用户权限

      • disabled

        勾上,用户不生效
        不勾,用户生效
        这里不勾

      • admin(超级管理员)

        勾上,可以创建用户管理用户权限
        不勾,不可以创建用户管理用户权限
        这里不勾

      • namedadmins(管理员)

        勾上,dns管理员,可以管理zone和资源记录
        不勾,不可以管理zone和资源记录
        这里勾选

    Save Changes

    delete

    删除用户,略

    details

    这里可以配置用户的基本信息

    User Password

    超级管理员可以帮助用户修改密码

    User Options

    • option_shrink_tableoptions

      Automatically hide the options table when using defaults
      默认勾选,高级查询框显示与否

    • option_debug

      Enable debug logging - this will impact performance a bit but will show a full trail of all functions and SQL queries made
      默认不勾,勾选上可以在页面显示debug日志,建议部署时使用,投产后关闭

    • option_concurrent_logins

      Permit this user to make multiple simultaneous logins
      默认不勾,允许该用户在多点同时登录,应该严格禁止(审计)

    使用用户tian登录

    可以进行DNS服务管理,但无法管理用户

    审计

    使用 tian 用户在页面增加一条资源记录

    Changelog选项卡

      可以看到所有用户的操作记录,实现审计功能,做到操作可溯

    Tips

    • 生产上强烈建议新生成一个超级管理员用户并将setup用户删除!
    • 超级管理员用户应只有一个且不要轻易外泄,可以创建多个管理员账户。(一般根据业务而定,每个管理员负责一个子域)
    • 管理员账户创建好后,应由各人自行登录修改密码。
    • 超级管理员用户密码的复杂度要足够高,定期更换超级管理员用户密码。
  • 相关阅读:
    苹果开发者账号证书、授权配置文件设置流程
    JQuery 总结(1) 选择器的使用
    PC和移动端自动识别
    前端获取ip的接口
    AJAX 跨域解决办法
    linux
    复制剪切板实现
    css animation 制作打开动画效果
    弹出层播放视频
    盛世龙图项目总结
  • 原文地址:https://www.cnblogs.com/haorong/p/11289655.html
Copyright © 2020-2023  润新知