Gestión del TTL en Ubuntu: de la teoría a la práctica
Publicado el 04.03.2026
TTL (Time To Live) — es un campo de 8 bits en la cabecera IP que determina la cantidad máxima de “saltos” (nodos) que un paquete puede recorrer antes de ser descartado. Al pasar por cualquier enrutador, el valor TTL se decrementa en 1.
Valores de TTL típicos por defecto
Diferentes sistemas operativos usan valores iniciales distintos. Esto permite determinar remotamente el tipo de SO (OS Fingerprinting).
| Sistema operativo | TTL predeterminado |
|---|---|
| Windows (todas las versiones) | 128 |
| Linux (Ubuntu, Debian, CentOS y otros) | 64 |
| Android | 64 |
| iOS / macOS | 64 |
| FreeBSD / Solaris | 255 |
¿Por qué cambiar el TTL? Patrones de uso
1. Eludir las restricciones de tethering (compartir Internet)
El escenario más común. Los operadores móviles analizan el tráfico entrante.
Si un paquete del smartphone llega con TTL 64 — eso es normal. Si compartes Internet con un portátil (también con TTL 64), el paquete pasa por el smartphone (como si fuera un router) y su TTL se convierte en 63.
El operador ve un valor “no estándar” y:
- bloquea el tethering,
- limita la velocidad,
- o cobra una tarifa adicional.
Solución:
- forzar en el dispositivo final un TTL de 65,
- u o configurar
iptablesen el smartphone/router para que compense la disminución del TTL.
2. Disfrazar como otro SO
Si un servidor Linux debe parecer una máquina Windows para los escáneres externos, se establece el TTL en 128. Esto confunde las herramientas pasivas de análisis de tráfico y complica el OS Fingerprinting.
3. Protección contra trazado (Traceroute)
Si se establece un TTL bajo (por ejemplo, 1–3), los paquetes no saldrán más allá del segmento local de la red o del gateway más cercano. Esto hace imposible construir un mapa de la red desde fuera con medios estándar.
Configuración práctica con iptables
Para trabajar con TTL se usa la tabla mangle.
Todos los comandos requieren privilegios sudo.
Comandos básicos
Establecer un valor fijo
# Establecemos TTL 64 para todos los paquetes salientes
sudo iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
Incremento (aumentar TTL)
Si necesita que el paquete abandone el dispositivo con el mismo valor con el que llegó (compensando la resta al reenviar):
sudo iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
Segmentación por usuarios (módulo owner)
En Linux se puede segmentar el tráfico por UID (User ID). Esto es especialmente útil:
- si en un servidor funcionan distintos servicios,
- si se requiere un comportamiento de red diferente,
- si se necesita enmascarar solo parte del tráfico.
1. Para un usuario del sistema (por ejemplo, UID 1001)
sudo iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j TTL --ttl-set 128
2. Para el servidor web (usuario www-data)
sudo iptables -t mangle -A OUTPUT -m owner --uid-owner www-data -j TTL --ttl-set 64
3. Exclusión de un usuario
Se puede establecer una regla para todos, excepto una cuenta específica:
sudo iptables -t mangle -A OUTPUT -m owner ! --uid-owner 1000 -j TTL --ttl-set 65
Uso con IPv6 (Hop Limit)
En el protocolo IPv6 el campo TTL fue renombrado a Hop Limit.
Para gestionarlo se usa la utilidad ip6tables. El principio de funcionamiento es completamente idéntico.
Ejemplo para un usuario específico en IPv6
sudo ip6tables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j HL --hl-set 64
Verificación y automatización
Ver reglas actuales
sudo iptables -t mangle -L -v -n --line-numbers
Guardar configuración
En Ubuntu las reglas de iptables se restablecen después de reiniciar.
Para guardarlas:
# Instalación (si no está instalado)
sudo apt install iptables-persistent
# Guardar las reglas actuales
sudo netfilter-persistent save
Las reglas se guardarán en:
/etc/iptables/rules.v4/etc/iptables/rules.v6
Los archivos se pueden editar manualmente y luego aplicar los cambios:
sudo netfilter-persistent reload
Conclusión
El manejo de TTL y Hop Limit no es solo un “truco para compartir Internet”, sino una herramienta completa de ingeniería de redes.
Se utiliza para:
- eludir restricciones de los operadores,
- enmascarar la pila de red,
- segmentar el tráfico,
- limitar el área de propagación de los paquetes,
- construir políticas de red no estándar.
En DevOps y en automatización de infraestructuras, tales mecanismos se aplican a menudo como parte de esquemas más complejos — junto con policy routing, mark-based routing y reglas avanzadas de netfilter.