DNS Robusto e fácil com PowerDNS e MySQL
Autor: Wagner Assis | Publicado: 2008-06-16T19:24:00-03:00

O PowerDNS é um dos muitos softwares de DNS, ele é muito poderoso, pode fazer milhares de resoluções por segundo, e o que mais me chamou atenção, pode-se comunicar com vários backends, includindo MySQL, PostgreSQL, LDAP, Oracle e outros.Para se ter uma idéia, existem grandes implementações feitas com ele, incluindo register.com e tucows.com, e, segundo o site oficial, existem aproximadamente 4000 servidores em serviços secundários ativos na internet, que servem aproximadamente 10 milhões de zonas e um imenso núumero de domínios. Testes no primeiro nível do domínios .EU demonstraram que o PowerDNs pode prover 50.000 resoluções por segundo num único servidor, com um hardware simples. No GOOGLE encontrei relatos de testes feitos inclusive pelo registro.br para utilização do mesmo.A única desvantagem evidente é que o PowerDNS ainda não prevê uma implementação completa do DNSSEC. (O que pra muitos é irrelevante, visto que poucos são aqueles que implementaram DNSSEC em seus servidores)Utilizar o PowerDNS inclusive como cache de DNS é uma ótima pedida devido a sua excelente performance.Já tenho usado o PowerDNS há pelo menos 2 anos como servidor secundário e a pouco menos de 1 ano como servidor primário. Utilizo-o bastante também como caching de DNS, ele é extremamente rápido.Estarei descrevendo abaixo os passos para instalação do PowerDNS no Debian, mas com um pouco de conhecimento pode ser instalado em qualquer distribuição através do código fonte.---------------------------------------------------------------------------1º Ambiente - Somente recursão de nomes (DNS cache, caching)#apt-get install pdns-recursorEdite o arquivo /etc/powerdns/recursor.conf:Descomente a linha allow-from e insira os endereços ou classes ips autorizadas a fazer a recursão de nomes.allow-from=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10Para evitar que vejam a exibição da versão do PowerDNS.version-string=DENIEDEdite o arquivo /etc/resolv.conf e altere a linha nameserver para 127.0.0.1 (Isso fará com que a pesquisa de DNS seja feita no servidor local)Pronto, você já está apto a fazer consultas de dns através do seu dns caching.---------------------------------------------------------------------------2º Ambiente - Servidor de nomes e recursãoConsiderando que o mysql já está instalado no servidor.Instale o PowerDNS com suporte a Mysql#apt-get install pdns-backend-mysqlEntre no MySQL e execute os comandos abaixo para criar o usuário, senha, banco e setar as permissões pertinentes.#mysql#------- Recortar AquiCREATE USER 'pdns'@ '%' IDENTIFIED BY 'sua-senha';GRANT USAGE ON * . * TO 'pdns'@ '%' IDENTIFIED BY 'sua-senha' WITH \MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 \ MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE DATABASE `pdns` ;GRANT ALL PRIVILEGES ON `pdns` . * TO 'pdns'@ '%';#-------Agora vamos criar as tabelas conforme o modelo do PowerDNS.#mysql -u pdns -psua-senha -D pdns < /usr/share/doc/pdns-backend-mysql/mysql.sql Então vamos copiar o arquivo padrão de configurações do backend para o diretório de configuração.#cp /usr/share/doc/pdns-backend-mysql/examples/pdns.local.gmysql /etc/powerdns/pdns.d/Edite o arquivo /etc/powerdns/pdns.d/pdns.local.gmysqlAltere o arquivo conforme suas preferencias.gmysql-host=localhostgmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsgmysql-password=sua-senhaComo seu servidor de DNS também fará a recursão de nomes, é importante limitar a recursividade do seu servidor de nomes aos IP's de sua(s) rede(s), isso impede o conhecido OPEN DNS.Edite o arquivo /etc/powerdns/pdns.conf.Descomente a linha allow-recursion e insira os endereços dos quais os servidor de nomes vai servir.allow-recursion=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10Descomente a linha launch e insira os backends a serem carregadoslaunch=bind,gmysqlSe você irá replicar as Zonas, precisa inserir os endereços ips dos servidores dos quais irá fazer transferência de Zonas.allow-axfr-ips=200.200.200.200(onde 200.200.200.200 é o endereço ip do seu servidor de dns que será replicado)Precisa também permitir as transferências de zonas.disable-axfr=noAltere a porta do recursor para uma porta diferente do servidor de nomes, para isso edite o arquivo /etc/powerdns/recursor.conflocal-port=2525Agora vamos inserir o recursor no servidor de nomes, para quem ele faça recursão caso não encontre no servidor de nomes local. Para isso edite o arquivo edite o arquivo /etc/powerdns/pdns.conf.recursor=127.0.0.1:2525É isso, seu servidor de nomes já está ativo e com suporte a recursão.Para testar o servidor de nomes local, vamos inserir um registro de exemplo.# mysql#------- Recortar Aquiinsert into domains (name,type) values ('teste.com.br','NATIVE');insert into records (content,type,domain_id,name) values ('127.0.0.1','A','1','www.teste.com.br')#-------Teste o a resolução de seu domínio.Lembre-se que para fazer o teste, vc deve ter o endereço local de seu servidor no arquivo /etc/resolv.confAproveite! =)---------------------------------------------------------------------------3º Ambiente - Servidor de nomes e sem recursãoRepita o procedimento do ambiente 2, apenas não instalando o Recursor.---------------------------------------------------------------------------Abaixo três interfaces gráficas para gerenciamento do PowerDNSPowerAdmin - http://www.poweradmin.org/ (O Mais completo)proFTPd Administrator - proftpd-adm.sourceforge.netZoneAdmin - http://open.megabit.net/index.php?section=pro_home&amp;project=ZoneAdminFonte: http://www.powerdns.com/