iptables presenta un modulo che permette agli amministratori di controllare e limitare i collegamenti ai servizi disponibili su di una rete interna, usando il metodo chiamato connection tracking. Tale metodo conserva i collegamenti per mezzo di una tabella, la quale fa si che gli amministratori siano in grado di permettere o rifiutare l'accesso in base ai seguenti stati:
NEW — Un pacchetto che richiede un nuovo collegamento, come ad esempio una richiesta HTTP.
ESTABLISHED — Un pacchetto facente parte di un collegamento già esistente.
RELATED — Un pacchetto richiede un nuovo collegamento ma è parte di un collegamento esistente, come ad esempio i collegamenti FTP passivi, dove la porta di collegamento è la porta 20, ma quella di trasferimento può essere qualsiasi porta non utilizzata che vada da 1024 in sù.
INVALID — Un pacchetto non facente parte ad alcun collegamento presente nella tabella di controllo.
Potete utilizzare la funzionalità stateful del connection tracking di iptables, con qualsiasi protocollo di rete, anche se lo stesso protocollo è di tipo 'stateless' (come ad esempio UDP). Il seguente esempio mostra una regola che utilizza il connection tracking per inoltrare solo i pacchetti associati con un collegamento esistente:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ALLOW |