環境部署
| 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記錄的配置區,默認會生成一條
| Type | TTL | Name/Origin | Content | - |
|---|---|---|---|---|
| NS | 120 | host.com | dns-manager.od.com | - |
- Mailserver Configuration
略,暫不配置MX記錄
- Host Records Configuration
這里是配置重點,A記錄、CNAME記錄、TXT記錄等都在這個里配置
因為是從文件導入的域,默認會有記錄
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記錄的配置區,默認會生成一條
| Type | TTL | Name/Origin | Content | - |
|---|---|---|---|---|
| NS | 120 | 9.168.192.in-addr.arpa | dns.zxjr.com | - |
- Mailserver Configuration
略,暫不配置MX記錄
- Host Records Configuration
這里是配置重點,A記錄、CNAME記錄、TXT記錄等都在這個里配置
因為是從文件導入的域,默認會有記錄
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
- Username *
tian
- Real Name *
tianfei
- Contact Email *
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用戶刪除!
- 超級管理員用戶應只有一個且不要輕易外泄,可以創建多個管理員賬戶。(一般根據業務而定,每個管理員負責一個子域)
- 管理員賬戶創建好后,應由各人自行登錄修改密碼。
- 超級管理員用戶密碼的復雜度要足夠高,定期更換超級管理員用戶密碼。
