欢迎加入王导的VIP学习qq群:==>932194668<==
系统环境
1 | #cat /etc/redhat-release |
安装部署namedmanager
准备rpm包
https://repos.jethrocarr.com/pub/jethrocarr/linux/centos/7/jethrocarr-custom/x86_64/
下载最新版
1 | [root@hdss7-11 opt]# ll |
安装
1 | [root@hdss7-11 opt]# yum localinstall namedmanager-* -y |
先配mysql
启动mysql
1 | [root@hdss7-11 mysql]# systemctl start mariadb.service |
开机自启动
1 | [root@hdss7-11 ~]# systemctl enable mariadb |
配mysql的root密码
1 | [root@hdss7-11 mysql]# mysqladmin -uroot password 123456 |
导入namedmanager的数据库脚本
1 | [root@hdss7-11 ~]# cd /usr/share/namedmanager/resources/ |
配置namedmanager
config.php,增加一条配置
1 | $_SERVER['HTTPS'] = "TRUE"; |
config-bind.php,修改以下三条配置
1 | $config["api_url"] = "http://dns-manager.od.com/namedmanager"; // Application Install Location |
php.ini,修改一条配置
1 | ; How many GET/POST/COOKIE input variables may be accepted |
绑host(临时)
1 | 10.4.7.11 dns-manager.od.com |
配apache
1 | Listen 10.4.7.11:8080 |
配nginx
1 | server { |
启动apache和nginx
启动apache
1
2
3[root@hdss7-11 ~]# systemctl start httpd
[root@hdss7-11 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.启动nginx
1
2
3
4[root@hdss7-11 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@hdss7-11 ~]# nginx
访问http://dns-manager.od.com,看看页面是否正常
继续改namedmanager的配置
改namedmanager_bind_configwriter.php
1 | if (flock($fh_lock, LOCK_EX )) |
启动namedmanager_logpush.rcsysinit
加执行权限
1 | [root@hdss7-11 resources]# chmod u+x namedmanager_logpush.rcsysinit |
启动该脚本
1 | [root@hdss7-11 resources]# sh namedmanager_logpush.rcsysinit start |
检查是否启动
1 | [root@hdss7-11 resources]# ps -ef|grep php|egrep -v grep |
用supervisor管理起来
这个脚本非常重要,是整个namedmanager软件的核心,所以要保证它一直在后台启动,这里我们用supervisor
这个软件把它管理起来
先安装supervisor软件
1 | [root@hdss7-11 resources]# yum install supervisor -y |
创建脚本启动的配置文件
1 | [program:namedmanager_logpush] |
启动supservisord服务
1 | [root@hdss7-11 resources]# systemctl start supervisord |
开机自启
1 | [root@hdss7-11 resources]# systemctl enable supervisord |
查看脚本启动情况
1 | [root@hdss7-11 resources]# supervisorctl status |
这样脚本就可以保证高可用性了
检查日志
1 | [root@hdss7-11 resources]# tail -fn 200 /var/log/namedmanager_logpush |
有报错,所以需要继续配置
改inc_soap_api.php
1 | preg_match("/^http:\/\/(\S*?)[:0-9]*\//", $GLOBALS["config"]["api_url"], $matches); |
重启namedmanager_logpush.rcsysinit
如果已经用supervisor
软件管理起来了,只需要kill掉脚本进程即可
1 | [root@hdss7-11 resources]# ps -ef|grep -v grep|grep php|awk '{print $2}'|xargs kill -9 |
否则需要手动重启脚本
1 | [root@hdss7-11 resources]# sh namedmanager_logpush.rcsysinit restart |
配置BIND9
先配rndc
rndc.key
1 | [root@hdss7-11 ~]# cat /etc/rndc.key |
如果没有,使用如下命令生成rndc.key
1 | [root@hdss7-11 ~]# rndc-confgen -r /dev/urandom |
配rndc.conf
1 | key "rndc-key" { |
删除rndc.key
1 | [root@hdss7-11 ~]# rm -f /etc/rndc.key |
BIND9主配置文件
1 | options { |
改named.namedmanager.conf文件属性
1 | [root@hdss7-11 named]# chown apache.apache /etc/named.namedmanager.conf |
检查配置并启动BIND9
检查配置
1 | [root@hdss7-11 ~]# named-checkconf |
启动BIND9
1 | [root@hdss7-11 ~]# systemctl start named |
开机自启动
1 | [root@hdss7-11 ~]# systemctl enable named |
检查启动情况
1 | [root@hdss7-11 ~]# netstat -luntp|grep 53 |
配置NamedManager页面
浏览器打开http://dns-manager.od.com(提前绑好host),用户名/密码:setup/setup123
配置Configuration选项卡
Zone Configuration Defaults
- DEFAULT_HOSTMASTER
- DEFAULT_TTL_SOA
86400
- DEFAULT_TTL_NS
120
- DEFAULT_TTL_MX
60
- DEFAULT_TTL_OTHER
60
API Configuration
- ADMIN_API_KEY
verycloud
Date and Time Configuration
- DATEFORMAT
yyyy-mm-dd
- TIMEZONE_DEFAULT
Asia/Shanghai
Save Changes
配置New Servers选项卡
Add NewServer
Server Details
- Name Server FQDN *
dns-manager.od.com
注意:这里一定要填config-bind.php
里对应$config["api_server_name"]
项配置的值 - Description
dns server for od.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/Zone
两种方式
- 手动添加域
- 自动导入域
Add Domain(手动添加)
Domain Details
- Domain Type *
Standard Domain
Reverse Domain (IPv4)
Reverse Domain (IPv6)
根据实际情况选择,这里选择Standard Domain(正解域) - Domain Name *
od.com
- Description
od.com domain
Domain Server Groups
注意:一定要勾选域服务器组
default – Default Nameserver Group
Start of Authority Record
- Email Administrator Address *
Email Administrator Address *
- Domain Serial *
2018121601
- 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
选择文件host.com.txt
导入一个正解域
upload,选择文件
附1:host.com.txt
1 | $ORIGIN . |
注意:这里可以不用给NS记录和对应的A记录了,会默认生成
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:7.4.10.in-addr.arpa.txt
1 | $TTL 600 ; 10 minutes |
注意:这里可以不用给NS记录和对应的A记录了,会默认生成
Save Changes
点保存进入下一个配置页面
Domain Details
注意:
Domain Type *
应为Reverse Domain (IPv4)
IPv4 Network Address *
应为10.4.7.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(od.com)
配置页面
- Domain Details
Domain od.com selected for adjustment
- Nameserver Configuration
这里是配置NS记录的配置区,默认会生成一条
Type | TTL | Name/Origin | Content | - |
---|---|---|---|---|
NS | 120 | od.com | dns-manager.od.com | - |
- Mailserver Configuration
略,暂不配置MX记录
- Host Records Configuration
这里是配置重点,A记录、CNAME记录、TXT记录等都在这个里配置
这里增加两条A记录解析,增加一条CNAME解析
Type | TTL | Name | Content | ReversePTR | - |
---|---|---|---|---|---|
A | 60 | dns-manager | 10.4.7.11 | no | delete |
A | 60 | www | 10.4.7.11 | no | delete |
CNAME | 60 | eshop | www.od.com | no | delete |
Save Changes
domain record(host.com)
配置页面
- Domain Details
Domain host.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记录等都在这个里配置
因为是从文件导入的域,默认会有记录
Type | TTL | Name | Content | ReversePTR | - |
---|---|---|---|---|---|
A | 60 | HDSS7-11 | 10.4.7.11 | √ | delete |
A | 60 | HDSS7-12 | 10.4.7.12 | √ | delete |
Save Changes
domain record(7.4.10.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 | 7.4.10.in-addr.arpa | dns-manager.od.com | - |
- Mailserver Configuration
略,暂不配置MX记录
- Host Records Configuration
这里是配置重点,A记录、CNAME记录、TXT记录等都在这个里配置
因为是从文件导入的域,默认会有记录
Type | TTL | Name | Content | - |
---|---|---|---|---|
PTR | 60 | 11 | HDSS7-11.host.com | delete |
PTR | 60 | 12 | HDSS7-12.host.com | delete |
Save Changes
返回Name Servers选项卡
查看页面DNS服务器状态
- Logging Status
status_synced
- Zonefile Status
status_synced
全部变绿且为status_synced
即为正常
查看服务器上配置文件(都是由namedmanager服务自动生成的)
named.namedmanager.conf
1 | // |
这里生成了三个zone,两个正解域,一个反解域,依次检查三个域的区域数据库文件:
od.com.zone
1 | $ORIGIN od.com. |
host.com.zone
1 | $ORIGIN host.com. |
7.4.10.in-addr.arpa.zone
1 | $ORIGIN 7.4.10.in-addr.arpa. |
检查资源记录解析是否生效
1 | # dig -t A www.od.com @10.4.7.11 +short |
验证页面增、删、改是否均生效
注意:
- 增、删、改资源记录时,对应域的SOA记录的serial序列号会自动滚动,非常方便
- 这里在页面上操作资源记录,会先写mysql,再由php脚本定期刷到磁盘文件上,所以大概需要1分钟的时间生效
- 在维护主机域时,添加正解记录,并勾选后面的reverse选项,将同时生成一条反解记录,简化了操作
- 由于服务器上的区域数据库文件是由php进程定期更新的(根据mysql数据库里的数据),所以手动在服务器上修改资源记录是无法生效的,应该严格禁止
配置DNS主辅同步
略
配置客户端的DNS服务器
1 | # Generated by NetworkManager |
把所有客户端绑定的临时hosts删除
1 | #10.4.7.11 dns-manager.od.com |
用户系统及操作审计功能
用户系统
可以创建不同的管理员用户
User Management选项卡
该页面下可以查看所有的系统用户,并可以进行用户管理
Create a new User Account 增加用户
User Details
- Username *
wangdao
- Real Name *
StanleyWang
- 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
默认不勾,允许该用户在多点同时登录,应该严格禁止(审计)
使用wangdao用户登录
可以进行DNS服务管理,但无法管理用户
审计
使用wangdao用户在页面增加一条资源记录
操作过程略
Changelog选项卡
可以看到所有用户的操作记录,实现审计功能,做到操作可溯
Tips
- 生产上强烈建议新生成一个超级管理员用户并将setup用户删除!
- 超级管理员用户应只有一个且不要轻易外泄,可以创建多个管理员账户。(一般根据业务而定,每个管理员负责一个子域)
- 管理员账户创建好后,应由各人自行登录修改密码。
- 超级管理员用户密码的复杂度要足够高,定期更换超级管理员用户密码。