A prima vista, ipchains e iptables risultano piuttosto simili. Entrambi i metodi di filtraggio dei pacchetti si servono di una serie di regole che operano all'interno del kernel di Linux per decidere cosa fare con i pacchetti che corrispondono alla regola specificataoppure ad un set di regole. Tuttavia, iptables offre un modo molto più estensibile per filtrare i pacchetti, fornendo all'amministratore un livello di controllo maggiore senza, però, aggiungere eccessiva complessità al sistema.
Se avete familiarità con ipchains, prima di avventurarvi nell'utilizzo di iptables assicuratevi di avere ben presenti le seguenti importanti differenze tra i due metodi:
Sotto iptables, ogni pacchetto filtrato viene elaborato usando le regole di una sola catena invece di catene multiple. Per esempio, un pacchetto FORWARD che entra in un sistema usando ipchains deve passare attraverso le catene INPUT, FORWARD e OUTPUT per poter arrivare a destinazione. iptables, invece, invia i pacchetti alla catena INPUT solo se sono destinati al sistema locale e li invia alla catena OUTPUT solo se sono stati generati dal sistema locale. Per questa ragione, è importante posizionare la regola creata per catturare un pacchetto particolare, all'interno della regola che gestisce il pacchetto.
Il target DENY è stato cambiato in DROP. In ipchains, ai pacchetti che soddisfavano una certa regola di una catena poteva essere assegnato il target DENY per fare in modo che venissero abbandonati. Per ottenere lo stesso effetto in iptables è stato necessario cambiare il target in DROP.
L'ordine è importante quando si devono collocare delle opzioni a una regola. In precedenza, con ipchains, quando si digitava una regola, l'ordine che veniva assegnato alle varie opzioni non aveva molta importanza. Il comando iptables, invece, è un po' più esigente da questo punto di vista. Per esempio, nei comandi iptables dovete specificare la porta sorgente o di destinazione prima aver specificato il protocollo (ICMP, TCP o UDP).
Quando specificate le interfacce di rete da associare a una regola, dovete usare solo interfacce di ingresso (opzione -i) con le catene INPUT o FORWARD e solo interfacce di uscita (opzione -o) con le catene FORWARD o OUTPUT. Questo è necessario in quanto le catene OUTPUT non vengono più utilizzate dalle interfacce di ingresso e le catene INPUT non interessano i pacchetti che si muovono attraverso le interfacce di uscita.
Questo elenco presenta solo una parte dei cambiamenti apportati, anche perchè il filtro iptables è stato sostanzialmente riscritto. Per informazioni più specifiche, consultate Linux 2.4 Packet Filtering HOWTO in la Sezione 17.7.