1.安装mariaDB
apt update apt install mariadb-server -y
2.创建数据库表与用户
mysql -u root -p CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'CHANGEME'; FLUSH PRIVILEGES; 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 UNSIGNED DEFAULT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; 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 CHARACTER SET 'latin1'; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX ordername ON records (ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB CHARACTER SET 'latin1'; 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) CHARACTER SET 'utf8' DEFAULT NULL, comment TEXT CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; 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 CHARACTER SET 'latin1'; 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 CHARACTER SET 'latin1'; 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 CHARACTER SET 'latin1'; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); ALTER table cryptokeys add column published BOOL DEFAULT 1 after active;
3.关闭可能回影响占用端口的系统应用
systemctl disable systemd-resolved systemctl stop systemd-resolved
4.开始安装后端
Debian 10:
echo "deb [arch=amd64] http://repo.powerdns.com/debian buster-auth-master main" | sudo tee /etc/apt/sources.list.d/pdns.list apt install curl wget apt-transport-https gnupg2 -y curl https://repo.powerdns.com/CBC8B383-pub.asc | sudo apt-key add - apt-get update apt-get install pdns-server pdns-backend-mysql echo ' # MySQL Configuration # Launch gmysql backend launch+=gmysql gmysql-host=localhost gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=CHANGEME gmysql-dnssec=yes ' > /etc/powerdns/pdns.d/pdns.local.gmysql.conf systemctl restart pdns systemctl enable pdns
5.关于主从的配置
master ip : 10.1.1.1 master domain:ns1.eqblog.com
slave ip : 10.1.1.2 slave domain:ns2.eqblog.com
master pdns.conf:
allow-axfr-ips=10.1.1.2/32 api=yes #用于开启weeb api api-key=CHANGEMEAPIKEY #用于开启weeb api daemon=yes guardian=yes include-dir=/etc/powerdns/pdns.d loglevel=7 master=yes #主从配置 slave=no #主从配置 webserver=yes #用于开启weeb api webserver-address=0.0.0.0 #用于开启weeb api webserver-allow-from=0.0.0.0/0 #用于开启weeb api xfr-cycle-interval=3 #4.5以上需要使用此选项
slave pdns.conf
allow-notify-from=10.1.1.1/32 autosecondary=yes #4.5以上需要使用此选项 daemon=yes disable-axfr=yes include-dir=/etc/powerdns/pdns.d loglevel=7 slave=yes slave-cycle-interval=3 #4.5以下需要使用此选项 xfr-cycle-interval=5 #4.5以上需要使用此选项
slave和master安装方式相同,只有pdns.conf不同与数据库需要插入新的表。
mysql -u root -p USE powerdns; insert into supermasters values ('10.1.1.1', 'ns2.eqblog.com', 'admin'); eixt; service pdns restart
至此你可以使用powerdns admin进行管理服务,添加域名选择master即可,注意域名需要增加相应的NS解析。
过来看看
xfr-cycle-interval=5 #4.5以上需要使用此选项
学习了