■ apache 2.4 にて mod_rpaf のインストール時に、下記のようなエラーが発生しました。
ちなみに、apache 2.2 ではパッチを当てずにインストールできますので、下記の手順のパッチあて
以外にてインストールが可能です。
# /usr/local/apache2/bin/apxs -i -c mod_rpaf-2.0.so mod_rpaf-2.0.c [/usr/local/src/mod_rpaf-0.6] /usr/local/httpd-2.4.2/build/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/httpd-2.4.2/include -I/usr/local/httpd-2.4.2/include -I/usr/local/httpd-2.4.2/include -c -o mod_rpaf-2.0.lo mod_rpaf-2.0.c && touch mod_rpaf-2.0.slo mod_rpaf-2.0.c: In function ‘rpaf_cleanup’: mod_rpaf-2.0.c:150: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_rpaf-2.0.c:151: error: ‘conn_rec’ has no member named ‘remote_addr’ mod_rpaf-2.0.c:151: warning: implicit declaration of function ‘inet_addr’ mod_rpaf-2.0.c:151: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_rpaf-2.0.c: In function ‘change_remote_ip’: mod_rpaf-2.0.c:164: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_rpaf-2.0.c:183: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_rpaf-2.0.c:186: error: ‘conn_rec’ has no member named ‘remote_ip’ mod_rpaf-2.0.c:187: error: ‘conn_rec’ has no member named ‘remote_addr’ mod_rpaf-2.0.c:187: error: ‘conn_rec’ has no member named ‘remote_ip’ apxs:Error: Command failed with rc=65536
mod_rpaf 自体、最終更新日時が古いので、そもそも apache 2.4 で動かないと予測もありましたが、
mod_rpaf-0.6.tar.gz 01-Jan-2008 22:42 8k
予想通り、コンパイルエラーが発生しました。
ネットにて調査してみると、うまく動作するパッチを作成してくださっている方がいらっしゃいました。
https://gist.github.com/2716030
こちらのパッチを当てると正常にコンパイルとインストールが成功しました。
手順をまとめると
■ mod_rpaf サイト
本家サイト
http://stderr.net/apache/rpaf/
Down 元
http://stderr.net/apache/rpaf/download/
■ ダウンロード
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
■ 解凍
tar zxvf mod_rpaf-0.6.tar.gz
■ ディレクトリ移動
cd mod_rpaf-0.6
■ パッチのダウンロード
git clone git://gist.github.com/2716030.git
■ パッチを当てる
patch < 2716030/mod_rpaf-2.0.c.patch
command not found: patch
patch コマンドがインストールされていない場合は、yum でインストール
yum install patch
■ README に従って下記を実行
/usr/local/apache2/bin/apxs -i -c mod_rpaf-2.0.so mod_rpaf-2.0.c
———————————————————————-
Libraries have been installed in:
/usr/local/httpd-2.4.2/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR’
flag during linking and do at least one of the following:
– add LIBDIR to the `LD_LIBRARY_PATH’ environment variable
during execution
– add LIBDIR to the `LD_RUN_PATH’ environment variable
during linking
– use the `-Wl,-rpath -Wl,LIBDIR’ linker flag
– have your system administrator add LIBDIR to `/etc/ld.so.conf’
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
———————————————————————-
chmod 755 /usr/local/httpd-2.4.2/modules/mod_rpaf-2.0.so
正常にインストールが完了
■ httpd.conf へ下記を追加します。
LoadModule rpaf_module modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 RPAFheader X-Forwarded-For
■ apache をリスタートします。
./apachectl restart
■ アクセスログの確認
tail -f access_log 等にて確認すると、
127.0.0.1 にて表記されていたところが、
173.245.xxx.xxx などのグローバルIPへ変わっています。