mod_rpaf でオリジナルのクライアントのIPでアクセス制御できなくなってた原因


reverse proxy 配下にapache + mod_rpaf を使っている状況で、以前はmod_rpaf で書き換えたクライアント(reverse proxyではない) のIPでアクセス制御が出来たと記憶していたが、はてぶで出来なかったとコメントもらった。

実際に最新のdebian / apache をsource から入れたところ、確かにクライアントのIPでアクセス制御できなかった。悩んでいてしばらく放置していたけど、ハートビーツの中の人の記事を読んで解決した。

結論: ipv6が有効な状態でbuildしたhttpdと本家のmod_rpaf (2008年で更新止まってる) を使うと、クライアントのIPでアクセス制御が出来ない。

というわけでこのあたりが修正されてgithubに上げられているmod_rpaf を利用させてもらえば解決した。


ちなみにnginxの場合は標準モジュールのrealip moduleを使えば良い。

./configure --with-http_realip_module
  • nginx.conf
set_real_ip_from   127.0.0.1;
set_real_ip_from   192.168.0.1/24;
real_ip_header     X-Forwarded-For;