Il firewall di Linux, dal kernel 2.6 in poi si chiama Iptables, ed è incorporato nel kernel stesso (eventualmente caricato in tutto o in parte come moduli)
Il comando per gestire il firewall, si chiama anch'esso iptables (provate a leggerne le istruzioni con il comando man iptables)
Iptables prevede quattro tabelle, ognuna collegata ad un particolare tipo di operazione:
filter che gestisce il normale traffico dei pacchetti, senza modificarne il contenuto
nat per gestire appunto il NAT, nelle sue varie forme
mangle per modificare i parametri dei pacchetti (in realtà non la utilizzeremo)
raw per apportare modifiche ai pacchetti in casi particolari, il più presto possibile (non la useremo)
Ogni pacchetto viene inviato ad una sola catena per ogni tabella, viene inviato almeno alla tabella filter, ma può essere inviato a più di una tabella.
Se nel comando iptables non si indica il nome di una tabella con il parametro -t <nome_tabella>, la tabella utilizzata è la filter
Ognuna di queste tabelle possiede una serie di catene standard, per gestire i pacchetti nelle varie situazioni.
Si possono poi creare delle catene definite dall'utente, che possono venire richiamate come delle funzioni o procedure all'interno delle catene standard