Notice: file_put_contents(): Write of 184142 bytes failed with errno=28 No space left on device in /opt/frankenphp/design.onmedianet.com/app/src/Arsae/CacheManager.php on line 36

Warning: http_response_code(): Cannot set response code - headers already sent (output started at /opt/frankenphp/design.onmedianet.com/app/src/Arsae/CacheManager.php:36) in /opt/frankenphp/design.onmedianet.com/app/src/Models/Response.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /opt/frankenphp/design.onmedianet.com/app/src/Arsae/CacheManager.php:36) in /opt/frankenphp/design.onmedianet.com/app/src/Models/Response.php on line 20
iptables - Wikipedia コンテンツにスキップ

iptables

出典: フリー百科事典『ウィキペディア(Wikipedia)』
iptables
Screenshot of "iptables -vnL" in framebuffer
作者 ラスティ・ラッセル
開発元 Netfilter Core Team
初版 2001
最新版
1.8.11[1] ウィキデータを編集 / 2024年11月8日 (10か月前)
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
対応OS Linux
プラットフォーム Netfilter
種別 パケットフィルタリング
ライセンス GPL
公式サイト www.netfilter.org
テンプレートを表示

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

出典

[編集]
  1. ^ "[ANNOUNCE iptables 1.8.11 release"]; 閲覧日: 2024年11月10日; 出版日: 2024年11月8日.

関連項目

[編集]

外部リンク

[編集]