iptables und RETURN-Ziel

15

Ich verstehe nicht, was das RETURNZiel in einem iptables-Befehl tut.

Der Zweifel kommt aus dieser Anleitung, in der es heißt:

Eine Kette ist ein Satz von Regeln, gegen die ein Paket nacheinander geprüft wird. Wenn das Paket mit einer der Regeln übereinstimmt, führt es die zugehörige Aktion aus und wird nicht mit den verbleibenden Regeln in der Kette verglichen.

Also, wenn ein Paket mit einer Regel übereinstimmt und andere Regeln nicht mehr überprüft werden, warum brauche ich dann eine RETURN?

Zum Beispiel fand ich das im Internet:

iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j MARK --set-mark 30;
iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j RETURN;

Warum brauche ich RETURN? Wenn ein Paket mit der ersten Regel übereinstimmt, stoppt es automatisch die Ausführung anderer Regeln.

zer0uno
quelle

Antworten:

32

Pakete durchlaufen eine Kette , bis sie getroffen ACCEPT, DROP, REJECT, oder RETURN. Sie stoppen nicht bei einem Spiel, es sei denn, dieses Spiel enthält eine Beendigungsaktion. In Ihrem Beispiel wird ein mit der ersten Regel übereinstimmendes Paket markiert, dann jedoch von der zweiten Regel geprüft (und möglicherweise verarbeitet).

Nur als Referenz, hier sind die relevanten Abschnitte der Manpage :

Eine Firewall-Regel gibt Kriterien für ein Paket und ein Ziel an. Wenn das Paket nicht übereinstimmt, wird die nächste Regel in der Kette geprüft. Gibt es eine Übereinstimmung, dann wird die nächste Regel wird durch den Wert des Ziels festgelegt, die der Name einer benutzerdefinierten Kette oder eines der speziellen Werte sein können ACCEPT, DROP[, REJECT], QUEUEoder RETURN.

  • ACCEPT bedeutet, das Paket durchzulassen.
  • DROP bedeutet, das Paket auf den Boden fallen zu lassen, dh es zu verwerfen und keine Antwort zu senden
  • [ REJECTwird verwendet, um ein Fehlerpaket als Antwort auf das übereinstimmende Paket zurückzusenden. Andernfalls entspricht DROPes einem abschließenden TARGET und beendet die Regelüberquerung.]
  • QUEUE bedeutet, das Paket an den Userspace weiterzuleiten.
  • RETURNbedeutet, dass Sie das Durchlaufen dieser Kette beenden und mit der nächsten Regel in der vorherigen (aufrufenden) Kette fortfahren. Wenn das Ende einer eingebauten Kette erreicht ist oder eine Regel in einer eingebauten Kette mit Ziel RETURNübereinstimmt, bestimmt das von der Kettenrichtlinie angegebene Ziel das Schicksal des Pakets.

Als Antwort auf Ihr spezielles Anliegen würde ich sagen, dass Ihr Leitfaden irreführend ist. Sofern "zugeordnete Aktion" keine der fünf Terminalaktionen ist, werden Pakete weiterhin durch die Kette geleitet, bis sie RETURNam Ende eine implizite erreichen .

Roaima
quelle
Ich würde diese Antwort mehr als einmal positiv bewerten, wenn ich könnte.
JakeRobb
Beachten Sie, dass die Standardaktion für benutzerdefinierte Ketten RETURN ist.
splitter
@stark ist das nicht, was der letzte Satz sagt?
Roaima
1
Ah, jetzt verstehe ich DROP besser. Das erklärt, warum ich auch unter diesem Schreibtisch keine Beinfreiheit habe.
Jonathan Neufeld