Uno de los servicios/protocolos más importantes en cualquier red de datos es el DNS (Domain Name System). Como su nombre sugiere, el DNS traduce nombres en direcciones IP y viceversa. Hoy enseñamos a instalar y configurar PowerDNS.
PowerDNS es un software servidor de DNS (Domain Name System) que puede usarse para gestionar y resolver dominios en Internet o en redes privadas. Es una alternativa popular a servidores como BIND, ofreciendo mayor flexibilidad y soporte a bases de datos como MariaDB, PostgreSQL y SQLite.
Características principales de PowerDNS
- Modularidad: Puede utilizar diferentes backends (como MySQL, PostgreSQL, LDAP, entre otros) para almacenar registros DNS.
- Eficiencia y escalabilidad: Soporta multithreading y consigue lidiar con un elevado volumen de tráfico.
- Seguridad: Incluye funcionalidades como DNSSEC, que protege contra ataques de envenenamiento de caché (cache poisoning).
- Interfaz de administración: Puede ser gestionado a través del PowerDNS Admin, una interfaz gráfica.
- Dos modos de funcionamiento: Puede ser configurado como un servidor DNS autoritativo, para gestionar dominios, o como un servidor recursivo, para resolver consultas.
Componentes principales de PowerDNS
- PowerDNS Authoritative Server – Responde a consultas DNS para dominios específicos.
- PowerDNS Recursor – Resuelve nombres de dominio consultando otros servidores DNS.
Registros de recursos utilizados en zonas DNS
Toda la información asociada a un dominio DNS se registra en los archivos de zonas a través de registros de recursos. Los registros de recursos permiten definir un tipo de apuntador para direcciones IP, nombres, etc. Por ejemplo, cuando crees un registro en el DNS relativo a un servidor de correo electrónico, usamos los registros de recursos MX (Mail Exchanger)
Tipos de registros de recursos más importantes:
- A – Address: Asociación de un nombre a una dirección (mapeo directo)
- AAAA – Address IPv6; Asociación de un nombre a una dirección IPv6
- NS (NameServer); Indica el nombre de un servidor DNS del dominio o subdominio;
- CNAME – (Canonical NAME); un alias (nombre alternativo) para un host;
- MX – (Mail eXchanger); Definición de servidores de correo electrónico del dominio o subdominio;
- PTR – (PoinTeR); Asociación de una dirección a un nombre (reverse DNS – mapeo inverso)
- SOA – (Start Of Authority); Identificación de encabezados de zonas
- SRV – (SeRVice); permite definir servicios disponibles en un dominio
- TXT – Definición de información textual sobre el dominio
¿Cómo transformar un PC en un servidor DNS con PowerDNS?
Instalación de PowerDNS
Cuando se habla de servicios DNS para Linux, los nombres más populares son Bind9 o djbdns. Para hoy nuestra sugerencia va para PowerDNS, ya que es un servicio bastante ligero y con muchas funcionalidades. Para instalar PowerDNS en RockyLinux debes comenzar por instalar un sistema de gestión de base de datos.
- Paso 1: Instalar MariaDB (o MySQL)
sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb
Ahora, ejecuta el asistente de configuración segura:
sudo mysql_secure_installation
- Paso 2: Crear base de datos y usuario
Accede a MariaDB
sudo mysql -u root -p
Crea una base de datos y un usuario para PowerDNS:
CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;
Ahora, descarga el schema SQL para crear las tablas:
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
- Paso 3: Instalar PowerDNS
En este paso vamos a instalar PowerDNS y el backend MySQL
sudo dnf install -y epel-release
sudo dnf install -y pdns pdns-backend-mysql
- Paso 4: Configurar PowerDNS
Edita el archivo de configuración
sudo nano /etc/pdns/pdns.conf
Añade o edita las siguientes líneas:
launch=gmysql
gmysql-host=127.0.0.1
gmysql-dbname=powerdns
gmysql-user=pdns
gmysql-password=password
Guarda y sal (CTRL+X, Y, Enter). Reinicia el servicio:
sudo systemctl enable --now pdns
sudo systemctl restart pdns
- Paso 5: Configurar un recursor
Antes de definir nuestra zona en el DNS, es necesario indicar cuál es el servidor DNS que va a resolver nombres fuera de nuestro dominio. Para este ejemplo vamos a usar el servidor de Google (8.8.8.8). Esa información se configura en el archivo /etc/powerdns/pdns.conf
pudiendo usarse el siguiente comando para ello:
sudo sed -i 's/# recursor=/recursor=8.8.8.8/g' /etc/powerdns/pdns.conf
Después de configurar, debes hacer un reinicio al servicio pdns e instalar dnsutils
sudo service pdns restart
//sudo systemctl restart pdns
sudo apt-get install dnsutils
Después de reiniciar el servicio e instalar dnsutils, puedes testear usando, por ejemplo, el comando
nslookup adictosalinux.com localhost
Configurar una zona en PowerDNS
Como se mencionó, toda la información asociada a un dominio DNS se registra en los archivos de zonas. Para eso vamos a abrir el archivo /etc/powerdns/bindbackend.conf
(o /etc/pdns/pdns.conf
) e indicar la zona para nuestro dominio DNS interno. Para este tutorial, vamos a considerar que el dominio DNS es adictosalinux.com
zone "adictosalinux.com" {
type master;
file "/etc/powerdns/bind/adictosalinux.com.zone";
allow-update { none; };
};
A continuación vamos a crear el archivo /etc/powerdns/bind/adictosalinux.com.zone
donde vamos a colocar la información de nuestra zona. Para eso comenzamos por crear el directorio /etc/powerdns/bind
(para tener el servicio organizado)
sudo mkdir /etc/powerdns/bind
A continuación creamos y editamos el archivo /etc/powerdns/bind/adictosalinux.com.zone
y colocamos allí la siguiente información:
Nota: Cabe mencionar que la dirección 192.168.1.97 corresponde a mi PI. Debes cambiar por la IP que está asignada a la tuya.
$ORIGIN adictosalinux.com ; base for unqualified names
$TTL 1h ; default time-to-live
@ IN SOA ns.adictosalinux.com hostmaster.adictosalinux.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
Y ya está hecho. Nuestro servidor DNS está instalado, configurado y listo para usarse.
Añadir nuevos registros
Como este servicio va a funcionar en la red local, podemos asignar un nombre a todos los dispositivos que están en esa red. Por ejemplo, vamos a considerar que queremos dar el nombre gwmeo al router que tiene la dirección 192.168.1.254. Para eso, basta con añadir al archivo anterior la siguiente línea:
gwmeo IN A 192.168.1.254
Caso el usuario pretenda que este equipo tenga un nombre alternativo (CNAME) puede configurar algo del tipo:
gwmeo IN A 192.168.1.254
router IN CNAME gwmeo
Con la información anterior, cualquier dispositivo que haya configurado como servidor DNS el PI, podrá acceder al router a través del nombre gwmeo o router.
Al final de la configuración debes reiniciar de nuevo el servicio pdns.
Siempre que quieras añadir nuevas máquinas, basta con añadir esa información al archivo /etc/powerdns/bind/adictosalinux.com.zone
.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.