PowerDNS é um poderoso servidor DNS capaz de resolver vários domínios por segundo e possui integração com diversos bancos de dados como MySQL e PostgreSQL.
Como casos de sucesso com o mesmo é o que não falta no google, vamos deixar a introdução de lado e partir para configuração.
A configuração será realizada no Centos 6 utilizando uma base MySQL.
Lembrando que é necessário habilitar o repositório EPEL para obter pacote do powerdns, verifique no link como proceder para habilita-lo ou veja como no post anterior.
Após habilitar o repositório instale o powerdns e o mysql como root
yum install pdns pdns-backend-mysql mysql-server
Depois que a instalação dos pacotes for concluída, crie a base de dados que será utilizada pelo powerdns para armazenar os domínios e as demais configurações.
Acesse o mysql como root
mysql -u root -p
Crie a base powerdns ou utilize outro nome que preferir, mas é uma boa pratica utilizar o nome do serviço que irá utilizar a base.
mysql> create database powerdns; Query OK, 1 row affected (0.02 sec)
Dê as devidas permissões para a base
mysql> grant all privileges on powerdns.* to 'powerdnsadmin'@'localhost' identified by 'password_here';
Acesse a base criada
mysql> use powerdns;
Database changed
Agora crie as tabelas necessárias e alguns indexs sql para melhorar o acesso a base.
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));
mysql> 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));
mysql> create index records_name_index ON records(name);
mysql> create index nametype_index ON records(name,type);
mysql> 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);
mysql> quit;
Bye
Agora edite o arquivo de configuração do powerdns para configurar o acesso a base mysql
vi /etc/pdns/pdns.conf
E na sessão launch configure como o exemplo abaixo
#################################
# launch Which backends to launch and order to query them in
#
launch=gmysql
gmysql -host=localhost
gmysql -user=powerdnsadmin
gmysql -password=password_here
gmysql -dbname=powerdns
#################################
Após isso a configuração está concluída basta iniciar o serviço
service pdns start
A configuração do powerdns agora está concluída, agora para gerenciar o servidor dns vamos instalar o PowerAdmin uma interface web escrita em php que irá nos permitir adicionar domínios, ips e as respectivas entradas que desejarmos como MX, A, CNAME etc.
Instale os pacotes php necessários para o pleno funcionamento do poweradmin
yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear
php-xml php-xmlrpc php-mbstring php-mcrypt
Agora assumindo que você tem um servidor web, como o apache ou nginx configurado em seu servidor, você deve baixar o poweradmin no diretório root do domínio que você pretende acessar a interface do powerdns.
Por exemplo digamos que você tenha o apache configurado e com um domínio com o DocumentRoot apontando para /var/www/html/dominio, será nesse diretório em que vamos instalar o poweradmin. Como exemplo estou usando o apache com o vhost padrão então vou utilizar o diretório /var/www/html
Acesse o diretório do seu DocumentRoot
cd /var/www/html/
Baixe o poweradmin
wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz
Descompacte o arquivo
tar xzvf poweradmin-2.1.6.tgz
Apague o arquivo e renomeei o diretório
rm -rf poweradmin-2.1.6.tgz
mv poweradmin-2.1.6 poweradmin
Agora podemos concluir a instalação do poweradmin acessando o mesmo através do domínio configurado, seudominio.com.br/poweradmin/install
A configuração é bem simples, simplesmente adicionamos o usuário e senha criados para nossa base de dados mysql conforme a imagem abaixo
Preste atenção na ultima opção, pois nela será criada a senha para o usuáio admin do poweradmin.
Já na próxima etapa, será criado um usuário padrão (não tem todos os acessos) para o poweradmin
Na etapa seguinte o poweradmin pede para executarmos uma query no mysql para garantir acesso ao usuário, porém não é necessário fazer isso pois já o fizemos anteriormente, caso ao final da instalação o poweradmin não funcione, execute esta etapa.
Na etapa 6, devemos criar o arquivo config.inc.php com o conteúdo informado
Crie o arquivo mencionado dentro do diretório poweradmin
vi /var/www/html/poweradmin/config.inc.php
Adicione o conteúdo mencionado na etapa 6 , e modifique o usuário e senha para o usuário que criamos anteriormente
$db_host = 'localhost';
$db_user = 'powerdnsadmin';
$db_pass = 'password_here';
$db_name = 'powerdns';
$db_port = '3306';
$db_type = 'mysql';
$db_layer = 'MDB2';
$session_key = '}vtkJufCa{H8sinz0Gm0!Je=C)7#qJ@n}912(wk(#J)43-';
$iface_lang = 'en_EN';
$dns_hostmaster = 'sourcecode.net.br';
$dns_ns1 = 'ns1.sourcecode.net.br';
$dns_ns2 = 'ns2.sourcecode.net.br';
Após a finalização da instalação devemos apagar a pasta install do diretório poweradmin
rm -rf /var/www/html/poweradmin/install
Agora basta acessar seudominio.com.br/poweradmin e entrar com o usuário admin e a senha criada para o mesmo na etapa 3.
Depois que estiver logado, poderá criar, alterar e gerenciar completamente seu servidor dns
Qualquer dúvida verifique a documentação do poweradmin.
Caso queira que o powerdns e o mysql inciem junto com o sistema execute os comandos abaixo
chkconfig pdns on
chkconfig mysqld on
Qualquer dúvida ou sugestão deixe um comentário =)!