Bandera: Русский Русский Bandera: English English

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 operativoTTL predeterminado
Windows (todas las versiones)128
Linux (Ubuntu, Debian, CentOS y otros)64
Android64
iOS / macOS64
FreeBSD / Solaris255

¿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 iptables en 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.

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas