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
至此就完成了。
####有這時間,還不如去修改命令行簡單多了####