CentOS: PowerDNS

Решил попробовать в качестве dns сервера – PowerDNS (на базе CentOS). Установку CentOS описывать не буду.

Для того, чтобы поставить PowerDNS на CentOS 6 добавляем репозитеории REMI and EPEL:

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Вместо mysql ставим mariadb – для этого создаем файл с описанием репозитария и ставим mariadb, как написано здесь:

файл /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos5-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

# rpm -e --nodeps mysql-libs
# yum install MariaDB-server MariaDB-client

Ставим сам powerdns

yum -y install php php-mcrypt php-pdo php-mysql pdns pdns-backend-mysql httpd

Запускаем httpd и ставим в автозапуск

# service httpd start
# chkconfig httpd on

Запускаем mariadb и ставим в автозапуск, делаем первичную настройку, создаем базу powerdns, создаем пользователя powerdns и даем ему права на базу powerdns

# service mysql start
# chkconfig mysql on
# mysql_secure_installation
# mysql -p
MariaDB [(none)]> CREATE DATABASE powerdns;
MariaDB [(none)]> CREATE USER 'powerdns'@'localhost' identified by 'password';
MariaDB [(none)]> GRANT all privileges ON powerdns.* TO 'powerdns'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

В базе 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)
);

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(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

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
);

Скачиваем и настраиваев PowerAdmin. И переносим в папку по умолчанию apache

# wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz
# tar xvfz poweradmin-2.1.6.tgz
# cd poweradmin-2.1.6/inc
# mv config-me.inc.php config.inc.php
# vi config-me.inc.php

файл config-me.inc.php - правим строки
$session_key            = 'session_key';
$timezone               = 'UTC';

# mkdir /var/www/html/pdns
# mv /root/poweradmin-2.1.6/* /var/www/html/pdns/

Правим конфигурацию powerdns и запускаем:

файл /etc/pdns/pdns.conf - и добавляем строки
launch=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=password
gmysql-dbname=powerdns

# service pdns restart

Заходим с помощью веб браузера на http://srv_ip/pdns/install/ и проходим начальную настройку.
После этого удаляем папку install – rm -rf /var/www/html/install и заходим http://srv_ip/pdns с логином admin и паролем, который вы задали при начальной настройки.
Теперь можно из веб интерфейса создавать и править днс зоны.