Saltar al contenido principal

Capítulo 7.3 - DNS y Resolución de Nombres

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender el sistema DNS
  • Configurar los servidores DNS
  • Utilizar /etc/hosts
  • Configurar /etc/resolv.conf
  • Probar la resolución DNS
  • Utilizar las herramientas DNS (dig, nslookup, host)

¿Qué es DNS?​

DNS (Domain Name System) traduce los nombres de dominio en direcciones IP.

Función:

  • Resolver nombres → IPs
  • Resolver IPs → nombres (DNS inverso)
  • Caché para rendimiento

/etc/hosts​

Formato​

# /etc/hosts
127.0.0.1 localhost
127.0.1.1 hostname.localdomain hostname
192.168.1.100 server.local
10.0.0.50 database.internal

Formato:

IP_ADDRESS    HOSTNAME [ALIASES...]

Uso​

# Añadir entrada
echo "192.168.1.100 mi-servidor.local" | sudo tee -a /etc/hosts

# Verificar
cat /etc/hosts

Prioridad:

  • /etc/hosts se verifica antes que DNS
  • Útil para override local
  • Pruebas y desarrollo

/etc/resolv.conf​

Configuración​

# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
search example.com localdomain
options timeout:2 attempts:3

Directivas:

  • nameserver: Servidores DNS (hasta 3)
  • search: Dominios de búsqueda
  • options: Timeout, intentos, etc.

Servidores DNS Populares​

# Google DNS
nameserver 8.8.8.8
nameserver 8.8.4.4

# Cloudflare DNS
nameserver 1.1.1.1
nameserver 1.0.0.1

# OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Nota: En sistemas modernos, /etc/resolv.conf puede ser gestionado por NetworkManager o systemd-resolved.


systemd-resolved​

Configuración​

# /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=8.8.4.4 1.0.0.1
Domains=example.com

Reiniciar:

sudo systemctl restart systemd-resolved

Verificar​

# Estado
systemd-resolve --status

# Resolver
systemd-resolve google.com

Herramientas DNS​

dig - Búsqueda DNS​

# Resolución simple
dig google.com

# Servidor DNS específico
dig @8.8.8.8 google.com

# Tipo de registro
dig google.com A # Registro A
dig google.com MX # Registro MX
dig google.com NS # Registro NS
dig google.com TXT # Registro TXT

# DNS inverso
dig -x 8.8.8.8

# Formato corto
dig +short google.com

nslookup​

# Resolución
nslookup google.com

# Servidor específico
nslookup google.com 8.8.8.8

# Modo interactivo
nslookup
> google.com
> server 8.8.8.8
> exit

host​

# Resolución simple
host google.com

# Solo IP
host -t A google.com

# DNS inverso
host 8.8.8.8

# Servidor específico
host google.com 8.8.8.8

getent​

# Resolución vía sistema
getent hosts google.com

# Utiliza /etc/hosts y DNS

Prueba de Resolución​

Verificar Configuración​

# Ver servidores DNS configurados
cat /etc/resolv.conf
systemd-resolve --status

# Probar resolución
ping -c 2 google.com
host google.com
dig google.com

Verificar Caché​

# Vaciar caché de systemd-resolved
sudo systemd-resolve --flush-caches

# Verificar caché
systemd-resolve --statistics

Configuración Permanente​

Ubuntu/Debian (Netplan)​

# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search:
- example.com

Red Hat/CentOS​

# /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN=example.com

Troubleshooting DNS​

Problemas Comunes​

# 1. Verificar resolución
host google.com
dig google.com

# 2. Verificar servidores DNS
cat /etc/resolv.conf

# 3. Probar servidor DNS directamente
dig @8.8.8.8 google.com

# 4. Verificar conectividad
ping -c 2 8.8.8.8

# 5. Verificar /etc/hosts
cat /etc/hosts

# 6. Vaciar caché
sudo systemd-resolve --flush-caches

Script de Diagnóstico​

#!/bin/bash
# Diagnóstico DNS

echo "=== Configuración DNS ==="
cat /etc/resolv.conf

echo "=== Prueba de resolución ==="
host google.com
dig +short google.com

echo "=== Prueba de servidor DNS ==="
dig @8.8.8.8 google.com +short

echo "=== Caché ==="
systemd-resolve --statistics 2>/dev/null || echo "systemd-resolved no activo"

Ejemplos Prácticos​

Configuración DNS Personalizada​

#!/bin/bash
# Configurar DNS

# Backup
sudo cp /etc/resolv.conf /etc/resolv.conf.bak

# Nueva configuración
cat <<EOF | sudo tee /etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
search localdomain
EOF

# Verificar
cat /etc/resolv.conf

Override Local​

#!/bin/bash
# Añadir entrada /etc/hosts

HOST="dev-server.local"
IP="192.168.1.50"

# Verificar si existe
if ! grep -q "$HOST" /etc/hosts; then
echo "$IP $HOST" | sudo tee -a /etc/hosts
echo "Añadido: $HOST -> $IP"
else
echo "$HOST ya existe"
fi

Resumen​

En este capítulo, usted ha aprendido:

DNS: Resolución nombres → IPs
/etc/hosts: Resolución local, prioridad sobre DNS
/etc/resolv.conf: Configuración de servidores DNS
systemd-resolved: Servicio DNS moderno
Herramientas: dig, nslookup, host para pruebas
Configuración: Netplan, archivos ifcfg-*
Troubleshooting: Pruebas de resolución, caché


Próximos Pasos​

Capítulo 7.4: Herramientas de Red
Módulo 8: Servicios y Demonio


Capítulo creado el: Diciembre 2024