Saltar al contenido principal

Conceptos DNS y Route 53

¿Qué es el DNS?​

El DNS (Domain Name System) es el sistema que traduce los nombres de dominio (ej: www.example.com) en direcciones IP (ej: 192.0.2.1).

┌─────────────────────────────────────────────────────────────┐
│ DNS - EL CONCEPTO │
├─────────────────────────────────────────────────────────────┤
│ │
│ Sin DNS: │
│ ────────── │
│ http://192.0.2.44 ← ¡Difícil de recordar! │
│ http://52.84.133.67 ← ¡Puede cambiar! │
│ │
│ Con DNS: │
│ ───────── │
│ http://www.mi-sitio.com ← ¡Fácil de recordar! │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Usuario Servidor DNS Servidor Web │ │
│ │ │ │ │ │ │
│ │ │ "www.mi-sitio.com?"│ │ │ │
│ │ ├────────────────────►│ │ │ │
│ │ │ │ │ │ │
│ │ │ "192.0.2.44" │ │ │ │
│ │ │◄────────────────────┤ │ │ │
│ │ │ │ │ │ │
│ │ │ Conexión a 192.0.2.44 │ │ │
│ │ ├────────────────────────────────────►│ │ │
│ │ │ │ │ │ │
│ │ │ Página web │ │ │
│ │ │◄────────────────────────────────────┤ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Jerarquía DNS​

┌─────────────────────────────────────────────────────────────┐
│ JERARQUÍA DNS │
├─────────────────────────────────────────────────────────────┤
│ │
│ . (raíz) │
│ │ │
│ ┌──────────────┼──────────────┐ │
│ │ │ │ │
│ .com .org .ca │
│ │ │ │ │
│ ┌────┴────┐ │ │ │
│ │ │ │ │ │
│ amazon google wikipedia gc │
│ │ │ │ │ │
│ ┌──┴──┐ ┌──┴──┐ │ │ │
│ www s3 www mail www www │
│ │
│ Ejemplo completo: │
│ www.amazon.com. │
│ ─── ────── ─── ─ │
│ │ │ │ └── Raíz (implícita) │
│ │ │ └────── TLD (Top Level Domain) │
│ │ └─────────── SLD (Second Level Domain) │
│ └──────────────── Subdominio │
│ │
└─────────────────────────────────────────────────────────────┘

Tipos de Registros DNS​

Los Más Importantes​

┌─────────────────────────────────────────────────────────────┐
│ TIPOS DE REGISTROS │
├─────────────────────────────────────────────────────────────┤
│ │
│ TIPO A (Address) │
│ ──────────────── │
│ Asocia un nombre a una dirección IPv4 │
│ www.example.com → 192.0.2.44 │
│ │
│ TIPO AAAA │
│ ───────── │
│ Asocia un nombre a una dirección IPv6 │
│ www.example.com → 2001:0db8:85a3::8a2e:0370:7334 │
│ │
│ TIPO CNAME (Canonical Name) │
│ ─────────────────────────── │
│ Crea un alias hacia otro nombre │
│ blog.example.com → www.example.com │
│ ⚠️ No puede estar en la raíz (example.com) │
│ │
│ TIPO ALIAS (AWS específico) │
│ ─────────────────────────── │
│ Como CNAME pero funciona en la raíz │
│ example.com → d1234.cloudfront.net │
│ ✅ ¡Puede estar en la raíz! │
│ │
│ TIPO MX (Mail Exchange) │
│ ─────────────────────── │
│ Servidores de correo para el dominio │
│ example.com → mail1.example.com (prioridad 10) │
│ │
│ TIPO TXT │
│ ──────── │
│ Texto arbitrario (verificación, SPF, DKIM) │
│ example.com → "v=spf1 include:_spf.google.com ~all" │
│ │
│ TIPO NS (Name Server) │
│ ───────────────────── │
│ Servidores DNS autoritativos para la zona │
│ example.com → ns1.route53.aws.com │
│ │
└─────────────────────────────────────────────────────────────┘

Tabla Resumen​

TipoUsoEjemplo
ANombre → IPv4www → 192.0.2.44
AAAANombre → IPv6www → 2001:db8::1
CNAMEAlias (no raíz)blog → www
ALIASAlias (raíz OK)@ → ALB
MXServidores de correo@ → mail.example.com
TXTTexto, verificaciónSPF, DKIM
NSServidores DNS@ → ns1.aws.com

TTL (Time To Live)​

┌─────────────────────────────────────────────────────────────┐
│ TTL - TIME TO LIVE │
├─────────────────────────────────────────────────────────────┤
│ │
│ El TTL indica cuánto tiempo un registro │
│ puede ser almacenado en caché (en segundos) │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Consulta DNS Caché local Route 53 │ │
│ │ │ │ │ │ │
│ │ │ Solicitud │ │ │ │
│ │ ├─────────────►│ │ │ │
│ │ │ │ │ │ │
│ │ │ "No está en caché, consulto a Route 53" │ │
│ │ │ ├──────────────►│ │ │
│ │ │ │ │ │ │
│ │ │ │ 192.0.2.44 │ │ │
│ │ │ │ TTL: 300 │ │ │
│ │ │ │◄──────────────┤ │ │
│ │ │ │ │ │ │
│ │ │ Guarda 5 min │ │ │ │
│ │ │ │ │ │ │
│ │ │ 192.0.2.44 │ │ │ │
│ │ │◄─────────────┤ │ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ TTL Cortos (60-300s) TTL Largos (3600-86400s) │
│ ──────────────────── ───────────────────────── │
│ ✅ Cambios rápidos ✅ Menos consultas DNS │
│ ❌ Más consultas DNS ❌ Propagación lenta │
│ Casos: Migración, failover Casos: Sitios estables │
│ │
└─────────────────────────────────────────────────────────────┘

Route 53 - Servicio DNS de AWS​

Funcionalidades​

┌─────────────────────────────────────────────────────────────┐
│ ROUTE 53 - FUNCIONALIDADES │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. DNS AUTORITATIVO │
│ ───────────────── │
│ Aloja las zonas DNS de sus dominios │
│ 100% SLA de disponibilidad │
│ │
│ 2. REGISTRO DE DOMINIOS │
│ ─────────────────────────── │
│ Comprar dominios (.com, .net, .io...) │
│ Renovación automática │
│ │
│ 3. HEALTH CHECKS │
│ ───────────── │
│ Monitoreo de endpoints │
│ Elimina automáticamente los destinos caídos │
│ │
│ 4. POLÍTICAS DE ENRUTAMIENTO │
│ ───────────────────── │
│ Simple, Weighted, Latency, Failover, Geolocation... │
│ │
│ 5. ALIAS RECORDS │
│ ───────────── │
│ Apuntar a recursos AWS sin IP │
│ (ALB, CloudFront, S3, API Gateway...) │
│ │
└─────────────────────────────────────────────────────────────┘

Hosted Zones​

┌─────────────────────────────────────────────────────────────┐
│ HOSTED ZONES │
├─────────────────────────────────────────────────────────────┤
│ │
│ Una Hosted Zone = Contenedor para los registros │
│ de un dominio │
│ │
│ PUBLIC HOSTED ZONE │
│ ────────────────── │
│ • Accesible desde Internet │
│ • Para sitios web públicos │
│ • Costo: $0.50/mes por zona │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Hosted Zone : example.com │ │
│ │ │ │
│ │ NS example.com ns-123.awsdns-45.com │ │
│ │ SOA example.com ns-123.awsdns-45.com admin │ │
│ │ A example.com 52.84.133.67 │ │
│ │ A www 52.84.133.67 │ │
│ │ CNAME blog www.example.com │ │
│ │ MX example.com 10 mail.example.com │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ PRIVATE HOSTED ZONE │
│ ─────────────────── │
│ • Accesible solo desde VPC │
│ • Para recursos internos │
│ • DNS privado (db.internal, api.internal) │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Hosted Zone : internal.company │ │
│ │ VPCs asociadas : vpc-prod, vpc-dev │ │
│ │ │ │
│ │ A db.internal.company 10.0.1.50 │ │
│ │ A api.internal.company 10.0.2.30 │ │
│ │ A cache.internal.company 10.0.3.20 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Configuración CLI​

# Crear una Hosted Zone pública
aws route53 create-hosted-zone \
--name example.com \
--caller-reference unique-string-1234

# Crear una Hosted Zone privada
aws route53 create-hosted-zone \
--name internal.company \
--caller-reference unique-string-5678 \
--vpc VPCRegion=us-east-1,VPCId=vpc-xxx \
--hosted-zone-config PrivateZone=true

# Crear un registro A
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{"Value": "192.0.2.44"}]
}
}]
}'

# Crear un ALIAS hacia un ALB
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "my-alb-1234.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}]
}'

Resumen​

ConceptoDescripción
DNSTraduce nombres en IPs
A RecordNombre → IPv4
CNAMEAlias (no raíz)
ALIASAlias AWS (raíz OK)
TTLDuración de caché
Hosted ZoneContenedor de registros

Próxima sección: Políticas de Enrutamiento