Jak przechodzą tabele i łańcuchy iptables

22

Wiem, że linux ma 3 wbudowane tabele, a każda z nich ma swoje własne łańcuchy:

FILTR : WSTĘPNE, DO PRZODU, POSTROUTOWANIE

NAT : PREROUTING, WEJŚCIE, WYJŚCIE, POSTROUTOWANIE

MANGLE : WSTĘPNE , WEJŚCIE, DO PRZODU, WYJŚCIE, POSTROUTOWANIE

Ale nie rozumiem, w jaki sposób są one przemierzane, w jakiej kolejności, jeśli tak jest. Na przykład, w jaki sposób są one trawersowane, gdy:

  1. Wysyłam pakiet do komputera w tej samej sieci lokalnej
  2. kiedy wysyłam pakiet do komputera w innej sieci
  3. kiedy brama odbiera pakiet i musi go przekazać
  4. kiedy otrzymam pakiet przeznaczony dla mnie
  5. każdy inny przypadek (jeśli występuje)
zer0uno
źródło

Odpowiedzi:

28

Wikipedia ma świetny schemat pokazujący kolejność przetwarzania.

Aby uzyskać więcej informacji, możesz także przejrzeć dokumentację iptables, w szczególności rozdział dotyczący tabel i łańcuchów . Który obejmuje również schemat blokowy .

Kolejność zmienia się w zależności od tego, jak używany jest filtr sieciowy (jako filtr pomostowy lub sieciowy oraz od tego, czy ma on interakcję z warstwą aplikacji).

Ogólnie (chociaż w szczegółach w powyższym rozdziale znajduje się więcej diabłów) łańcuchy są przetwarzane w następujący sposób:

  • Zobacz łańcuch INPUT jako „ruch przychodzący z zewnątrz do tego hosta”.
  • Zobacz łańcuch FORWARD jako „ruch, który używa tego hosta jako routera” (źródłem i celem nie jest ten host).
  • zobacz łańcuch WYJŚCIA jako „ruch, który ten host chce wysłać”.
  • PREROUTING / POSTROUTING ma różne zastosowania dla każdego z typów tabel (na przykład dla tabel nat, PREROUTING jest dla ruchu przychodzącego (trasowanego / przekazywanego) SNAT, a POSTROUTING jest dla ruchu DNAT wychodzącego (trasowanego / przekazywanego). Więcej informacji znajdziesz w dokumentacji specyfika.

Różne tabele to:

  • Mangle polega na zmianie pakietów (rodzaj usługi, czas życia itp.) Podczas przechodzenia.
  • Nat ma wprowadzić reguły NAT.
  • Raw ma być używany do oznaczania i śledzenia połączeń.
  • Filtr służy do filtrowania pakietów.

Więc dla twoich pięciu scenariuszy:

  1. Jeśli host wysyłający host z iptables, OUTPUT
  2. Tak samo jak powyżej
  3. Łańcuch FORWARD (pod warunkiem, że brama jest hostem z iptables)
  4. Jeśli „ja” to host z iptables, INPUT
  5. Spójrz na powyższe reguły łańcucha (która jest ogólną zasadą) i schemat blokowy (i to zależy również od tego , co próbujesz osiągnąć za pomocą IPTables)
Drav Sloan
źródło
Ostatnio też natknąłem się na ten link - stuffphilwrites.com/2014/09/iptables-processing-flowchart . Jest tam ładny schemat blokowy autorstwa Phila Hagena.
slm
1
Kolejny dobry zasób - digitalocean.com/community/tutorials/… .
slm