¿Cuál es la tabla de mangle en iptables?

28

Estoy usando reglas iptable para filtrar y manipular paquetes en mi servidor Ubuntu. pero no puedo entender la tabla de mangle.

Citando este tutorial de iptables :

Esta tabla debería, como ya hemos señalado, usarse principalmente para manipular paquetes. En otras palabras, puede usar libremente las coincidencias de manipulación, etc., que podrían usarse para cambiar los campos de TOS (Tipo de servicio), etc.

Se recomienda encarecidamente no utilizar esta tabla para ningún filtrado; tampoco funcionará DNAT, SNAT o Masquerading en esta tabla.

¿Alguien puede describirme la tabla de cambios y proporcionar algunos ejemplos para entender cuándo debo usarla?

pylover
fuente
66
La iptables(8)página de manual tiene toda la información que desea, incluidos varios ejemplos agradables del uso de la tabla de control.
Michael Hampton

Respuestas:

23

Además de las otras buenas respuestas, recientemente tuve que usar la tabla de cambios para ajustar las discrepancias de MTU (unidad de transmisión máxima) causadas por el tráfico que pasaba a través de PPPoE, PPP y ATM, cada uno de los cuales agrega una sobrecarga que reduce la carga útil disponible para IP de los 1500 bytes habituales de una trama Ethernet.

Los sistemas en cada extremo de la tubería, como es normal, tendrían su MTU en el valor predeterminado normal de 1500 y, por lo tanto, intentarían enviar tramas IP de ese tamaño. Dado que el tamaño real de la carga útil disponible era menor, esto habría causado la fragmentación de los paquetes, excepto que a menudo el remitente solicitará que los paquetes no se fragmenten y, como tal, terminen siendo descartados por completo.

En un mundo ideal, el descubrimiento de MTU de ruta habría permitido que los puntos finales ajustaran su MTU según fuera necesario, pero este descubrimiento depende de ICMP, y las redes fuera de mi control a menudo se configuraron para abandonar ICMP por razones de seguridad.

La única opción era utilizar la distribución de paquetes en mi enrutador para modificar los paquetes TCP SYN para reducir el tamaño máximo de segmento en la capa de transporte:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452

Este tipo de cosas es desordenado e idealmente debería evitarse, pero no tenía otras opciones y esto resolvió el problema.

Espero que estos ejemplos ayuden, así como la página del manual.

Kevin
fuente
23

Recientemente encontré una buena explicación aquí . Básicamente se usa para establecer encabezados específicos para paquetes IP que afecten la decisión de enrutamiento tomada más adelante. Si existe, la opción TTL es probablemente la más interesante:

El objetivo TTL se usa para cambiar el campo TTL (Tiempo de vida) del paquete. Podríamos decirle a los paquetes que solo tengan un TTL específico y así sucesivamente. Una buena razón para esto podría ser que no queremos regalarnos a los curiosos proveedores de servicios de Internet. A algunos proveedores de servicios de Internet no les gustan los usuarios que ejecutan varias computadoras en una sola conexión, y se sabe que algunos proveedores de servicios de Internet buscan un solo host que genere diferentes valores TTL, y consideran esto como uno de los muchos signos de varias computadoras conectadas a una sola conexión.

Los otros objetivos son TOS, MARK, SECMARK, CONNSECMARK.

BubuIIC
fuente
44
Mangle también se usa en QOS para manejar el marcado de paquetes o en la distribución de carga de datos para distribuir paquetes a diferentes rutas.
TomTom
8

Como un novato de iptables, diría: la tabla mangle permite modificar algunas entradas especiales en el encabezado de los paquetes. (como: Tipo de servicio, Tiempo de vida) (también permite establecer marcas especiales y marcas de contexto de seguridad)

iptablesnoob
fuente
2

Hay una buena inmersión profunda pero no es demasiado difícil de entender el tutorial sobre iptables aquí .

La tabla mangle se usa para alterar los encabezados IP del paquete de varias maneras. Por ejemplo, puede ajustar el valor TTL (Tiempo de vida) de un paquete, alargando o acortando el número de saltos de red válidos que puede soportar el paquete. Otros encabezados IP pueden modificarse de manera similar.

Esta tabla también puede colocar una "marca" interna del núcleo en el paquete para su posterior procesamiento en otras tablas y por otras herramientas de red. Esta marca no toca el paquete real, pero agrega la marca a la representación del paquete en el núcleo.

Me ayudó mucho, ya que también explica claramente cómo todas las partes encajan e interactúan entre sí.

rbennell
fuente