mod_limitipconn.c に LocalIP ディレクティブ追加のパッチをあててインストールするメモ

Debian GNU/Linux 6.0 において、Apache 2.2 に「mod_limitipconn.c」とそれに LocalIP ディレクティブを追加するパッチを当ててインストールするメモです。

以前書いたエントリと内容が重複しますが、もうちょっと丁寧に書きたいと思います。

ちなみに、「mod_limitipconn.c」とは、同一 IP アドレスからの接続制限を行うモジュールで、パッチを当てることにより、特定 IP アドレスからは一切制限しない、という設定が可能になります。

  • あらかじめ該当のマシンで、ビルドに必要なパッケージをインストールします。

    # apt-get install build-essential apache2-prefork-dev

  • mod_limitipconn.c」のサイトよりソースをダウンロードします。なお、ファイル名などは変更になることもあり得るので、必ず公式ページにて確認して下さい。

    $ wget "http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2"

  • 次に同ページで公開されている「LocalIP」ディレクティブを追加するためのパッチをダウンロードします。

    $ wget "http://dominia.org/djao/limit/contrib/dg/mod_limitipconn_local_IP_patch_2.diff"

  • 展開します。

    $ tar xfvpj mod_limitipconn-0.24.tar.bz2

  • 展開したディレクトリに入ります。

    $ cd mod_limitipconn-0.24

  • 「LocalIP」ディレクティブを追加するためのパッチを当てます。

    $ patch < ../mod_limitipconn_local_IP_patch_2.diff

  • Make ファイルの「APXS」と「APACHECTL」の項目を以下のように修正します。

    APXS=/usr/bin/apxs2
    APACHECTL=/usr/sbin/apachectl

  • root 権限にてビルドとインストールを行います。

    # make install

    自動的に、limitipconn のモジュール読み込みファイルが /etc/apache2/mods-available/limitipconn.load に作成され、かつこのファイルのシンボリックリンクが /etc/apache2/mods-enabled/limitipconn.load に作成されます。

    つまり、この時点で Apache2 を再起動すると、モジュールが読み込まれます。


さて、mod_limitipconn.c の設定例としては以下のようになります。

  1. 同一 IP アドレスからの接続数は 20 までに制限。
  2. ただし、MIME タイプが image/* (画像) 、text/css (CSS ファイル) 、application/javascript (JavaScript ファイル) には制限をかけない。
  3. さらに、IPv4 アドレス 127.0.0.1 および 192.0.0.1 、IPv6 アドレス ::1 および 2001:DB8:1::1 からの接続については、接続数制限は行わない。

上記のような場合は、該当のバーチャルホストなどにおいて、以下のような設定を追加して、Apache2 を再起動します。

<Location />
	<IfModule mod_limitipconn.c>
		MaxConnPerIP 20
		LocalIP 127.0.0.1 192.0.0.1 ::1 2001:DB8:1::1
		NoIPLimit image/* text/css application/javascript
	</IfModule>
</Location>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です