ipchains

最終更新日時:2007-08-27 17:09:01
Linux系

ipchainsとは


ipchainsはLinux上でパケットフィルタリングの機能を提供します。
特定のIPからのパケットを拒否したり、NATしたりといったような時に使用します。
※現在は通常は後継のiptablesが使用されています。

基本概念


ipchains にはパケットフィルタリングのルールの鎖である「チェイン」という概念があり、デフォルトで次の3つのチェインが用意されています。

チェイン概要
input入ってくるパケット
output出ていくパケット
forward内部で中継するパケット


また、チェインに対する処理には基本的に次の3つがあります。

処理概要
ACCEPTパケットを許可する
DENYパケットを拒否する
MASQIP マスカレードを行う


使用例


以下では簡単な使用例を紹介します。

設定内容の表示


 # ipchains -nvL


-n は IP アドレスの名前解決を無効に、-v は詳細表示です。

パケットの拒否


以下の例では入ってくるパケット、中継するパケットを拒否します。
-P では指定されたチェインのポリシーを決めます。

 # ipchains -P input DENY
 # ipchains -P forward DENY


インターフェースの指定


-i でターゲットとなるインターフェイスの指定ができます。
以下の例では、loopback アドレスへ入ってくるパケットを許可します。

 # ipchains -A input -i lo -j ACCEPT


送信元(source)アドレスの指定


-i で送信元アドレスの指定ができます。
以下の例では、eth1 への 192.18.0.0/24 からのパケットを許可します。

 # ipchains -A input -s 192.168.0.0/24 -i eth1 -j ACCEPT


プロトコルの指定


-p でプロトコルの指定ができます。
以下の例では、ppp0 へのICMPのパケットを許可します。(ping を許可)

 # ipchains -A input -p ICMP -i ppp0 -j ACCEPT


送信先(destination)アドレスの指定


-d で送信先アドレスの指定ができます。
以下の例では、ppp0の1024 以上のポートに対して入ってきたパケットを TCP, UDP 共に許可します。

 # ipchains -A input -p TCP -d 0/0 1024: -i ppp0 -j ACCEPT
 # ipchains -A input -p UDP -d 0/0 1024: -i ppp0 -j ACCEPT


IPマスカレード


以下の例では、IPマスカレードを設定します。

 # ipchains -A forward -s 192.168.0.0/24 -j MASQ


FTPのIPマスカレード


FTPは特殊なプロトコル(ポート番号を2つ以上使用)なので、単純にIPマスカレードするだけではうまくいきません。
この解決には ip_masq_ftp モジュールの追加で対応します。

 # /sbin/depmod -q
 # /sbin/modprobe ip_masq_ftp


ちなみに、/sbin/depmod -q は無くても大丈夫ですが念のため。

お問い合わせは 掲示板 にて。