目次
- パケットフィルタリング
- チェイン
- テーブル
- iptablesコマンド
- iptablesの書式
- iptablesで使用される主なオプション
- iptablesで使用される主なターゲット
パケットフィルタリングとは?
TCP/IPでは、ネットワーク上を流れる情報はパケット単位で伝送されます。カーネルが処理するパケットの情報を調べて不要なパケットを通過させたり遮断したりすることをパケットフィルタリングと言います。
パケットフィルタリングは基本的に、入力(INPUT)、出力(OUTPUT)、転送(FORWARD)の3か所で行います。それぞれをINPUTチェイン、OUTPUTチェイン、FORWARDチェインと言います。
パケットフィルタリングやNAT(ネットワークアドレス変換)の設定を行う機能及びコマンドがiptablesです。Linuxカーネルにはnetfilterというパケット処理機能が組み込まれていて、iptablesはこれを利用します。
iptablesを正しく使用する為には、テーブルやチェインと言った概念を理解する必要があります。
チェイン
チェインとは、パケットの処理方法を定義したルール群です。チェインは、パケットを検査するための一連のルールセットのことで、それらのチェインに新しいルールを追加したり、あるいはカスタムチェインを追加したりして設定します。ネットワークインターフェースを通過するパケットは、それぞれのチェインのルールに適合するか検査され、その結果破棄されたり、通貨が許可されたりします。
INPUT
ローカルホスト宛のパケットに対してルールを適用します。
OUTPUT
ローカルホストで生成されたパケットに対してルールを適用します。
FORWARD
ローカルホストを経由するパケットに対してルールを適用します。
PREROUTING
入ってきたパケットを経由するパケットに対してルールを適用します。
POSTROUTING
出ていくパケットの内容を書き換える為にルールを適用します。
テーブル
いくつかのチェインのセットをテーブルと言います。テーブルとは、iptablesで作成するルール群の使用目的を決定するものです。ルールを作成する際に指定したテーブルによって、デフォルトで使用できるチェインやアクションに制限がかかるなど、ルールの使用目的(フィルタリング or NATなど)を明確化するために用意されています。
filter
パケットフィルタリング用(デフォルト)です。テーブル「filter」を指定した場合はINPUT、OUTPUT、FORWARDが使用できます。
nat
NAT用です。テーブル「nat」を指定した場合はOUTPUT、PREROUTING、POSTROUTINGが使用できます。
iptablesコマンド
iptablesとは、パケットフィルタリングやNATの設定を行う機能及びコマンドのことです。Linuxカーネルにはnetfilterというパケット処理機能が組み込まれていて、iptablesはこれを利用します。
iptablesコマンドの書式
iptablesコマンドの書式、および主なオプション、ターゲットは以下の通りです。
iptables {-t テーブル名} -A|D チェイン ルール
指定したチェインにルールを追加(-A)または削除(-D)
iptables {-t テーブル名} -P チェイン ターゲット
指定したチェインのポリシー(デフォルトとなるターゲット)を指定
iptables {-t テーブル名} -L|F|X {チェイン}
指定したチェインのルールを一覧表示(-L)、チェイン内のルールを全て削除(-F)、またはからのユーザー独自チェインを削除(-X)
iptables {-t テーブル名} -N チェイン
指定した名前のユーザー独自チェインを新規作成
iptablesで使用される主なオプション
-s IPアドレス
送信元のIPアドレスを指定
-d IPアドレス
送信先のIPアドレスを指定
–sport ポート番号
送信元のポート番号を指定
–dport ポート番号
送信先のポート番号を指定
-p プロトコル
プロトコルを指定(tcp、udp、icmp、all)
-i インターエース名
受信するインターフェースを指定
-o インターフェース名
送信するインターフェースを指定
-j ターゲット
適用するターゲットを指定
iptablesで使用される主なターゲット(アクション)
ターゲット | 説明 |
ACCEPT | 通過を許可 |
DROP | 破棄 |
REJECT | 拒否(送信元に通知) |
MASQUERADE | 送信元IPアドレスと送信元ポート番号を変更 |
SNAT | 送信元IPアドレスを指定したIPアドレスに変更。(送信元ポート番号は必要があれば変更する) |
LOG | ログに記録 |