实现web管理的powerdns

nan00zzu 2020-06-07

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中的数据库,表和用户

实现web管理的powerdns

 进入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);

实现web管理的powerdns

 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

实现web管理的powerdns

 然后重启pdns服务:systemctl  restart  pdns

5、下载poweradmin程序,并解压到相应目录

下载地址:https://sourceforge.net/projects/poweradmin/files/

实现web管理的powerdns

 6、在浏览器输入网址进行访问,http://192.168.44.7/poweradmin,它会提示跳转到安装界面,点击其中的install,或者直接输入http://192.168.44.7/poweradmin/install/,会进入安装界面

实现web管理的powerdns

 实现web管理的powerdns

 第一步默认选择英语,第二步跳过,第三步填写数据库的基本信息

实现web管理的powerdns

 第四步是创建一个用户,以及指定服务器

实现web管理的powerdns

 第5步,按照网页的显示,在B机器上的数据库进行授权,代码就是网页上的代码。但是要注意,这里的授权机器不仅仅是27,而是两台机器。所以应该写成192.168.44.%,不然到时候访问的时候会提示,权限拒绝不能连接数据库

实现web管理的powerdns

实现web管理的powerdns

 第6步,按下面页面说明,创建config.in.php文件内容   vim /var/www/html/poweradmin/inc/config.inc.php,代码就是网页的代码

实现web管理的powerdns

 实现web管理的powerdns

 第7步,最后一步,删除安装目录

安装完毕后,删除install目录    rm -rf /var/www/html/poweradmin/install/

7、重新访问192.168.44.7/poweradmin

实现web管理的powerdns

 实现web管理的powerdns

 

 

相关推荐