實現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

至此就完成了。

####有這時間,還不如去修改命令行簡單多了####

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM