iptables(8)

パケットフィルタリングを設定する

構文

iptables [サブコマンド] [パラメータ]

サブコマンド

-A, --append CHAIN RULEチェインCHAINにルールRULEを追加する
-D, --delete CHAIN RULEチェインCHAINからルールRULEを削除する
-D, --delete CHAIN RULENUMチェインCHAINからルール番号RULENUMを削除する
-I, --insert CHAIN RULENUM RULEルールRULEをチェインCHAINのルール番号RULENUM(デフォルトは1)の次に追加する
-R, --replace CHAIN RULENUM RULEチェインCHAINのルール番号RULENUMをRULEで置き換える
-L, --list [CHAIN]チェインCHAIN(省略した場合はすべて)のルールを一覧表示する
-S, --list-rules [CHAIN]チェインCHAIN(省略した場合はすべて)のルールを表示する
-F, --flush CHAINチェインCHAIN(省略した場合はすべて)のルールを削除する
-Z, --zero [CHAIN [RULENUM]]チェインCHAIN(およびルール番号RULENUM)のパケットとバイトカウントを0にする
-N, --new CHAIN新しくユーザー定義チェインCHAINを作成する
-X, --delete-chain [CHAIN]ユーザー定義チェインCHAINを削除する
-P, --policy CHAIN TARGETチェインCHAINのポリシーをTARGETとする
-E, --rename-chain OLDCHAIN NEWCHAINユーザー定義チェインの名前をOLDCHAINからNEWCHAINに変更する

主なパラメータ

!先頭に付けると「指定したパラメータ以外」となる
[!] -p, --proto PROTOCOLプロトコルPROTOCOLを指定する(tcp, udp, udplite, icmp, esp, ah, sctp, all)
[!] -s, --source ADDR[/MASK]送信元のアドレスADDR(およびネットマスクMASK)を指定する
[!] --sport PORT送信元のポートPORTを指定する
[!] -d, --destination ADDR[/MASK]宛先のアドレスADDR(およびネットマスクMASK)を指定する
[!] --dport PORT宛先のポートPORTを指定する
-j, --jump TARGETルールにマッチした場合の移動先をターゲットTARGETとする
-g, --goto CHAINチェインCHAINに移動する(戻りなし)
[!] -i, --in-interface INT入力ネットワークインターフェースINTを指定する(NAME+とするとワイルドカードとなる)
[!] -o, --out-interface INT出力ネットワークインターフェースINTを指定する(NAME+とするとワイルドカードとなる)
[!] -f, --fragment2つめ以降のフラグメントにのみマッチする
-c, --set-counters PACKETS BYTESパケットとバイトカウントをパケットPACKETS、バイトBYTESとして初期化する
-v, --verbose詳細に出力する
-n, --numeric名前解決せずIPアドレスやポートを数値で出力する
-t, --table TABLE操作するテーブルTABLEを指定する(デフォルトはfilter)
--line-numbersルールをリスト表示する際にルール番号で表示する
-m, --matchマッチングモジュールを利用する
-m, --match --state STATE接続状態STATE(INVALID, ESTABLISHED, NEW, RELATED)にマッチする
-x, --exact正確な数値を表示する

説明

カーネルの機能を利用してパケットフィルタリングを行う。パケットが通過する場所(チェイン)にルールを設定し、ルールにマッチしたパケットはターゲットに送られる。ターゲットには、ユーザー定義チェインの他、ACCEPT(許可)、DROP(破棄)、REJECT(拒否)、LOG(ログに出力)などがある。チェインのセットであるテーブルには、デフォルトのfilterテーブルの他、natテーブル、mangleテーブルがある。設定したルールを保存するにはiptables-saveコマンド、保存したルールを呼び出すにはiptables-restoreコマンドが利用できる。

使用例

INPUTチェインのポリシーをDROPに設定する。

# iptables -P INPUT DROP

送信元アドレスが10.0.0.1からのパケットを許可する。

# iptables -A INPUT -p tcp -s 10.0.0.1 -j ACCEPT

宛先ポート番号が80番ポートのパケットを許可する。

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT