Wie iptables Tabellen und Ketten durchlaufen werden

22

Ich weiß, Linux hat 3 eingebaute Tabellen und jede von ihnen hat ihre eigenen Ketten wie folgt:

FILTER : PREROUTING, FORWARD, POSTROUTING

NAT : PREROUTING, INPUT, OUTPUT, POSTROUTING

MANGLE : PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

Aber ich kann nicht verstehen, wie sie durchlaufen werden, in welcher Reihenfolge, wenn es welche gibt. Wie werden sie beispielsweise durchlaufen, wenn:

  1. Ich sende ein Paket an einen PC in meinem lokalen Netzwerk
  2. wenn ich ein paket an einen pc in einem anderen netzwerk sende
  3. wenn ein Gateway ein Paket empfängt und es weiterleiten muss
  4. wenn ich ein Paket erhalte, das für mich bestimmt ist
  5. jeder andere Fall (falls vorhanden)
zer0uno
quelle

Antworten:

28

Wikipedia hat ein großartiges Diagramm , um die Verarbeitungsreihenfolge zu zeigen.

Weitere Informationen finden Sie auch in der Dokumentation zu iptables, insbesondere im Kapitel zum Durchlaufen von Tabellen und Ketten . Welches auch ein Flussdiagramm enthält .

Die Reihenfolge ändert sich abhängig davon, wie der Netzfilter verwendet wird (als Bridge- oder Netzwerkfilter und ob er mit der Anwendungsschicht interagiert).

Im Allgemeinen (obwohl die Details in dem oben verlinkten Kapitel mehr Teufel enthalten) werden die Ketten wie folgt verarbeitet:

  • Sehen Sie die INPUT-Kette als "eingehenden Datenverkehr von außerhalb zu diesem Host".
  • Sehen Sie die FORWARD-Kette als "Verkehr, der diesen Host als Router verwendet" (Quelle und Ziel sind nicht dieser Host).
  • Sehen Sie die OUTPUT-Kette als "Verkehr, den dieser Host senden möchte".
  • PREROUTING / POSTROUTING wird für jeden Tabellentyp unterschiedlich verwendet (z. B. für die NAT-Tabellen, PREROUTING für eingehenden (weitergeleiteten) SNAT-Verkehr und POSTROUTING für ausgehenden (weitergeleiteten / weitergeleiteten) DNAT-Verkehr. Weitere Informationen finden Sie in den Dokumenten Besonderheiten.

Die verschiedenen Tabellen sind:

  • Mangle dient zum Ändern von Paketen (Art des Dienstes, Lebensdauer usw.) bei der Überquerung.
  • Nat ist in NAT-Regeln zu setzen.
  • Raw soll zur Kennzeichnung und Verbindungsverfolgung verwendet werden.
  • Filter dient zum Filtern von Paketen.

Also für deine fünf Szenarien:

  1. Wenn der sendende Host Ihren Host mit iptables, OUTPUT
  2. Das gleiche wie oben
  3. Die FORWARD-Kette (vorausgesetzt, das Gateway ist der Host mit iptables)
  4. Wenn "ich" der Host mit iptables ist, INPUT
  5. Schauen Sie sich die obigen Kettenregeln (die allgemeine Faustregel) und das Flussdiagramm an (und dies hängt auch davon ab, was Sie mit IPTables erreichen möchten).
Drav Sloan
quelle
Ich bin auch kürzlich auf diesen Link gestoßen - stuffphilwrites.com/2014/09/iptables-processing-flowchart . Dort gibt es ein schönes Flussdiagramm von Phil Hagen.
SLM
1
Eine weitere gute Ressource - digitalocean.com/community/tutorials/… .
SLM