Iptables

iptablesは、Linuxに実装されたパケットフィルタリングおよびネットワークアドレス変換 (NAT) 機能であるNetfilter（複数のNetfilterモジュールとして実装されている）の設定を操作するコマンドのこと。Netfilterは、いわゆるファイアウォールやルータとしての役割を果たす。IPv4 用の実装が iptables で、IPv6 用の実装が ip6tables である。
Linuxのバージョンとパケットフィルタ.
Linuxカーネル2.4以降では、Netfilterというパケット処理のためのフレームワークをもっており、これの設定を操作するツールがiptablesである。
Linuxカーネル2.2系列以前ではipchainsまたはipfwadmといった実装が使われていた。netfilterとiptablesはこれらを完全に置き換えるものである。
iptablesの構成.
iptablesでは、フィルタリングする対象を選ぶ「テーブル」と、各テーブルにおいて、どのタイミングで処理するかを示す「チェイン」で構成されている。
filterテーブルでは、初期状態で次のチェインが用意されている。
natテーブルでは、主にパケットを書換えるタイミングに影響する次のチェインが用意されている。これらのチェインは管理者であれば自由に追加、削除が可能となっている。
チェインの編集.
iptablesは各テーブル内のチェインを書換えることにより、パケットフィルタリングができる。
パケットフィルタリングの例.
チェインを編集するには例えば、次のようにiptablesコマンドを用いる。
まとめると"filterテーブルのINPUTチェインの先頭に以下のルールを追加：IP 123.123.123.123から80/tcp(http)に入ろうとしているパケットは送信元(123.123.123.123)に通知することなく破棄(DROP)"ということになる。
ネットワークアドレス変換の例.
下記の例で、例えば、LAN内に 192.168.0.10:8080 で公開しているウェブサーバーがあり、それを 80 番ポートで公開することが出来る。
 iptables --table nat --append PREROUTING --protocol tcp --destination-port 80 \
 --jump DNAT --to-destination 192.168.0.10:8080