ipchains - ぷちWiki

最終更新日時:

ipchainsとは



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

基本概念



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

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

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

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

使用例



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

設定内容の表示



 # 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 は無くても大丈夫ですが念のため。