A primera vista, ipchains y iptables parecen ser bastante similares. Ambos métodos de filtrado de paquetes usan cadenas de reglas operando dentro del kernel de Linux para decidir no sólo qué paquetes se permite entrar o salir, sino también qué hacer con los paquetes que cumplen determinadas reglas. Sin embargo, iptables proporciona un método mucho más extensible de filtrado de paquetes, proporcionando al administrador un nivel de control mucho más refinado sin tener que aumentar la complejidad del sistema entero.
Más concretamente, los usuarios que se encuentren cómodos con ipchains deberían tener cuidado con las siguientes diferencias significativas entre ipchains e iptables antes de utilizar iptables:
Bajo iptables, cada paquete filtrado se procesa únicamente usando las reglas de una cadena, en lugar de hacerse con múltiples. Por ejemplo, un paquete FORWARD que llega al sistema usando ipchains tendrá que pasar por las cadenas INPUT, FORWARD, y OUTPUT para llegar a su destino. Sin embargo iptables sólo envía paquetes a la cadena INPUT si su destino es el sistema local y tan sólo los envía a la cadena OUTPUT si el sistema local es quien genera los paquetes. Por esta razón, coloque la regla designada para interceptar un paquete particular en la regla que en verdad verá el paquete.
El objetivo DENY ha sido cambiado a DROP. En ipchains, los paquetes que coincidan una regla en una cadena podrían ser dirigidos al objetivo DENY. Este objetivo debe ser cambiado a DROP bajo iptables.
El orden es importante cuando se esten colocando opciones en una regla. Anteriormente, con ipchains, el orden de las opciones de una regla no importaba. El comando iptables usa una sintaxis estricta. Por ejemplo, en comandos iptables el protocol (ICMP, TCP, o UDP) debe ser especificado antes del puerto fuente o destino.
Cuando especificamos las interfaces de red que vamos a usar en una regla, deberemos utilizar sólo interfaces de entrada (opción -i) con cadenas INPUT o FORWARD y las de salida (opción -o) con cadenas FORWARD o OUTPUT. Esto es necesario debido al hecho de que las cadenas OUTPUT no se utilizan más con las interfaces de entrada, y las cadenas INPUT no son vistas por los paquetes que se mueven hacia las interfaces de salida.
Esta no es una lista completa de los cambios, dado que iptables representa un filtro de red re-escrito. Para información más especifica, consulte Linux 2.4 Packet Filtering HOWTO encontrado en Sección 16.5.