Já imaginaste transformar o teu computador com Linux num servidor DNS poderoso e totalmente sob o teu controlo? Com o PowerDNS, isso é possível — e até mais simples do que parece!
Neste artigo vais aprender a instalar e configurar o PowerDNS com MariaDB num PC com Linux. Pronto para transformar a tua rede?
O que é o PowerDNS?
O PowerDNS é um servidor DNS open-source que oferece flexibilidade, desempenho e segurança, sendo uma excelente alternativa a soluções mais tradicionais como o BIND.
É amplamente utilizado tanto por profissionais de redes como por utilizadores que querem aprender a gerir nomes de domínio localmente ou na internet.
Principais vantagens do PowerDNS
Integração com bases de dados como MariaDB e PostgreSQL
Suporte a DNSSEC (mais segurança)
Interface gráfica opcional (PowerDNS Admin)
Suporte para modo autoritativo e recursivo
Alta performance com multithreading
Tipos de registos DNS (Resource Records)
Tipo | Descrição |
---|---|
A | Aponta para um IP v4 |
AAAA | Aponta para um IP v6 |
CNAME | Nome alternativo (alias) |
MX | Servidores de email |
NS | Define os nameservers |
PTR | Inverso: IP para nome |
SOA | Informação principal da zona |
SRV | Define serviços (útil em VoIP, por exemplo) |
TXT | Informações em formato texto |
Como instalar e configurar o PowerDNS no Linux
Utilizámos o Rocky Linux, mas podes adaptar para Ubuntu, Debian, Fedora, etc.
1. Instala o MariaDB
sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
2. Cria a base de dados
sudo mysql -u root -p
Depois:
CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;
3. Importa o esquema da base de dados
wget https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsql/backend-schema.mysql.sql
mysql -u pdns -p powerdns < backend-schema.mysql.sql
4. Instala o PowerDNS e backend MySQL
sudo dnf install -y epel-release
sudo dnf install -y pdns pdns-backend-mysql
5. Configura o PowerDNS
sudo nano /etc/pdns/pdns.conf
Adiciona:
launch=gmysql
gmysql-host=127.0.0.1
gmysql-dbname=powerdns
gmysql-user=pdns
gmysql-password=password
Guarda e reinicia:
sudo systemctl enable --now pdns
sudo systemctl restart pdns
6. Define servidor recursivo
sudo sed -i 's/# recursor=/recursor=8.8.8.8/g' /etc/pdns/pdns.conf
sudo service pdns restart
Testa com:
nslookup iminformatica.pt localhost
Configurar zona DNS no PowerDNS
sudo mkdir /etc/powerdns/bind
sudo nano /etc/powerdns/bindbackend.conf
Adiciona:
zone "iminformatica.pt" {
type master;
file "/etc/powerdns/bind/iminformatica.pt.zone";
allow-update { none; };
};
Cria o ficheiro da zona:
sudo nano /etc/powerdns/bind/iminformatica.pt.zone
Exemplo:
$ORIGIN iminformatica.pt
$TTL 1h
@ IN SOA ns.iminformatica.pt hostmaster.iminformatica.pt (
1 ; serial
1d ; refresh
2h ; retry
4w ; expire
1h ; minimum
)
IN NS ns
IN A 192.168.1.97
ns IN A 192.168.1.97
Adiciona nomes aos dispositivos da rede
gwmeo IN A 192.168.1.254
router IN CNAME gwmeo
Assim, podes aceder ao teu router local escrevendo gwmeo ou router.
Se quiseres aumentar a segurança, o PowerDNS também suporta DNSSEC, protegendo os teus domínios contra falsificações.
Se queres uma solução leve, rápida e altamente configurável para gerir DNS no Linux, o PowerDNS é a ferramenta ideal. Além disso, ajuda-te a aprender de forma prática como funciona a infraestrutura de nomes da internet.