PowerDNS · 8 min read · Oct 01, 2025

Instalando PowerDNS (Com Backend MySQL) E Poweradmin No Debian Lenny

Instalando PowerDNS (Com Backend MySQL) E Poweradmin No Debian Lenny

Versão 1.0
Autor: Falko Timme
Siga-me no Twitter

Este artigo mostra como você pode instalar o servidor de nomes PowerDNS (com backend MySQL) e o painel de controle Poweradmin para PowerDNS em um sistema Debian Lenny. O PowerDNS é um servidor de nomes autoritativo de alto desempenho - na configuração descrita aqui, ele lerá os registros DNS de um banco de dados MySQL (semelhante ao MyDNS), embora outros backends, como PostgreSQL, também sejam suportados. O Poweradmin é um painel de controle baseado na web para PowerDNS.

Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Neste exemplo, estou usando um host Debian Lenny com o nome do host server1.example.com e o endereço IP 192.168.0.100, configurado de acordo com os primeiros seis capítulos deste tutorial: O Servidor Perfeito - Debian Lenny (Debian 5.0) [ISPConfig 2].

Vou configurar apenas um servidor PowerDNS neste exemplo (um mestre); adicionar PowerDNS escravo(s) pode ser facilmente alcançado usando replicação de banco de dados MySQL do mestre para o(s) escravo(s), portanto, nenhuma transferência de zona é necessária (isso novamente é semelhante ao MyDNS). A replicação de banco de dados MySQL pode ser configurada de acordo com este tutorial: Como Configurar Replicação de Banco de Dados No MySQL (PowerDNS também suporta transferências de zona nativas (para cenários onde você não pode usar replicação MySQL) - veja http://downloads.powerdns.com/documentation/html/replication.html).

2 Instalando MySQL

Para instalar o MySQL, executamos

aptitude install mysql-server mysql-client

Você será solicitado a fornecer uma senha para o usuário root do MySQL - essa senha é válida para o usuário root@localhost, bem como para [email protected], então não precisamos especificar uma senha root do MySQL manualmente mais tarde:

Nova senha para o usuário “root” do MySQL: <– sua senha root sql
Repita a senha para o usuário “root” do MySQL: <– sua senha root sql

Queremos que o MySQL escute em todas as interfaces (isso é importante para a replicação do banco de dados MySQL!), não apenas no localhost, portanto, editamos /etc/mysql/my.cnf e comentamos a linha bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf

| [...] #bind-address = 127.0.0.1 [...] |

Então reiniciamos o MySQL:

/etc/init.d/mysql restart

Agora verifique se a rede está habilitada. Execute

netstat -tap | grep mysql

A saída deve ser parecida com isto:

server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN     3031/mysqld  
server1:~#

3 Instalando PowerDNS

Para instalar o PowerDNS, executamos

aptitude install pdns-server pdns-backend-mysql

A configuração do PowerDNS está localizada no diretório /etc/powerdns - vou chegar a isso em um momento.

Agora nos conectamos ao MySQL:

mysql -u root -p

Digite sua senha root do MySQL, e você deve estar no shell do MySQL. No shell do MySQL, criamos um banco de dados para o PowerDNS:

CREATE DATABASE powerdns;

Em seguida, criamos um usuário de banco de dados (powerdns) para o PowerDNS:

GRANT ALL ON powerdns.* TO 'power_admin'@'localhost' IDENTIFIED BY 'power_admin_password';  
GRANT ALL ON powerdns.* TO 'power_admin'@'localhost.localdomain' IDENTIFIED BY 'power_admin_password';  
FLUSH PRIVILEGES;

(Substitua power_admin_password por uma senha de sua escolha.)

Agora criamos as tabelas necessárias pelo PowerDNS…

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

… e finalmente saia do shell do MySQL:

quit;

Agora devemos configurar o PowerDNS para que ele use o backend MySQL:

vi /etc/powerdns/pdns.conf

Adicione a linha launch=gmysql ao pdns.conf:

| [...] ################################# # launch Which backends to launch and order to query them in # # launch= launch=gmysql [...] |

Então abra /etc/powerdns/pdns.d/pdns.local e faça com que fique da seguinte forma:

vi /etc/powerdns/pdns.d/pdns.local

| # Aqui vêm as alterações locais que o usuário fez, como configuração dos # vários backends que existem. gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

Então reinicie o pdns:

/etc/init.d/pdns restart

É isso, o PowerDNS agora está pronto para ser usado. Para saber mais sobre ele, consulte sua documentação: http://downloads.powerdns.com/documentation/html/index.html

4 Instalando Poweradmin

Agora vamos instalar o Poweradmin, um painel de controle baseado na web para PowerDNS. O Poweradmin é escrito em PHP, então devemos instalar um servidor web (estou usando o Apache2 neste exemplo) e PHP:

aptitude install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext

O Poweradmin também requer os seguintes dois pacotes PEAR:

pear install DB  
pear install pear/MDB2#mysql

Agora todos os pré-requisitos para o Poweradmin estão instalados, e podemos começar com a instalação do Poweradmin (vou instalá-lo em um subdiretório de /var/www - /var/www é a raiz do documento do site padrão do Apache no Debian; se você criou um vhost com uma raiz de documento diferente, ajuste os caminhos).

Vá para https://www.poweradmin.org/trac/wiki/GettingPoweradmin e baixe o pacote mais recente do Poweradmin, por exemplo, da seguinte forma:

cd /tmp  
wget https://www.poweradmin.org/download/poweradmin-2.1.4.tgz

Em seguida, instale-o no diretório /var/www/poweradmin da seguinte forma:

tar xvfz poweradmin-2.1.4.tgz  
mv poweradmin-2.1.4 /var/www/poweradmin  
touch /var/www/poweradmin/inc/config.inc.php  
chown -R www-data:www-data /var/www/poweradmin/

Agora abra um navegador e inicie o instalador baseado na web do Poweradmin (http://server1.example.com/poweradmin/install/index.php ou http://192.168.0.100/poweradmin/install/index.php).

Selecione seu idioma (Inglês ou Holandês):

Clique no botão Ir para o passo 3 para prosseguir:

Agora preencha os detalhes do seu banco de dados. É importante que você preencha os detalhes para o usuário root do MySQL, não o usuário MySQL powerdns que criamos anteriormente! Também forneça uma senha para o usuário admin para a interface web do Poweradmin (essa é a senha que o usuário admin usará para fazer login no Poweradmin mais tarde):

Na próxima página, o instalador pede que você execute uma consulta MySQL. Não precisamos fazer isso porque já fizemos algo semelhante no capítulo 3 (as duas instruções GRANT) então estamos prontos. Clique em Ir para o passo 6:

Clique em Ir para o passo 7: ![](/files/477ce083-3b1b-484d-b278-bbb687471d1f.png) A instalação agora está concluída... ![](/files/7e99ac27-89d2-41e0-be3f-597ce25af296.png) ... mas por razões de segurança, devemos excluir o diretório de instalação:

rm -fr /var/www/poweradmin/install/


Agora você pode ir para http://server1.example.com/poweradmin ou http://192.168.0.100/poweradmin e fazer login com o nome de usuário admin e a senha que você criou durante a instalação:

![](/files/187028cf-3e53-4d47-8327-2d7177b53329.png)

Assim é como a interface web do Poweradmin se parece:

![](/files/9e2931fb-0f8d-4d89-a82e-1af59cad4078.png)

Para criar uma zona, vá para Adicionar zona mestre e preencha o nome do domínio (por exemplo, example.com). Você já pode preencher os endereços IP para o registro A www ("servidor web") e o registro MX ("servidor de e-mail") para essa zona. Se você deixar a caixa Criar zona sem aplicar o modelo de registros desmarcada, o Poweradmin criará automaticamente alguns registros NS, A (por exemplo, www) e MX para essa zona:

![](/files/e0fc75f0-c517-430c-979a-deb8d805a366.png)

Vá para Listar zonas depois. Você deve agora ver a nova zona lá, e ela já tem oito registros. Clique no ícone de editar para ver esses oito registros:

![](/files/cb4f069e-b061-4b46-9943-d22394a9dd8d.png)

Estes são os registros que são criados automaticamente, a menos que você marque a caixa Criar zona sem aplicar o modelo de registros ao criar uma zona. Você agora pode editá-los ou adicionar e excluir registros:

![](/files/17cd6418-5205-46a2-abf5-380569ec004e.png)

Claro, você também pode criar todos os registros um por um manualmente - basta deixar os campos de endereço IP vazios e marcar a caixa Criar zona sem aplicar o modelo de registros na página Adicionar zona mestre:

![](/files/bcb04e27-2c8e-46cb-86f7-14fd60541a94.png)

Na página Listar zonas, você verá que a nova zona tem apenas um registro (o registro SOA). Clique no ícone de editar...

![](/files/6362e931-6844-492c-a3c7-2b4cf235195d.png)

... e então em Adicionar registro para adicionar mais registros, ...

![](/files/2ba33f58-7b75-48ce-ac27-ae921e6568a0.png)

..., por exemplo, registros NS...

![](/files/3e97957a-7505-4c69-b485-57bdd09f47b9.png)

... e registros A (por exemplo, para mydomain.com (deixe o campo Nome vazio!) e www.mydomain.com)...

![](/files/5d60687b-78eb-48a3-9421-af01ea0aba7f.png)

![](/files/d857e828-1f3e-4ebc-8a2d-277243545810.png)

... e registros MX:

![](/files/9f8c0537-fa9b-4c40-826a-3fdb8683eb29.png)

Para criar registros PTR, vá para a página Adicionar zona mestre e crie uma zona chamada in-addr.arpa (deixe os campos de endereço IP vazios e marque a caixa Criar zona sem aplicar o modelo de registros):

![](/files/47d461ae-19da-4b1f-ab23-042805b3d065.png)

Para criar um registro PTR que aponte do IP 1.2.3.4 para server1.example.com, crie um registro em Listar zonas e preencha 4.3.2.1 no campo Nome (esse é o IP na ordem inversa) e server1.example.com no campo Conteúdo:

![](/files/bd59392f-1137-4155-9471-fcb51cc6470f.png)

Depois de criar seus registros, você pode verificá-los com o comando dig (veja

man dig


para mais detalhes), por exemplo, da seguinte forma:

dig @localhost mx example.com

server1:~# dig @localhost mx example.com

; <> DiG 9.3.4 <> @localhost mx example.com
; (1 servidor encontrado)
;; opções globais: printcmd
;; Recebido resposta:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37939
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; SEÇÃO DE QUESTÃO:
;example.com. IN MX

;; SEÇÃO DE RESPOSTA:
example.com. 86400 IN MX 10 mail.example.com.

;; SEÇÃO ADICIONAL:
mail.example.com. 86400 IN A 1.2.3.4

;; Tempo de consulta: 9 msec
;; SERVIDOR: 127.0.0.1#53(127.0.0.1)
;; QUANDO: Mon Jan 12 19:56:46 2009
;; MSG SIZE rcvd: 66

server1:~#


### 5 Links

- PowerDNS: http://www.powerdns.com/
- Documentação do PowerDNS: http://downloads.powerdns.com/documentation/html/index.html
- Poweradmin: http://www.poweradmin.org/
- Debian: http://www.debian.org/
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.