环境部署
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 // 三种配置方式: 用宏定义 $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记录对应 ***
检查反解域配置及重启
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配置文件
// 在主配置文件添加以下两行 vim /etc/named.conf ... ... allow-transfer { 192.168.9.29; }; // 允许哪些主机进行区域传送 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工具和rndc远程管理DNS
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
rndc远程管理DNS
// 生成rndc-key rndc-confgen -r /dev/urandom # Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "eNjf69ZwruvBWhjVZ1Ttvg=="; }; options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953; }; # End of rndc.conf # Use with the following in named.conf, adjusting the allow list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "eNjf69ZwruvBWhjVZ1Ttvg=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf // 把 rndc-key 和 controls 配置到主DNS的主配置文件中 vim /etc/named.conf options { ... ... }; key "rndc-key" { algorithm hmac-md5; secret "eNjf69ZwruvBWhjVZ1Ttvg=="; }; controls { inet 192.168.9.28 port 953 allow { 192.168.9.28;192.168.9.29; } keys { "rndc-key"; }; }; // 这里配置acl, 限定好哪些主机可以使用 rndc 管理DNS服务; // 重启 bind 服务 systemctl restart named // 查看rndc的953 端口是否存在; ss -tnl |grep 953 LISTEN 0 128 192.168.9.28:953 *:* // 在远程管理主机上安装bind, 因为rndc命令在bind包里,所以需要, 此次直接在主DNS使用rndc // 在 rndc 进行远程管理的主机上, 需要配置 rndc.conf , 且rndc-key要与DNS服务器上的key一致; vim /etc/rndc.conf key "rndc-key" { algorithm hmac-md5; secret "eNjf69ZwruvBWhjVZ1Ttvg=="; }; options { default-key "rndc-key"; default-server 192.168.9.28; default-port 953; }; // 查询DNS服务状态( 可以取值做监控 ) rndc status version: 9.9.4-RedHat-9.9.4-74.el7_6.2 <id:8f9657aa> CPUs found: 2 worker threads: 2 UDP listeners per interface: 2 number of zones: 103 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 1/100 server is up and running // 修改域文件后 rndc freeze zxjr.com rndc thaw zxjr.com The zone reload and thaw was successful.
企业级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/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服务若是配置到本机,则可省略 // 查看 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
配置 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; 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.
配置客户端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用户删除!
- 超级管理员用户应只有一个且不要轻易外泄,可以创建多个管理员账户。(一般根据业务而定,每个管理员负责一个子域)
- 管理员账户创建好后,应由各人自行登录修改密码。
- 超级管理员用户密码的复杂度要足够高,定期更换超级管理员用户密码。