{{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