Au premier abord, ipchains et iptables semblent assez similaires. Les deux méthodes de filtrage de paquets font appel à des chaînes de règles actives à l'intérieur du noyau Linux pour décider non seulement du type de paquets autorisés à entrer ou sortir du système, mais également du traitement des paquets qui répondent à certaines règles. Cependant, la commande iptables représente une manière plus flexible de filtrer les paquets en donnant à l'administrateur système un degré de contrôle plus élevé sans pour autant ajouter un degré plus élevé de complexité.
Ainsi, les utilisateurs à l'aise avec la commande ipchains devront tenir compte des différences importantes existant entre les commandes ipchains et iptables avant d'essayer de se servir de iptables:
Sous iptables, chaque paquet filtré est traité en utilisant les règles d'une seule chaîne, plutôt que celles de chaînes multiples. Par exemple, un paquet identifié comme FORWARD pénétrant dans un système à l'aide de ipchains devrait passer à travers les chaînes INPUT, FORWARD et OUTPUT afin de pouvoir poursuivre sa progression vers sa destination. Toutefois, iptables envoie les paquets uniquement à la chaîne INPUT s'ils sont destinés au système local et vers la chaîne OUTPUT, s'ils ont été créés par le système local. Pour cette raison, il très important de bien placer la règle destinée au contrôle d'un paquet spécifique dans la bonne règle qui détectera vraiment le paquet.
La cible DENY a été remplacée par la cible DROP. Dans ipchains, les paquets qui satisfaisaient les critères d'une règle dans une chaîne pouvaient être dirigés vers la cible DENY. Cette cible doit être substituée par une cible DROP iptables.
Lorsque des options sont placées dans une règle, l'ordre de placement est primordial. Auparavant, avec ipchains, cet ordre d'écriture importait peu. La commande iptables elle, utilise une syntaxe plus stricte. Par exemple, dans les commandes iptables le type de protocole (ICMP, TCP ou UDP) doit être précisé avant de spécifier les ports d'origine ou de destination. ports.
Lorsque le type d'interface réseau à utiliser dans une règle doit être précisé, seules des interfaces d'entrée (option -i) peuvent être employées avec les chaînes INPUT ou FORWARD et des interfaces de sortie (option -o) avec les chaînes FORWARD ou OUTPUT. Ceci est nécessaire d'une part parce que les chaînes OUTPUT ne sont plus utilisées par les interfaces d'entrée et d'autre part, parce que les chaînes INPUT ne sont pas vues par les paquets se déplaçant au travers des interfaces de sortie.
Les précisions ci-dessus ne constituent en aucun cas une liste compréhensive des changements apportés; en effet, iptables représente fondamentalement un filtre réseau réécrit. Pour obtenir des informations plus spécifiques, reportez-vous au Linux 2.4 Packet Filtering HOWTO qui se trouve dans Section 16.5 Sources d'informations supplémentaires.