iptables i RETURN target

16

Nie rozumiem, co RETURNrobi cel w poleceniu iptables.

Wątpliwości pochodzą z tego przewodnika, w którym napisano:

Łańcuch to zestaw reguł, według których pakiet jest sprawdzany sekwencyjnie. Gdy pakiet pasuje do jednej z reguł, wykonuje powiązaną akcję i nie jest sprawdzany względem pozostałych reguł w łańcuchu.

Więc jeśli pakiet pasuje do reguły i przestaje sprawdzać inne reguły, dlaczego potrzebuję RETURN?

Na przykład znalazłem to w Internecie:

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;

Dlaczego muszę RETURN? Jeśli pakiet pasuje do pierwszej reguły, automatycznie przestaje wykonywać inne reguły.

zer0uno
źródło

Odpowiedzi:

34

Pakiety przechodzą łańcuch, dopóki nie uderzył ACCEPT, DROP, REJECT, lub RETURN. Nie zatrzymują się na meczu, chyba że mecz zawiera akcję kończącą. W twoim przykładzie pakiet pasujący do pierwszej reguły zostanie oznaczony, ale następnie zostanie sprawdzony (i prawdopodobnie przetworzony) przez drugą regułę.

Tylko w celach informacyjnych, oto odpowiednie sekcje ze strony man :

Reguła zapory określa kryteria dla pakietu i celu. Jeśli pakiet się nie zgadza, sprawdzana jest następna reguła w łańcuchu; jeśli się zgadza, następna reguła jest określona przez wartość celu, która może być nazwą łańcucha zdefiniowanego przez użytkownika lub jedną ze specjalnych wartości ACCEPT, DROP[, REJECT] QUEUElub RETURN.

  • ACCEPT oznacza przepuszczenie pakietu.
  • DROP oznacza upuszczenie pakietu na podłogę, tj. odrzucenie go i nie wysyłanie żadnej odpowiedzi
  • [ REJECTsłuży do odesłania pakietu błędów w odpowiedzi na dopasowany pakiet: w przeciwnym razie jest to równoważne, DROPwięc jest to TARGET kończący, kończący przejście reguły.]
  • QUEUE oznacza przekazanie pakietu do przestrzeni użytkownika.
  • RETURNoznacza zatrzymanie przemierzania tego łańcucha i wznowienie od następnej reguły w poprzednim (wywołującym) łańcuchu. Jeśli osiągnięty zostanie koniec wbudowanego łańcucha lub RETURNzostanie dopasowana reguła we wbudowanym łańcuchu z celem , cel określony przez zasadę łańcucha określa los pakietu.

W odpowiedzi na twoje szczególne obawy chciałbym powiedzieć, że twój przewodnik wprowadza w błąd. O ile „akcja powiązana” nie jest jedną z pięciu akcji terminalowych, pakiety będą przepływać przez łańcuch, aż na końcu dojdą do niejawnego RETURN.

roaima
źródło
Głosowałbym za odpowiedzią więcej niż raz, gdybym mógł.
JakeRobb
Warto zauważyć, że domyślną akcją dla łańcuchów zdefiniowanych przez użytkownika jest RETURN.
surowy
@stark to nie to, co mówi ostatnie zdanie?
roaima,
1
Ach, teraz lepiej rozumiem DROP. To wyjaśnia, dlaczego nie mam też miejsca na nogi pod tym biurkiem.
Jonathan Neufeld,