How to build Internet Server with Linux

last update: 29 Sep 2004

home |index |previous |next |contents

ipchains-1.3.9のインストールと運用


"ipchain"はlinux 2.2系カーネルのファイアウォール設定用ツールで、 IPmasquerade機能を制御することもできます。

2.0系カーネルのIPmasquerade機能制御用である ipfwadmよりも非常に柔軟な設定が可能です。 例えば、ppp接続をしているときのみIPmasquerade機能を設定するなどの動的な設定もできるようです。 詳しくは参考文献を参照して下さい。

ここではIPmasquerade機能を実現する方法のみ説明します。

注意: ipchainsを使うには、IPmasqueradeに対応したkernelが必要です。 もしもkernelがIPmasqueradeに対応していない場合にはkernelの再コンパイルが必要となります。

再コンパイル時のコンフィギュレーションにおいて、少なくとも以下の項目が"yes"となっている必要があります:

CONFIG_FIREWALL=y
CONFIG_INET=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_MASQUERADE_ICMP=y
3.1 ソフトの入手
"ipchains"の最新版を入手します。以下のサイトから入手できます:
ftp://ftp.rustcorp.com/ipchains

3.2 インストール
ファイルを展開するディレクトリ$Workに移動して、バイナリパッケージを展開します。作業ディレクトリ$Workは任意のディレクトリです。
    % cd $Work/
    % gzip -cd ipchains-1.3.9.tgz | tar xvf -

次にディレクトリを移動して、"make all"と"make install"を行ないます。
    % cd $Work/ipchains-1.3.9
    % make all
    % su
    passwd: ****
    % make install

以上でipchainsのインストールが終りました。
3.3 運用
システム起動時にIPmasqueradeの設定を行なうように、/etc/rc.d/rc.inet2にipchainsコマンドを 追加しておきます。

記述規則は以下の通りです。

ipchains -[ADC] chain rule-specification [options]
ipchains -[RI] chain rulenum rule-specification [options]
ipchains -D chain rulenum [options]
ipchains -[LFZNX] [chain] [options]
ipchains -P chain target [options]
ipchains -M [ -L | -S ] [options]
     

機能が豊富であるぶん、記述方法も複雑です。


ここでは前例にならい、 内部ネットワーク192.168.1.0/24からのアクセスはすべて許可し、 それ以外のアクセス、例えば外部からのアクセスは拒否する場合について記述してみます。 以下の行を/etc/rc.d/rc.inet2に追加します。
IPCHAINS="/sbin/ipchains"

if [ -x $IPCHAINS ] ; then
	$IPCHAINS -P forward DENY
	$IPCHAINS -A forward -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQ
	echo 1> /proc/sys/net/ipv4/ip_forward
fi

/etc/rc.d/rc.inet2への追加行


note:


Redhat系ディストリビューションの場合、ipchainsの設定は"/etc/sysconfig/ipchains" に記述されます。 "setup"コマンドの[FireWallの設定]で簡単に設定する事も可能です。

以下に簡単な解説を行ないます。

基本的なコマンドとしては

などがあります。
ここで"chain"とは何かということになりますが、 正確にいえばフィルタリングルールの集合で、 ipchainsの全体像を把握しないと何をいわれているのか判りません。
ですから具体例で説明すると、フィルタリングルール(= chains)はデフォルトで"forward"、 "input"、"output"の3つが用意されていて、 となっています。
すると、
/sbin/ipchains -P forward DENY
     
というコマンドは、「(今まではどうか知らないが)ルーティングに関するルールを ひとまずすべて禁止(DENY)」します。

さて、では次の行について解説を進めましょう。

/sbin/ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQ
     

ここでは新しいルーティングルールを追加しています。いくつかのスイッチ(-s, -dなど)が 使われていますので、以下に説明します。

ということで、 上記のコマンドは「192.168.1.0/24というネットワークからのパケットはIPmasqueradeして 外部に中継」します。
スイッチをみると、プロトコル毎にIPmasquerade機能を設定できることが判ります。

最後の行ですが、

	echo 1> /proc/sys/net/ipv4/ip_forward
     
これは 2.2.x系カーネルのデフォルト設定であるパケットのフォワード禁止を 解除するためのものです。

以上、ipchainsでIPmasquerade機能を実現する方法を解説しました。

ipchainsの名の由来である"chain"については説明を省きました。 参考文献の"ipchains-mini-HOWTO.html"に非常に判りやすく説明されていますので、 是非一読して下さい。
3.4 参考文献
JFプロジェクトにコンパクトによくまとまったipchainsに関するmini-HowTo文書があります。

http://www.linux.or.jp/JF/Jfdocs/ipchains-mini-HOWTO.html
LDP(Linux Documentation Project)のサイトにipchainsに関するHOWTO文書があります。
http://metalab.unc.edu/mdw/HOWTO/IPCHAINS-HOWTO.html


home |index |previous |next |contents


since 04/Oct/2004