Was ist der Unterschied zwischen OUTPUT- und FORWARD-Ketten in iptables?

21

CentOS 6.0

Ich lerne iptables und bin verwirrt über den Unterschied zwischen FORWARD- und OUTPUT-Ketten. In meinen Schulungsunterlagen heißt es:

Wenn Sie eine Kette an (-A) anhängen oder aus (-D) löschen, möchten Sie sie auf Netzwerkdaten anwenden, die in drei Richtungen übertragen werden:

  • EINGABE - Alle eingehenden Pakete werden anhand der Regeln in dieser Kette überprüft.
  • OUTPUT - Alle ausgehenden Pakete werden anhand der Regeln in dieser Kette überprüft.
  • FORWARD - Alle Pakete, die an einen anderen Computer gesendet werden, werden anhand der Regeln in dieser Kette überprüft.

Dies verwirrt mich, weil in meinem Kopf Pakete, die für einen Host abreisen, abgehend sein WÜRDEN. Gibt es also Szenarien, in denen ein Paket an einen anderen Computer gesendet wird, aber NICHT "ausgehend" ist? Wie würden Iptables zwischen den beiden unterscheiden?

Mike B
quelle

Antworten:

25

OUTPUT ist für Pakete, die vom Host ausgegeben werden. Ihr Ziel ist normalerweise ein anderer Host, kann jedoch über die Loopback-Schnittstelle derselbe Host sein, sodass nicht alle Pakete, die OUTPUT durchlaufen, tatsächlich abgehend sind.

FORWARD gilt für Pakete, die weder vom Host gesendet noch an den Host gerichtet werden. Dies sind die Pakete, die der Host lediglich weiterleitet.

Wenn Sie anfangen, sich mit Packet Mangling und NAT zu befassen, ist die ganze Geschichte etwas komplexer .

Gilles 'SO - hör auf böse zu sein'
quelle
Interessant ... also zum Zweck meines Verständnisses ist es fair zu sagen, dass OUTPUT für Pakete ist, die vom System "stammen" ... und FORWARD für Pakete, die nicht vom System stammen oder für bestimmt sind es und gehen stattdessen "durch" das System?
Mike B
1
Nicht ganz, Pakete, die "weitergeleitet" werden, werden auch von der Netzwerkschnittstelle "ausgegeben". Genau wie Pakete "eingegeben" werden, bevor sie "weitergeleitet" werden. Paket geht ein, für fremdes System bestimmt, Paket tritt in "Weiterleitungs" -Kette ein , iptables entscheidet, ob das Paket weitergeleitet werden soll, gibt "Ausgabekette" ein, iptables prüft, wie es ausgegeben werden soll, Paket verlässt ... einfach!
Grizly
2
@Grizly Nein, aus dem Speicher (ich muss zugeben, dass ich diese Antwort nicht speziell getestet habe) und gemäß dem Diagramm, auf das ich verweise, durchläuft ein Paket immer genau eine der drei filterKetten ( INPUToder OUTPUToder FORWARD). (Angenommen, eine andere Kette lässt sie vorher nicht fallen.) Die mangleund natKetten sind unterschiedlich, vielleicht haben Sie an die mangleKette gedacht ?
Gilles 'SO- hör auf böse zu sein'
0

Zu meinem Verständnis:

EINGABE: dst IP befindet sich auf dem Host, selbst wenn er mehrere Ports mit mehreren Subnetzen hat

AUSGABE: Die Quell-IP stammt vom Host, einem der Ports

FORWARD: Weder dst IP auf dem Host noch src IP vom Host

Bildbeschreibung hier eingeben

Zum Beispiel an Router A

INPUT ist:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

OUTPUT ist:

192.168.10.199 -> xxxx

192.168.2.1 -> xxxx

FORWARD ist:

192.168.10.1 -> 192.168.2.199

192.168.10.1 -> 192.168.8.1

192.168.10.1 -> 192.168.8.199

flz
quelle