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