Iptables

iptablesは、Linuxに実装されたパケットフィルタリングおよびネットワークアドレス変換 (NAT) 機能であるNetfilter(複数のNetfilterモジュールとして実装されている)の設定を操作するコマンドのこと。Netfilterは、いわゆるファイアウォールルータとしての役割を果たす。IPv4 用の実装が iptables で、IPv6 用の実装が ip6tables である。

Linuxのバージョンとパケットフィルタ

Flow of network packets through Netfilter

Linuxカーネル2.4以降では、Netfilterというパケット処理のためのフレームワークをもっており、これの設定を操作するツールがiptablesである。

Linuxカーネル2.2系列以前ではipchainsまたはipfwadmといった実装が使われていた。netfilterとiptablesはこれらを完全に置き換えるものである。

iptablesの構成

iptablesでは、フィルタリングする対象を選ぶ「テーブル」と、各テーブルにおいて、どのタイミングで処理するかを示す「チェイン」で構成されている。

  • filterテーブルはパケットの出入り自体を制御できる
  • natテーブルはパケットの中身を書き換えることを制御できる、主にネットワークアドレス変換やIPマスカレード(LinuxのNAPT実装)向けに用いられる。

filterテーブルでは、初期状態で次のチェインが用意されている。

  • パケットが入る際に利用するINPUTチェイン
  • パケットが出ていく際に利用するOUTPUTチェイン
  • インターフェース間をまたぐ際に利用するFORWARDチェイン

natテーブルでは、主にパケットを書換えるタイミングに影響する次のチェインが用意されている。これらのチェインは管理者であれば自由に追加、削除が可能となっている。

  • PREROUTINGチェイン
  • POSTROUTINGチェイン

チェインの編集

iptablesは各テーブル内のチェインを書換えることにより、パケットフィルタリングができる。

パケットフィルタリングの例

チェインを編集するには例えば、次のようにiptablesコマンドを用いる。

iptables -t filter -I INPUT -p tcp -s 123.123.123.123 --dport 80 -j DROP
  • -t filter でfilterテーブルを操作
  • -I INPUT でINPUTチェインに追加(-Iでチェイン内ルールの先頭に、-Aで末尾に)
  • -p tcp でTCPプロトコル限定
  • -s 123.123.123.123 で送信元IPアドレスを指定、
  • --dport 80 で 80番ポート(80/tcp = http)を指定
  • 上記ルールにマッチしたパケットを-j DROPで破棄

まとめるとfilterテーブルのINPUTチェインの先頭に以下のルールを追加:IP 123.123.123.123から80/tcp(http)に入ろうとしているパケットは送信元(123.123.123.123)に通知することなく破棄(DROP)ということになる。

ネットワークアドレス変換の例

下記の例で、例えば、LAN内に 192.168.0.10:8080 で公開しているウェブサーバーがあり、それを 80 番ポートで公開することが出来る。

iptables --table nat --append PREROUTING --protocol tcp --destination-port 80 \
  --jump DNAT --to-destination 192.168.0.10:8080

関連項目

外部リンク

  • Man page of iptables (JM Projectによる日本語訳)
  • Man page of ip6tables
  • Man page of iptables-extensions
  • Iptablesチュートリアル
  • 表示
  • 編集
Linux
アプリ
ディストロ
  • Endian Firewall(英語版)
  • IPFire(英語版)
  • LEDE(英語版)
  • OpenWrt
  • SmoothWall(英語版)
  • Untangle(英語版)
  • Zeroshell(英語版)
BSD
アプリ
ディストロ
  • m0n0wall(英語版)
  • OPNsense(英語版)
  • pfSense
  • SmallWall
macOS
  • Little Snitch(英語版)
  • NetBarrier X4(英語版)
  • PeerGuardian(英語版)
  • VirusBarrier X6
Windows
商用
フリーミアム
オープンソース
  • PeerBlock(英語版)
  • PeerGuardian(英語版)
アプライアンス
  • ファイアウォールの比較(英語版)
  • ルーター・ファイアウォールディストリビューションの一覧(英語版)
典拠管理データベース: 国立図書館 ウィキデータを編集
  • ドイツ