【アイピーテーブルズ】

iptables とは?

最終更新:
💡 Linuxサーバーを守る門番の指示書

LinuxカーネルのIPv4パケット処理ルールを設定するコマンド。テーブルとチェーンにルールを追加し、通信の許可・破棄やアドレス変換などを設定する。IPv6用にはip6tablesがある。

📌 このページのポイント
filterテーブルの3つの経路INPUT外部このホストOUTPUTこのホスト外部FORWARD外部外部各チェーンで、ルールを順に評価
このホスト宛て・このホスト発・通過するパケットの経路を分けて示した図。3つを順番に通るわけではない。ACCEPTやDROPなど、処理の種類で評価の続き方が変わる。
ひよこ ひよこ
INPUT・OUTPUT・FORWARDって何が違うの?
ペンギン先生 ペンギン先生
標準のfilterテーブルでは、INPUTはこのホスト宛て、OUTPUTはこのホストが作ったパケット、FORWARDはこのホストを通過するパケットを扱うチェーンだよ。受信したものが全部INPUTを通るわけではない。宛先がこのホストか、別の場所へ転送するものかで経路が違うんだ。
ひよこ ひよこ
どうやってルールを追加するの?
ペンギン先生 ペンギン先生
たとえば `iptables -A INPUT -p tcp --dport 80 -j ACCEPT` は、filterテーブルのINPUT末尾に「TCPの宛先ポート80を許可する」ルールを追加するよ。`-A` は末尾への追加、`-p` はプロトコル、`--dport` は宛先ポート、`-j` は実行する処理の指定だ。これだけでWebサーバーが起動するわけではないよ。
ひよこ ひよこ
最初に一致したルールで、必ず処理が終わるの?
ペンギン先生 ペンギン先生
実行する処理によるよ。ACCEPTやDROPならその判定で終了するので、先にDROPされるパケットは後ろの許可ルールへ届かない。一方、ログを記録するLOGなど、その後の評価を続ける処理もある。条件だけでなく、順番と処理の種類を合わせて見ることが大切なんだ。
ひよこ ひよこ
設定したルールは、再起動後も残る?
ペンギン先生 ペンギン先生
コマンドで変更するだけでは、永続化したことにはならないよ。iptables-saveは現在のルールを出力し、iptables-restoreは保存した内容を読み込む。保存先や起動時に復元する仕組みは環境ごとに設定する必要があるので、利用しているディストリビューションや管理サービスを確認しよう。
ひよこ ひよこ
iptablesとnftablesは、どういう関係なの?
ペンギン先生 ペンギン先生
iptables-legacyは従来の仕組みを使い、iptables-nftはiptables形式のコマンドをnf_tablesの仕組みに反映するよ。同じiptablesという名前でも、どちらを使うかは環境による。nftコマンドへ移行するときは、すべてがそのまま互換とは限らないので、使っているバックエンドとルール内容を確認するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「iptables」って出てきたら「Linuxのファイアウォール設定コマンド」と思えればだいたいOK!
📖 おまけ:英語の意味
「IP Tables」 = IPパケットのルールをまとめるテーブル
💬 IPパケットを扱うルールを、テーブルとその中のチェーンにまとめて管理するよ。iptablesはIPv4用、ip6tablesはIPv6用のコマンドだ。フィルタリングのほか、NATなどのテーブルもあるんだ。

参考資料

← 用語集にもどる