Slave DNS Server Install¶
The instruction vary for different OSes. The instructions for the following OSes can be found in this document.
-
CentOS 6 x86_64
-
CentOS 7 x86_64
CentOS 6 x86_64:
1. Enable epel repository using the instruction from here: http://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
2. Install PowerDNS and MySQL
yum -y install mysql mysql-server pdns pdns-backend-mysql
chkconfig --levels 235 mysqld on
chkconfig --levels 235 pdns on
service mysqld start
mysqladmin -u root password MYNEWPASSWORD
4. Download the PowerDNS SQL and import it
wget http://files.soluslabs.com/solusvm/pdns/pdns.sql
mysql --user=root --password=MYNEWPASSWORD < pdns.sql
/etc/pdns/pdns.conf
with your database details:
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=root
gmysql-password=MYNEWPASSWORD
gmysql-dbname=powerdns
mysql -u root -p
7. Start PowerDNS:
/etc/init.d/pdns start
/etc/init.d/pdns monitor
CentOS 7 x86_64:
1. Enable epel repository using the instruction from here: http://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
2. Install PowerDNS and MySQL
yum -y install mariadb mariadb-server pdns pdns-backend-mysql
systemctl enable mariadb
systemctl enable pdns
systemctl start mariadb
mysqladmin -u root password MYNEWPASSWORD
Create a file
pdns.sql
with the below content and import it:
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,
solusvm_cid int(11) DEFAULT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (
id INT 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 --user=root --password=MYNEWPASSWORD -e"create database powerdns"
mysql --user=root --password=MYNEWPASSWORD powerdns < pdns.sql
/etc/pdns/pdns.conf
with your database details:
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=root
gmysql-password=MYNEWPASSWORD
gmysql-dbname=powerdns
mysql -u root -p
7. Start PowerDNS:
systemctl start pdns