实现WEB管理的PowerDNS
作者:互联网
PowerDNS 是一个跨平台的开源DNS服务组件,它是高性能的域名服务器,除了支持普通的BIND配置文件,PowerDNS还可从MySQL,Oracle,PostgreSQL等的数据库读取数据。PowerDNS安装了Poweradmin(基于php实现),能实现Web管理DNS记录,非常方便
PowerDNS官网:https://www.powerdns.com/
PowerDNS文档:https://doc.powerdns.com/
Poweradmin官网:http://www.poweradmin.org/
一、安装所需要的包
yum install -y pdns pdns-backend-mysql
二、安装MySQL数据库(我这里把MySQL数据库分出来在其他电脑上做的)
yum install mariadb-server -y
三、在数据库服务器上创建数据库,并授权
create database powerdns;
grant all on powerdns.* to 'powerdns'@'172.16.8.%' identified by 'centos';
#创建一个数据库叫powerdns,创建一个用户也叫powerdns。授权通过172.16.8这个网段访问数据库powerdns,密码centos
四、创建powerdns数据库中的表,参看下面文档实现
https://doc.powerdns.com/md/authoritative/backend-generic-mysql/
mysql 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);
五、配置PowerDNS使用mariadb作为后台数据存储
vim /etc/pdns/pdns.conf
/launch #内容太多,直接搜索,英文输入法输入/ 后面是要搜索的内容 launch=bind #将这行替换成 launch=gmysql #意思是数据库是放在MySQL里的而不是bind那个文件里的
launch=gmysql #在这行后面添加下面的信息
gmysql-host=172.16.8.23
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=centos
#这个就是第三步创建的用户和密码
六、启动服务,并设置为开机启动
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-mcrypt php-mhash gettext
八、启动httpd服务,并设置为开机启动
systemctl start httpd systemctl enable httpd
九、下载poweradmin程序,并解压缩到相应目录
cd /var/www/html wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz tar xvf poweradmin-2.1.7.tgz mv poweradmin-2.1.7 poweradmin
十、直接通过网页打开会报错的,必须先走一遍安装
http://172.16.8.135/poweradmin/install/
1、选择语言,选择完之后点击Go to step 2,进入下一步
2、这一步是提示信息之类的,大概查看之后就可以进入下一步了
3、输入第三步上的用户名和密码,hostname是你自己的数据库的I地址,端口默认就是3306,database数据库的名称,你的数据库名是什么就是什么名字,这里的Poweradmin administrator password, 为Poweradmin设置管理员密码这个是后面用到的,自定义设置即可。
4、为Poweradmin创建一个受限用户,Username:PowerAdmin用户名,Password:上述用户的密码Hostmaster:当创建SOA记录指定默认主机管理员,Primary nameserver:主域名服务器,Secondary namesever:辅域名服务器
5、按照下面页面说明,在数据库中创建用户并授权
按照上面的提示在数据库中执行这条命令,因为我的服务器不在同一台机器上,所有我设置了172.16.8这个网段,其实区别不大,数据库如果在同一台机器上的话就用本机的IP地址即可
1 GRANT SELECT, INSERT, UPDATE, DELETE 2 ON powerdns.* 3 TO 'poweradmin'@'172.16.8.%' 4 IDENTIFIED BY 'centos';
6、按下面页面说明,创建config.in.php文件内容
vim /var/www/html/poweradmin/inc/config.inc.php
<?php $db_host = '172.16.8.23'; $db_user = 'poweradmin'; $db_pass = 'centos'; $db_name = 'powerdns'; $db_type = 'mysql'; $db_layer = 'PDO'; $session_key = '@Ap{P^eCoiHGPOwF-ru8@c2F3{2nHNCIsYP3Ypz!zUp1i*'; $iface_lang = 'en_EN'; $dns_hostmaster = 'dnsserver'; $dns_ns1 = '172.16.8.135'; $dns_ns2 = '';
7、到这已经安装完成了,他提示删除install
为什么要删除子目录呢,不删除子目录的话,别人万一在执行一次安装,所以你懂得。
rm -rf /var/www/html/poweradmin/install/
8、至此已经安装完成了,这一步是登录
登录http://powerdns服务器IP/poweradmin/ username:admin password:centos 参看第step 3
这里的语言倒是可以选择中文的
9、目前还没有主域,可以点击添加主域
10、输入主域的信息,点击添加,dnssec是安全的一项,这里我就不启用了,可启用也可以不启用
11、添加完成之后,点击绿色框里这行字,可以适当的做些修改了
点击添加记录
会弹出如下界面,如果有多条记录就可以在添加一遍,没有的话就点击lvzhengyuan.com
里面的界面如下,因为我上面添加了两条记录,可以点击垃圾桶删除一条记录
12、通过dig命令能解析IP地址则表示可以了
dig www.lvzhengyuan.com @172.16.8.135 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.8 <<>> www.lvzhengyuan.com @172.16.8.135 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62270 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.lvzhengyuan.com. IN A ;; ANSWER SECTION: www.lvzhengyuan.com. 86400 IN A 172.16.8.135 ;; Query time: 6 msec ;; SERVER: 172.16.8.135#53(172.16.8.135) ;; WHEN: Thu Apr 1 18:36:02 2021 ;; MSG SIZE rcvd: 53
至此就完成了。
####有这时间,还不如去修改命令行简单多了####
标签:PowerDNS,WEB,php,VARCHAR,实现,CREATE,INT,NULL,id 来源: https://www.cnblogs.com/alexlv/p/14609650.html