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.

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.