Header Ads

IPv4 up IPv6 down

En tiempos pasados, todo era IPv4. Administrar una LAN era, por decirlo de alguna manera, más sencillo. Un único protocolo, reglas claras, tráfico predecible. Luego llegó IPv6 (y HTTPS) y abrió la caja de Pandora. Los diferentes sistemas operativos comenzaron a incluir IPv6 activado por defecto, trayendo consigo una avalancha de protocolos auxiliares y de repente, los dispositivos tenían múltiples direcciones IP, múltiples puertas de enlace, múltiples formas de comunicarse sin que el administrador lo notara.
Y si algo demostró IPv6, es que los estándares únicos habían muerto. Los navegadores aprendieron la lección y dejaron de usar exclusivamente el clásico puerto 53 y apareció un abanico de protocolos, todos cifrados, encapsulados, automatizados e "inteligentes", tales como:
  • DoT (DNS over TLS) - TCP 853
  • DoH (DNS over HTTPS) - HTTPS (TCP 443)
  • DoQ (DNS over QUIC) - UDP 853 (a veces 8853)
  • LLMNR (Link-Local Multicast Name Resolution) - UDP/TCP 5355 (Windows)
  • DNSCrypt - UDP/TCP 443 o 5443
  • DNS over Tor (DoT/DoH sobre Tor) - TCP sobre Tor
  • Y quién sabe cuántos más aparecerán con el tiempo...
Pero...
¿Vale la pena usar IPv6 en una LAN pequeña o mediana?
A nuestro criterio, no. Una red local se puede administrar perfectamente con IPv4, utilizando rangos privados de clase A, B o C. De hecho, muchas empresas importantes siguen operando sus redes internas con IPv4, reservando IPv6 únicamente para su exposición a Internet o servicios públicos.
En resumen, si tienes un café internet, una oficina o una empresa mediana, no necesitas IPv6. Basta con usar un rango privado con máscara /24 (o, para los más organizados, segmentar mediante VLANs), todo sobre IPv4.
Y ¿qué hacemos con IPv6?
Respuesta corta: Desactivarlo.. Pero claro, nadie quiere ir equipo por equipo desactivando IPv6, desplegando políticas de dominio o escribiendo scripts automatizados. Por fortuna, no es necesario: si tu red está centralizada mediante un servidor Linux, es suficiente controlarlo desde ahí.
Cómo desactivar IPv6 desde el servidor Linux
1. Ajustar parámetros del sistema
# Crear una copia de respaldo de la configuración actual
cp -f /etc/sysctl.conf{,.bak} &>/dev/null

# Ejecuta el siguiente loop para desactivar permanentemente IPv6
# Y habilitar el algoritmo de congestión BBR
tee -a /etc/sysctl.conf >/dev/null <<EOT
# Protocolo de congestión
net.ipv4.tcp_congestion_control = bbr

# Desactivar IPv6 en todas las interfaces
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOT
sysctl -p
Y no sobra agregar reglas adicionales en el firewall para IPv6 por si acaso algún servicio intenta levantar IPv6:
# IPv6
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
2. Dar prioridad a IPv4
Aseguramos que el sistema siempre use IPv4 antes que IPv6:
# Crear respaldo del archivo gai.conf
cp -f /etc/gai.conf{,.bak} &>/dev/null

# Ejecuta en el terminal el siguiente comando para aumentar la precedencia de IPv4
sed -i 's/^#\s*precedence ::ffff:0:0\/96\s\+100/precedence ::ffff:0:0\/96  100/' /etc/gai.conf
3. Modificar el archivo /etc/hosts
Comentamos todas las líneas IPv6 excepto la loopback local ( ::1):
cp -f /etc/hosts{,.bak} &>/dev/null
sed -i '/^\s*\(fe00::\|ff00::\|ff02::\)/ s/^/#/' /etc/hosts
Para evitar que los clientes realicen detección de portal cautivo (CPD) a través de IPv6, redirigimos esas peticiones al propio servidor:
grep -q "ipv6.msftncsi.com" /etc/hosts || echo "$serverip ipv6.msftncsi.com ipv6.msftconnecttest.com" | tee -a /etc/hosts
Nota: Reemplaza $serverip con la dirección IPv4 local del servidor que administra la red.
4. Bloquear IPv6 en Squid
# Block: IPv6
acl to_ipv6 dst ipv6
http_access deny to_ipv6
5. Otros consejos útiles
Si quieres asegurarte de que los servicios solo escuchen en direcciones IPv4, puedes especificarlo así:
En Squid:
http_port 0.0.0.0:3128
En Apache2:
Listen 0.0.0.0:80
Listen 0.0.0.0:443
En SSH (Opcional):
AddressFamily inet
ListenAddress 0.0.0.0
En NetworkManager (si usas entorno gráfico) (Opcional):
Edita o crea /etc/NetworkManager/conf.d/disable-ipv6.conf:
[connection]
ipv6.method=ignore
Luego reinicia el servicio y verifica:
systemctl restart NetworkManager
systemctl status NetworkManager
En netplan (a la interfaz local solamente):
nano /etc/netplan/config.yaml
dhcp6: false
netplan apply
Desactivar IPv6 desde GRUB
GRUB_CMDLINE_LINUX="ipv6.disable=1"
update-grub
Verificar servicios activos en IPv6
# Listar todos los sockets TCP/UDP escuchando en IPv6 de manera precisa
ss -6 -tulnp

# Alternativa: buscar cualquier línea que contenga "::" (direcciones IPv6)
ss -tulnp | grep '::'

# Verificar si IPv6 está deshabilitado a nivel de kernel
# 1 = IPv6 deshabilitado, 0 = IPv6 activo
cat /proc/sys/net/ipv6/conf/all/disable_ipv6

# Mostrar todas las interfaces con direcciones IPv6 asignadas
ip -6 addr show

# Revisar servidores DNS configurados (pueden incluir direcciones IPv6)
cat /etc/resolv.conf
Conclusión
Desactivar IPv6 en una red pequeña o mediana no es una herejía técnica, es una decisión práctica. Mientras la infraestructura local y los servicios internos dependan de IPv4, mantener IPv6 activo solo añade complejidad y posibles fugas de tráfico no controlado.
En cambio, al desactivarlo desde el servidor central:
  • Simplificas la administración.
  • Reduces la superficie de ataque.
  • Evitas consultas DNS cifradas fuera de tu control.
  • Y mantienes un entorno de red más predecible y auditable.
IPv6 tiene su lugar, especialmente en redes globales o grandes corporaciones con necesidades de direccionamiento masivo. Pero en una LAN pequeña o mediana, IPv4 sigue siendo más que suficiente.
Con la tecnología de Blogger.