实现web管理的powerdns
1、powerdns
PowerDNS 是一个跨平台的开源DNS服务组件,它是高性能的域名服务器,除了支持普通的BIND配置文件,PowerDNS还可从MySQL,Oracle,PostgreSQL等的数据库读取数据。PowerDNS安装了Poweradmin(基于php实现),能实现Web管理DNS记录,非常方便
PowerDNS官网:https://www.powerdns.com/
2、powerdns的搭建
准备两台虚拟机,A机器:centos7(192.168.44.7 安装pdns pdns-backend-mysql httpd php之类相关的包) B机器:centos7(192.168.44.27 安装数据库mariadb)
A机器:yum install -y pdns pdns-backend-mysql
yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
B机器:yum install mariadb-server
启动pdns服务:systemctl start pdns
启动httpd服务:systemctl start httpd
启动数据库服务:systemctl start mariadb
3、准备mariadb中的数据库,表和用户
进入powerdns库,创建表,参考官方文档https://doc.powerdns.com/md/authoritative/backend-generic-mysql/中的default schema,直接复制下来,粘贴到数据库就可以,具体代码如下
CREATE TABLE domains ( id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id BIGINT AUTO_INCREMENT, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX recordorder ON records (domain_id, ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) NOT NULL, comment VARCHAR(64000) NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX comments_domain_id_idx ON comments (domain_id); CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
4、配置powerdns使用mariadb作为后台数据库
配置PowerDNS使用mariadb作为后台数据存储
vim /etc/pdns/pdns.conf,查找到包含launch= 的行,修改并添加下面的内容
launch=gmysql gmysql-host=192.168.44.27 gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=centos
然后重启pdns服务:systemctl restart pdns
5、下载poweradmin程序,并解压到相应目录
下载地址:https://sourceforge.net/projects/poweradmin/files/
6、在浏览器输入网址进行访问,http://192.168.44.7/poweradmin,它会提示跳转到安装界面,点击其中的install,或者直接输入http://192.168.44.7/poweradmin/install/,会进入安装界面
第一步默认选择英语,第二步跳过,第三步填写数据库的基本信息
第四步是创建一个用户,以及指定服务器
第5步,按照网页的显示,在B机器上的数据库进行授权,代码就是网页上的代码。但是要注意,这里的授权机器不仅仅是27,而是两台机器。所以应该写成192.168.44.%,不然到时候访问的时候会提示,权限拒绝不能连接数据库
第6步,按下面页面说明,创建config.in.php文件内容 vim /var/www/html/poweradmin/inc/config.inc.php,代码就是网页的代码
第7步,最后一步,删除安装目录
安装完毕后,删除install目录 rm -rf /var/www/html/poweradmin/install/
7、重新访问192.168.44.7/poweradmin