概要 | |
ホストで送受信するIPv4のパケットのフィルタリングや,NAT(network address translation)を管理するためのコマンド。非常に多機能で複雑なコマンドのため,ここではfilterテーブルを使って自ホストあてに届くパケットをフィルタリングする場合の使い方についてのみ解説する。
iptablesの定義は「テーブル」単位で管理する。このテーブルは,パケットを制御する目的ごとにあり,iptablesコマンドではfilter,nat,mangleの三つのテーブルを用意している。このうち,filterテーブルはパケットの許可や破棄を設定するためのもので,パケットのフィルタリングのために使う。natテーブルは,パケットの送信元フィールドや,あて先フィールドを変更のために使う。mangleテーブルは,TTLの設定/変更やMARK付けなどパケットの内容を変更するために使う。つまり,パケットのフィルタリングにはfilterテーブルを使うことになる。
iptablesで設定したルールは,パケットが通過する途中のどこで適用するかという場所ごとに「チェーン」と呼ぶ単位でまとめておく。具体的にいうと,受信したパケットは,まず「PREROUTING」チェーンを通過してから,自分あてのパケットか他人あてパケットかを判断し,他人あての転送対象であるパケットならば「FORWARD」チェーンを通過してから,「POSTROUTING」チェーンを通過させて外部に転送する。一方,自分あてのパケットであれば,「INPUT」チェーンを通過させてからhttpデーモンやftpデーモンといった自分のプロセスに渡す。さらに,自分のプロセスで処理したあとに再び外部に送る必要があるパケットについては,「OUTPUT」チェーンを通過してから,やはり「POSTROUTING」チェーンを通過して外部に転送される。
ルールが,どのチェーンで適用されるかは,filter,nat,mangleの三つのテーブルごとに異なる。パケットをフィルタリングするfilterテーブルで設定した内容は,このうちのINPUT/OUTPUT/FORWARDの三つのチェーンを通過する際に適用される。つまり,パケットを転送するか,自分のプロセスに渡すか,自分のプロセスから出力するか,のいずれかの場合に,設定しておいたルールに適合するパケットがあった場合は,あらかじめ指定しておいたアクションをする。
ルールでは,対象パケットを判定する基準と,該当した対象パケットをどう取り扱うかといった動作(ターゲットと呼ぶ)を定義する。チェーンを通過するパケットが基準にマッチした場合はターゲットとして設定した動作が実行され,マッチしなかった場合は次のルールに渡される。ターゲットとして指定できる動作は,通過を許可,破棄,ログに記録,送信元に通知して破棄,次のルールに飛ばす,の5種類(これ以外にユーザー定義チェーン名も指定可能)。 なお,filter以外のテーブルについては,natテーブルで設定した内容はPREROUTING/OUTPUT/POSTROUTINGチェーンを,mangleテーブルで設定した内容はPREROUTING/INPUT/OUTPUT/FORWARD/POSTROUTINGチェーンを通過したときに適用される。 |
構文 | |
iptables [-t filter|nat|mangle] -コマンド [-オプション] |
利用環境 | |
Red Hat Linux, ○ (iptables-1.2.3-1にて確認) |
共通オプション | |||
|
コマンド | |||||||||||||||||||||||
|
オプション | |||||||||||||||||||||||
|
使用例1:全ての接続先からのICMPパケットを拒否する(クリックで詳細表示) | |
iptables -A INPUT -p icmp -j DROP |
使用例2:外部からのFTPを拒否する(クリックで詳細表示) | |
iptables -A INPUT -p tcp --dport 20 -j DROP iptables -A INPUT -p tcp --dport 21 -j DROP |
使用例3:iptablesの設定内容を保存する(クリックで詳細表示) | |
service iptables save |