Qual è la tabella mangle in iptables?


28

Sto usando le regole iptable per filtrare e manipolare i pacchetti nel mio server Ubuntu. ma non riesco a capire il tavolo mangle.

Citando da questo tutorial iptables :

Questa tabella dovrebbe, come abbiamo già notato, essere utilizzata principalmente per i pacchetti mangling. In altre parole, è possibile utilizzare liberamente le corrispondenze mangle ecc. Che potrebbero essere utilizzate per modificare i campi TOS (Tipo di servizio) e così via.

Si consiglia vivamente di non utilizzare questa tabella per alcun filtro; né DNAT, SNAT o Masquerading funzioneranno in questa tabella.

Qualcuno può descrivermi il tavolo mangle e fornire alcuni esempi per capire quando dovrei usarlo?


6
La iptables(8)pagina man contiene tutte le informazioni che desideri, inclusi alcuni esempi di utilizzo della tabella mangle.
Michael Hampton

Risposte:


23

Oltre alle altre buone risposte, di recente ho dovuto utilizzare la tabella mangle per correggere le discrepanze MTU (unità di trasmissione massima) causate dal traffico trasportato attraverso PPPoE, PPP e ATM, ognuna delle quali aggiunge un overhead che riduce il payload disponibile per IP dai soliti 1500 byte di un frame Ethernet.

I sistemi su ciascuna estremità del tubo, come è normale, avrebbero il loro MTU al valore predefinito predefinito di 1500 e quindi avrebbero cercato di inviare frame IP così grandi. Poiché la dimensione effettiva del payload disponibile era inferiore, ciò avrebbe causato la frammentazione dei pacchetti, tranne per il fatto che spesso il mittente richiede che i pacchetti non vengano frammentati e, di conseguenza, finiscono per essere eliminati completamente.

In un mondo ideale, il rilevamento MTU del percorso avrebbe consentito agli endpoint di adeguare il loro MTU in base alle esigenze, ma questa scoperta dipende dall'ICMP e le reti al di fuori del mio controllo erano spesso configurate per eliminare l'ICMP per motivi di sicurezza.

L'unica scelta era quella di utilizzare la manipolazione dei pacchetti nel mio router al fine di modificare i pacchetti TCP SYN per ridurre la dimensione massima del segmento a livello di trasporto:

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

Questo genere di cose è disordinato e idealmente dovrebbe essere evitato, ma non avevo altre opzioni e questo ha risolto il problema.

Spero che questi esempi aiutino, così come la pagina man.


23

Di recente ho trovato una buona spiegazione qui . Viene sostanzialmente utilizzato per impostare intestazioni specifiche per i pacchetti IP in modo da influire sulla decisione di routing presa più avanti. Se presente, l'opzione TTL è probabilmente la più interessante:

Il target TTL viene utilizzato per modificare il campo TTL (Time To Live) del pacchetto. Potremmo dire ai pacchetti di avere solo un TTL specifico e così via. Una buona ragione per questo potrebbe essere che non vogliamo regalarci a curiosi provider di servizi Internet. Ad alcuni provider di servizi Internet non piacciono gli utenti che eseguono più computer su una singola connessione e alcuni provider di servizi Internet sono noti per cercare un singolo host che genera valori TTL diversi e lo considerano uno dei tanti segni di più computer collegati a un singolo connessione.

Gli altri obiettivi sono TOS, MARK, SECMARK, CONNSECMARK.


4
Mangle viene anche utilizzato in QOS per gestire la marcatura di pacchetti o nella distribuzione del carico di dati per distribuire pacchetti su percorsi diversi.
TomTom,

8

Come utente iptables, direi: la tabella mangle consente di modificare alcune voci speciali nell'intestazione dei pacchetti. (come: Tipo di servizio, Time To Live) (consente anche di impostare segni speciali e segni di contesto di sicurezza)


2

C'è una buona immersione profonda ma non troppo difficile da capire tutorial su iptables qui .

La tabella mangle viene utilizzata per modificare le intestazioni IP del pacchetto in vari modi. Ad esempio, è possibile regolare il valore TTL (Time to Live) di un pacchetto, allungando o accorciando il numero di hop di rete validi che il pacchetto può sostenere. Altre intestazioni IP possono essere modificate in modi simili.

Questa tabella può anche posizionare un "mark" interno del kernel sul pacchetto per ulteriori elaborazioni in altre tabelle e tramite altri strumenti di rete. Questo segno non tocca il pacchetto reale, ma aggiunge il segno alla rappresentazione del pacchetto del kernel.

Mi ha aiutato molto, in quanto spiega chiaramente come tutte le parti si incastrano e interagiscono tra loro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.