Wenn Sie mit der Network Address Translation (NAT) und/oder der Port Address Translation (PAT oder NAPT) vertraut sind, dann wissen Sie, dass wir unter Benutzung von IP-Tabellen die Quell- und Ziel-IP-Adressen in einem IP-Header oder den Quell- und den Zielport in den TCP- oder UDP-Headern verändern können. Das ist eine Art von Mangling, das in der NAT-Tabelle von netfilter/iptables gemacht wird und als NAPT (Network Address and Port Translation) bezeichnet wird, was ein total anderes Thema ist.
Die Mangle-Tabelle hat 5 Ketten namens PREROUTING, INPUT, FORWARD, OUTPUT und POSTROUTING.
Wenn wir uns das folgende vereinfachte Ablaufdiagramm anschauen, können wir erkennen, wie der Linux-Kernel Filterregeln in diesen fünf Ketten nachschlägt (Abbildung 1):
Die Regeln in der PREROUTING-Kette der Mangle-Tabelle werden vom Kernel analysiert, wenn ein Paket ankommt, bevor der Routingvorgang stattfindet.
Wenn das Paket nicht für den Router ist (für ein Ziel dahinter bestimmt), schlägt der Kernel die Regeln in der Mangle-Tabelle FORWARD-Kette und danach in der Mangle-Tabelle POSTROUTING-Kette nach.
Wenn das Paket an den Router gerichtet ist, dann wird die Mangle-Tabelle INPUT-Kette analysiert. Wenn die Antwort generiert wird, schlägt der Kernel die Regeln in der OUTPUT-Kette der Mangle-Tabelle nach und als letztes die POSTROUTING-Kette der Mangle-Tabelle.
Auf diesen Ketten sind alle IP-Tabellen-Funktionen möglich.
Es wird nicht empfohlen, Paketfilterung in der Mangle-Tabelle durchzuführen. Auch wenn Sie nicht eingeschränkt sind, Pakete in der Mangle-Tabelle zu verwerfen, sollte es nur für Regeln sein, die IP-Pakete mangeln.
Eine Besonderheit der Mangle-Tabelle ist, dass im Gegensatz zu den Filter- oder nat-Tabellen, alle Regeln analysiert werden, sogar wenn das Paket zu einer Regel gepasst hat. Diese Funktionalität der Mangle-Tabelle wurde benötigt, da Sie vielleicht das gleiche IP-Paket auf mehrere Arten verändern möchten, also stoppt der Kernel nicht, anders als die anderen Tabellen, wenn eine Übereinstimmung mit einer Regel gefunden wurde, sondern sucht Übereinstimmungen des Paketes mit anderen Regeln in dieser Kette.
Das ist einer der Hauptgründe, warum von Paketfilterung in der Mangle-Tabelle stark abgeraten wird.