{{tag>[centos powerdns]}}
=====PowerDNS Recursor and Authoritative Server on one server=====
* OS: CentOS 6.5
* EPEL repository
* Backend: MySQL
====Install PowerDNS and backend====
yum install -y bind-utils pdns pdns-recursor pdns-backend-mysql mysql-server
Start at boot:
chkconfig mysqld on
chkconfig pdns on
chkconfig pdns-recursor on
Post configure MySQL:
service mysqld start
/usr/bin/mysql_secure_installation
====Create database====
mysqladmin -u root -p create powerdns
mysql -u root -p
create user 'powerdns'@'localhost' identified by 'password';
grant all privileges on powerdns.* to 'powerdns'@'localhost';
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 DEFAULT NULL,
account VARCHAR(40) 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,
primary key(id)
) Engine=InnoDB;
CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
create table supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
) Engine=InnoDB;
====Configure MySQL binlog====
Add the binlog_format=ROW line to **/etc/my.cnf**. [mysqld]
binlog_format=ROW
====Configure PowerDNS====
/etc/pdns/pdns.conf
allow-axfr-ips=
allow-recursion=
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=
gmysql-password=
gmysql-dbname=powerdns
local-address=
local-port=53
master=yes
recursor=127.0.0.1:5353
setgid=pdns
setuid=pdns
webserver=yes
webserver-address=
webserver-password=
webserver-port=8081
===Start PowerDNS===
Test:
service pdns monitor
Start:
service pdns start
====Configure recursor====
/etc/pdns-recursor/recursor.conf
setuid=pdns-recursor
setgid=pdns-recursor
allow-from=127.0.0.0/8
local-address=127.0.0.1
local-port=5353
===Start recursor===
service pdns-recursor start
===Test Recursor===
host ping.xs4all.nl 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
ping.xs4all.nl has address 194.109.6.8
ping.xs4all.nl has IPv6 address 2001:888:0:25:194:109:21:66
====Configure iptables====
* Open port tcp/8081 for PowerDNS webstats
* Open port tcp/53 and udp/53 for DNS traffic