Kernel rozpoczyna pracę z trzema listami reguł w tabeli filtrującej; nazywane sa one łańcuchami ściany ogniowej, lub po prostu łańcuchami. Te trzy nazwane zostały INPUT (wejściowy), OUTPUT (wyjściowy) i FORWARD (przekazujący).
Dla fanów ASCII-art, łańcuchy ułożone są w następujący sposób: (UWAGA: Wygląda to zupełnie inaczej niż w kernelach 2.0 i 2.2!
_____
Incoming / \ Outgoing
-->[Decyzja ]--->|FORWARD|------->
[Rutingu ] \_____/ ^
| |
v ____
___ / \
/ \ |OUTPUT|
|INPUT| \____/
\___/ ^
| |
----> Proces lokalny ----
Trzy koła reprezentują trzy łańcuchy o których wspomniałem wyżej. Kiedy pakiet dociera do koła na diagramie, sprawdzany jest łańcuch reguł by zdecydować o losie pakietu. Jeśli łańcuch mówi że należy odrzucić (DROP) pakiet, jest on odrzucany tutaj, ale jeśli łańcuch mówi by zaakceptować pakiet (ACCEPT), kontynuuje on swoją podróż po diagramie.
Łańcuch to lista reguł. Każda reguła mówi 'jeśli nagłówek pakietu wygląda tak, to zrobimy z tym pakietem następującą rzecz'. Jeśli reguła nie pasuje do pakietu, sprawdzana jest następna. Na koniec, jeśli nie ma więcej reguł, kernel sprawdza politykę (ang. policy) danego łańcucha. W systemie w którym dba się o bezpieczeństwo, polityka mówi zwykle kernelowi by odrzucić (DROP) pakiet.