本文共 4818 字,大约阅读时间需要 16 分钟。
PowerDNS 是一个跨平台的开源DNS服务组件,它是高性能的域名服务器,除了支持普通的BIND配置文件,PowerDNS还可以从MySQL,Oracle,PostgreSQL等的数据库读取数据。PowerDNS安装了Poweradmin(基于php实现),能实现Web管理DNS记录,非常方便。
PowerDNS官网:
PowerDNS文档:Poweradmin官网:准备一台主机centOS 7.5 (192.168.21.104)
配 EPEL 源
#vim epel.reponame=epel repobaseurl=gpgcheck=0enabled=1安装包:基于EPEL源
#yum -y install pdns pdns-backend-mysql#rpm -q mariadb-server
#systemctl start mariadb#systemctl enable mariadb#mysql利用下面两条sql语句和链接创建pdsql.sql的脚本:准备mariadb中的数据库,表和用户
create database powerdns;grant all on powerdns.* to 'powerdns'@'localhost' identified by 'magedu';vim pdsql.sql //创建pdsql.sql, 添加下面内容
create database powerdns;
grant all on powerdns.* to 'powerdns'@'localhost' identified by 'magedu';use powerdns
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);
#mysql < pdns.sql
配置PowerDNS使用mariadb作为后台数据存储
#vim /etc/pdns/pdns.conf //查找到包含launch= 的行,修改并添加下面的内容launch=bind //删除此行launch=gmysqlgmysql-host=localhostgmysql-port=3306gmysql-dbname=powerdnsgmysql-user=powerdnsgmysql-password=magedu启动pdns服务前,确保53端口未被占用
#ss -ntl#lsof -i:53 //显示所有打开53端口的进程#kill -9 1382#systemctl start pdns
#systemctl enable pdns安装httpd和php相关包
#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-mhash gettext#systemctl start httpd
#systemctl enable httpd#cd /var/www/html
#wget #tar xvf poweradmin-2.1.7.tgz #mv poweradmin-2.1.7 pdns浏览器输入下面地址,按提示进一步配置:
操作进行到第5步:
登陆mariadb,执行以下语句:MariaDB [powerdns]> GRANT SELECT, INSERT, UPDATE, DELETE
-> ON powerdns.*-> TO 'powerdnsadmin'@'localhost'-> IDENTIFIED BY 'centos';Query OK, 0 rows affected (0.00 sec)操作进行到第6步:
#cd /var/www/html/pdns#vim inc/config.inc.php<?php$db_host = 'localhost';$db_user = 'powerdnsadmin';$db_pass = 'centos';$db_name = 'powerdns';$db_type = 'mysql';$db_layer = 'PDO';$session_key = 'lPubca)P32J)*9b5JTX0MiqE^erq948PI[0[Zt=0%x)Oc0';
$iface_lang = 'en_EN';
$dns_hostmaster = 'powerdnsserver';
$dns_ns1 = '192.168.21.104';$dns_ns2 = '';操作进行到第7步,配置完成:
#rm -rf /var/www/html/pdns/install/登陆powerdns:
添加域:b.com
给b.com这个域添加一条记录: www.b.com 8.8.8.8
在DNSserver上测试:
[root@centos7 pdns]#dig www.b.com @192.168.21.104; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.b.com @192.168.21.104
;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12657;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; WARNING: recursion requested but not available;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1680;; QUESTION SECTION:;www.b.com. IN A;; ANSWER SECTION:
www.b.com. 86400 IN A 8.8.8.8;; Query time: 2 msec
;; SERVER: 192.168.21.104#53(192.168.21.104);; WHEN: Tue Mar 05 15:19:35 CST 2019;; MSG SIZE rcvd: 54转载于:https://blog.51cto.com/8845692/2359752