Was ist die Mangeltabelle in iptables?

28

Ich verwende iptable-Regeln, um Pakete auf meinem Ubuntu-Server zu filtern und zu manipulieren. aber ich kann die mangeltabelle nicht verstehen.

Aus diesem iptables-Tutorial zitieren :

Diese Tabelle sollte, wie wir bereits bemerkt haben, hauptsächlich zum Verwirren von Paketen verwendet werden. Mit anderen Worten, Sie können die Mangelübereinstimmungen usw., die zum Ändern der TOS-Felder (Type Of Service) usw. verwendet werden können, frei verwenden.

Es wird dringend empfohlen, diese Tabelle nicht für Filterzwecke zu verwenden. DNAT, SNAT oder Masquerading funktionieren in dieser Tabelle nicht.

Kann mir jemand die Mangeltabelle beschreiben und einige Beispiele nennen, um zu verstehen, wann ich sie verwenden sollte?

Pylover
quelle
6
Die iptables(8)Manpage enthält alle gewünschten Informationen, einschließlich einiger nützlicher Beispiele für die Verwendung von Mangeltabellen.
Michael Hampton

Antworten:

23

Zusätzlich zu den anderen guten Antworten musste ich kürzlich die Mangeltabelle verwenden, um die MTU-Diskrepanzen (Maximum Transmission Unit) auszugleichen, die durch den Datenverkehr über PPPoE, PPP und ATM verursacht werden. Dies führt jeweils zu einem zusätzlichen Aufwand, der die für IP verfügbare Nutzlast verringert von den üblichen 1500 Bytes eines Ethernet-Frames.

Bei Systemen an jedem Ende der Pipe wird die MTU wie üblich auf den regulären Standardwert von 1500 eingestellt, und daher wird versucht, so große IP-Frames zu senden. Da die tatsächlich verfügbare Nutzlast kleiner war, hätte dies zu einer Paketfragmentierung geführt, mit der Ausnahme, dass der Absender häufig anfordert, dass Pakete nicht fragmentiert werden, und dass sie daher vollständig verworfen werden.

In einer idealen Welt hätte die Pfad-MTU-Erkennung es den Endpunkten ermöglicht, ihre MTU nach Bedarf herunterzufahren. Diese Erkennung hängt jedoch von ICMP ab, und Netzwerke außerhalb meiner Kontrolle wurden häufig so konfiguriert, dass ICMP aus Sicherheitsgründen gelöscht wird.

Die einzige Möglichkeit bestand darin, die Paketverwaltung in meinem Router zu verwenden, um TCP-SYN-Pakete so zu ändern, dass die maximale Segmentgröße auf der Transportebene verringert wird:

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

Diese Art von Dingen ist chaotisch und sollte im Idealfall vermieden werden, aber ich hatte keine anderen Optionen und dies löste das Problem.

Hoffe, diese Beispiele helfen, sowie die Manpage.

Kevin
quelle
23

Ich habe hier kürzlich eine gute Erklärung gefunden . Es wird im Wesentlichen verwendet, um bestimmte Header für IP-Pakete festzulegen, um die später getroffene Routing-Entscheidung zu beeinflussen. Wenn überhaupt, ist die TTL-Option wahrscheinlich die interessanteste:

Das TTL-Ziel wird verwendet, um das TTL-Feld (Time To Live) des Pakets zu ändern. Wir könnten Paketen sagen, dass sie nur eine bestimmte TTL haben sollen und so weiter. Ein guter Grund dafür könnte sein, dass wir uns nicht neugierigen Internet Service Providern preisgeben wollen. Einige Internetdienstanbieter mögen keine Benutzer, die mehrere Computer auf einer einzigen Verbindung ausführen, und es gibt einige Internetdienstanbieter, die nach einem einzelnen Host suchen, der unterschiedliche TTL-Werte generiert, und dies als eines von vielen Anzeichen für mehrere Computer betrachten, die an einen einzigen Computer angeschlossen sind Verbindung.

Die anderen Ziele sind TOS, MARK, SECMARK, CONNSECMARK.

BubuIIC
quelle
4
Mangle wird auch in QOS verwendet, um die Markierung von Paketen zu handhaben, oder in der Datenlastverteilung, um Pakete auf verschiedene Routen zu verteilen.
TomTom
8

Als iptables noob würde ich sagen: In der Mangeltabelle können einige spezielle Einträge im Header von Paketen geändert werden. (z. B. Art des Dienstes, Lebensdauer) (es können auch spezielle Markierungen und Sicherheitskontextmarkierungen gesetzt werden)

iptablesnoob
quelle
2

Es gibt einen guten tiefen Tauchgang, aber das Tutorial über Iptables ist hier nicht allzu schwer zu verstehen .

Die Mangeltabelle wird verwendet, um die IP-Header des Pakets auf verschiedene Arten zu ändern. Sie können beispielsweise den TTL-Wert (Time to Live) eines Pakets anpassen, indem Sie die Anzahl der gültigen Netzwerksprünge, die das Paket unterstützen kann, entweder verlängern oder verkürzen. Andere IP-Header können auf ähnliche Weise geändert werden.

Diese Tabelle kann auch eine interne Kernel "Markierung" für das Paket zur weiteren Verarbeitung in anderen Tabellen und durch andere Netzwerktools setzen. Diese Markierung berührt nicht das eigentliche Paket, sondern fügt die Markierung der Darstellung des Pakets durch den Kernel hinzu.

Hat mir sehr geholfen, da es auch klar erklärt, wie alle Teile zusammenpassen und sich gegenseitig beeinflussen.

rbennell
quelle