Pplware

PowerDNS: transforme o seu PC com Linux num servidor de DNS

Um dos serviços/protocolos mais importantes em qualquer rede de dados é o DNS (Domain Name System). Tal como o nome sugere, o DNS traduz nomes em endereços IPs e vice-versa. Hoje ensinamos a instalar e a configurar o PowerDNS.

O PowerDNS é um software servidor de DNS (Domain Name System) que pode ser usado para gerir e resolver domínios na Internet ou em redes privadas. É uma alternativa popular a servidores como o BIND, oferecendo maior flexibilidade e suporte a bases de dados como MariaDB, PostgreSQL e SQLite.

Principais características do PowerDNS

Componentes principais do PowerDNS

Resource Records utilizados em zonas DNS

Toda a informação associada a um domínio DNS é registada nos ficheiros de zonas através de resource records. Os resource records permitem definir um tipo de apontador para endereços IP, nomes, etc. Por exemplo, quando criar um registo no DNS relativo a um servidor de e-mail, usamos o resource records  MX (Mail Exchanger)

Tipos de  resource records mais importantes:

Como transformar um PC num servidor de DNS com o PowerDNS?

Instalação do PowerDNS

Quando se fala em serviços de DNS para Linux, os nomes mais populares são o Bind9 ou djbdns. Para hoje a nossa sugestão vai para o PowerDNS pois é um serviço bastante leve e com muitas funcionalidades. Para instalar o PowerDNS no RockyLinux devem começar por instalar um sistema de gestão de base de dados.

Passo 1: Instalar MariaDB (ou MySQL)

sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb

Agora, executem o assistente de configuração segura:

sudo mysql_secure_installation

Passo 2: Criar Base de Dados e Utilizador

Aceda ao MariaDB

sudo mysql -u root -p

Crie uma base de dados e um utilizador para o PowerDNS:

CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

Agora, descarregue o schema SQL para criar as tabelas:

sudo dnf install -y wget
wget https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsql/backend-schema.mysql.sql
mysql -u pdns -p powerdns < backend-schema.mysql.sql

Passo 3: Instalar o poweDNS

Neste passo vamos instalar o PowerDNS e o backend MySQL

sudo dnf install -y epel-release
sudo dnf install -y pdns pdns-backend-mysql

Passo 4: Configurar o poweDNS

Edite o ficheiro de configuração

sudo nano /etc/pdns/pdns.conf

Adicione ou edite as seguintes linhas:

launch=gmysql
gmysql-host=127.0.0.1
gmysql-dbname=powerdns
gmysql-user=pdns
gmysql-password=password

Guarde e saia (CTRL+X, Y, Enter). Reinicie o serviço:

sudo systemctl enable --now pdns
sudo systemctl restart pdns

Passo 5: Configurar um recursor

Antes de definirmos a nossa zona no DNS, é necessário indicar qual o servidor de DNS que vai resolver nomes fora do nosso domínio. Para este exemplo vamos usar o servidor da Google (8.8.8.8). Esse informação é configurada no ficheiro /etc/powerdns/pdns.conf  podendo ser usado o seguinte comando para tal:

sudo sed -i 's/# recursor=/recursor=8.8.8.8/g' /etc/powerdns/pdns.conf

Depois de configurado devemos fazer um restart ao serviço pdns e instalar o dnsutils

sudo service pdns restart
sudo apt-get install dnsutils

Depois de reiniciarem o serviço e instalar o dnsutils, podem testar usando, por exemplo, o comando

nslookup pplware.com localhost

Configurar uma ZONA no PowerDNS

Como referido, toda a informação associada a um domínio DNS é registada nos ficheiros de zonas. Para isso vamos abrir o ficheiro /etc/powerdns/bindbackend.conf e indicar a zona para o nosso domínio DNS interno. Para este tutorial, vamos considerar que o domínio DNS é pplware.com

zone "pplware.com" {
        type master;
        file "/etc/powerdns/bind/pplware.com.zone";
        allow-update { none; };
};

De seguida vamos criar o ficheiro /etc/powerdns/bind/pplware.com.zone onde vamos colocar a informação da nossa zona. Para isso começamos por criar o diretório /etc/powerdns/bind (para termos o serviço organizado)

sudo mkdir /etc/powerdns/bind

Em seguida criamos e editamos o ficheiro /etc/powerdns/bind/pplware.com.zone e colocamos lá a seguinte informação:

Nota: De referir que o endereço 192.168.1.97 corresponde ao meu PI. Devem alterar pelo IP que está atribuído ao vosso.

$ORIGIN pplware.com     ; base for unqualified names
$TTL 1h                 ; default time-to-live
@                       IN      SOA ns.pplware.com hostmaster.pplware.com (
                                1; serial
                                1d; refresh
                                2h; retry
                                4w; expire
                                1h; minimum time-to-live
                        )
                        IN      NS      ns
                        IN      A       192.168.1.97
ns                      IN      A       192.168.1.97

E está feito. O nosso servidor de DNS está instalado, configurado e pronto a ser usado.

Adicionar novos registos

Como este serviço vai ficar a funcionar na rede local, podemos atribuir um nome a todos os dispositivos que estão nessa rede. Por exemplo, vamos considerar que queremos dar o nome gwmeo ao router que tem o endereço 192.168.1.254. Para isso, basta acrescentar ao ficheiro anterior a seguinte linha:

gwmeo               IN      A       192.168.1.254

Caso o utilizador pretenda que este equipamento tenha um nome alternativo (CNAME) pode configurar algo do tipo:

gwmeo               IN      A       192.168.1.254
router              IN      CNAME   gwmeo

Com a informação anterior, qualquer dispositivo que tenha configurado como servidor de DNS o PI, poderá aceder ao router através do nome gwmeo ou router.

No final da configuração devem reiniciar novamente o serviço pdns.

Sempre que queiram acrescentar novas máquinas, basta acrescentar essa informação ao ficheiro /etc/powerdns/bind/pplware.com.zone.

 

Exit mobile version