PowerDNS no Centos

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 =)!

Deixe um comentário