iptables とは、Linux に実装されたパケットフィルタリング型のファイアウォール機能です。パケットフィルタリングルールやアドレス変換ルールを適用することができます。今回は、用語の解説からコマンドの使用方法など基礎部分について簡単に解説します。
スポンサーリンク
目次
ファイアウォールの主な機能
パケットフィルタリング
送られてきたパケットを検査して設定した条件に該当する場合、設定したアクション(通過、遮断、転送)を実行します。
アドレス変換
送られてきたパケットを検査して設定した条件に該当する場合、パケットの宛先アドレスや送信元アドレスを別のアドレスに書き換えます。
テーブルとチェイン
テーブル
チェインをグループ化したものを「テーブル」と呼びます。3つのテーブルが用意されています。
テーブル名 | 説明 |
---|---|
filter | パケットのフィルタリングに使用 |
nat | アドレス変換に使用 |
mangle | パケットをNAT以外の目的で置き換えるときに使用 |
チェイン
パケットを検査する条件をリスト化したものを「チェイン」と呼びます。組込みチェインには下表のものがあります。
チェイン名 | 説明 |
---|---|
INPUT | 入力(受信)パケットのチェイン |
OUTPUT | 出力(送信)パケットのチェイン |
FORWARD | 転送パケットのチェイン |
PREROUTING | 受信時に変換するチェイン |
POSTROUTING | 送信時に変換するチェイン |
テーブルとチェインの関係
各テーブルで利用できるチェインは、下表のようになります。
テーブル名 | filter | nat | mangle |
---|---|---|---|
利用できるチェイン | FORWARD | PREROUTING | PREROUTING |
INPUT | POSTROUTING | OUTPUT | |
OUTPUT | OUTPUT |
iptables コマンドのオプション
構文
iptables [-t テーブル] [コマンド] [チェイン] [条件] [ターゲット]
テーブル
目的に一致するテーブルを指定します。省略時は、「filter」が指定されます。
テーブル名 | 説明 |
---|---|
filter | パケットフィルタリング |
nat | アドレス変換 |
mangle | パケット内容の変更 |
コマンド
チェインを操作するコマンドの代表的なオプションです。
オプション | 意味 | 説明 |
---|---|---|
-A | Append | チェインにルールを追加 |
-D | Delete | チェイン内の指定したルールを削除 |
-P | Policy | チェインのポリシーを指定したターゲットに設定 |
-N | New Chain | ユーザチェインを作成 |
-X | Delete Chain | ユーザチェインを削除 |
-L | List | ルールのリスト表示 |
チェイン
ルールを設定するチェインを指定します。指定したテーブルによって利用できるチェインが決まります。詳しくは、前項の「チェインとテーブル」を参照ください。
条件
- 代表的なオプション
- プロトコル拡張オプション
パケットを特定するための条件の代表的なオプションです。
オプション | 意味 | 説明 |
---|---|---|
-s address | Source | 送信元アドレス。IPアドレス、ホスト名で指定可能 |
-d address | Destination | 宛先アドレス。IPアドレス、ホスト名で指定可能 |
-p protocol | Protocol | プロトコル(tcp、udp、icmp、all) |
-i name | In Interface | パケットが入ってくるインターフェース |
-o name | Out Interface | パケットが出ていくインターフェース |
-j terget | Jump | 条件にマッチした時のアクション |
プロトコルにTCP、UDP パケットを指定した場合は、以下の拡張オプションを指定できます。
オプション | 意味 | 説明 |
---|---|---|
--sport | Source Port | 送信元のポート番号 |
--dport | Destination Port | 宛先のポート番号 |
ターゲット
ターゲットの代表的なアクションです。前述した条件 -j オプションの後に指定します。
アクション | 説明 |
---|---|
ACCEPT | パケットの通過を許可 |
DROP | パケットを破棄 |
REJECT | パケットを破棄して、破棄した旨の ICMPメッセージを送信元に返す |
LOG | ログを記録 |
SNAT | 送信元アドレスの変換 |
DNAT | 宛先アドレスの変換 |
ルールの設定例
送信元アドレスが 192.168.10.0/24 の受信を拒否するルールを追加
$ /sbin/iptables -A INPUT -s 192.168.10.0/24 -j DROP
送信元アドレスが 192.168.10.0/24 で プロトコルがTCP 宛先ポートが 20000番のパケットを許可
$ /sbin/iptables -A INPUT -p tcp --dport 20000 -s 192.168.10.0/24 -j ACCEPT
インターフェース eth0 で受信した送信先アドレスが 172.16.1.10 の場合、192.168.1.10 に 転送
$ /sbin/iptables -t nat -A PREROUTING -d 172.16.0.10 -i eth0 -j DNAT --to 192.168.0.10