一見したところでは、ipchains と iptables は非常に似ているように思われます。どちらの方法でパケットフィルタリングを行っても、Linuxカーネル内で有効な規則のチェーンを使用して、指定された規則を満たすパケットの処理方法を決定します。しかし、iptables を使用するとより拡張性のある方法でパケットをフィルタリングできるので、管理者は複雑な作業をせずに、きめ細かい制御を行うことができます。
特に、ipchainsを使い慣れているユーザーは、次のようなipchainsとiptablesの著しい違いを認識してから、iptablesを使用してください。
iptables を使用すると、フィルタリングされた各パケットは、複数のチェーンではなく1つのチェーンからのみの 規則を使用して処理されます。例えば、ipchains を使用してシステムに入ってきた FORWARDパケットは、INPUT、FORWARD、OUTPUTの 各チェーンを通らないと送信先に進めません。ところが、iptables では、送信先がローカルシステムの場合はINPUTチェーンへ、ローカルシステムがパケットを生成した場合は OUTPUT チェーンのみにパケットが送信されます。この理由で、パケットを実際に調べる規則の中で特定のパケットを取り込む様に設計された規則を用意するのは重要なことになります。
DENYターゲットはDROPに変更されました。 ipchains では、チェーン内の規則に一致したパケットは DENYターゲットに送られます。このターゲットは iptablesの元では DROP に変更されなければいけません。
規則の中でオプションを設置する時、その順番が大切です。 ipchainsでは規則のオプションの順序はあまり重要ではありませんでした。iptablesコマンドでは、もっと厳密な構文を使用します。iptablesコマンドの中のプロトコル(ICMP、TCP、UDP)は、送信元又は送信先のポートの前で指定する必要があります。
規則で使用するネットワークインターフェースを指定する場合、INPUTチェーンかFORWARDチェーンでは 着信インターフェース(-iオプション)、FORWARDチェーンかOUTPUTチェーンでは発信インターフェース (-oオプション)のみを使用する必要があります。 これは、着信インターフェースでは OUTPUTチェーンが使用されず、INPUTチェーンが発信インターフェースを通過するパケットによって見えないためです。
iptables は根本的には作り直されたネットワークフィルターなので、変更点はこれがすべてではありません。特定の詳細については、項18.7 にある Linux Packet Filtering HOWTO を参照してください。