インターネットのサイバー攻撃や悪戯などから、実際のサーバーのIPアドレスを公開したくなく、Webサイトを守るため『クラウドフレア』を導入しているサイトは多くなっていると思います。
ただ『クラウドフレア』を初期状態で利用すると、サーバーにアクセスされるIPアドレスが正しいIPアドレスではございません。正しくは『クラウドフレア』のIPとしてアクセスされてきます。
そんな場合、どのように本当のアクセス元IPを取得するか、今回はご説明させて頂きます。(この記事ではソースからインストールされたapache、およびphpを使った説明となります。)
もしもアフィリエイトは会員登録後も無料です!
今すぐ会員登録してアフィリエイトを始めよう!
本当のアクセス元IPを取得する一番手っ取り早い方法
このやり方はphpを使った一番手っ取り早いやり方となります。(Linux等のサーバーがいじれない場合は、このやり方がいいでしょう。)
<?php
if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
?>
Webページの一番最初に上記のような記載をする事により、プログラム上でアクセス元IPを取得する場合によく使われる、
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
こちらに本当のIPアドレスが格納されます。
ただし、こちらの場合ではapacheのアクセスログに残るIPアドレスは本当のIPアドレスにはなりません。(クラウドフレアのIPのまま)
apacheのモジュールを利用してアクセス元IPを取得する方法
このやり方の場合、プログラム上はもちろんapacheのアクセスログに残るIPアドレスも本当のIPアドレスになりますので、できればこちらのやり方の方がいいでしょう。
// mod_cloudflareモジュールの取得
cd /usr/local/src/
wget https://github.com/cloudflare/mod_cloudflare/archive/master.zip -O mod_cloudflare.zip
// mod_cloudflareモジュールの解凍
unzip mod_cloudflare.zip
// mod_cloudflareモジュールを読み込む
cd mod_cloudflare-master
/usr/local/apache/bin/apxs -a -i -c mod_cloudflare.c
// apacheの再起動
/usr/local/apache/bin/apachectl configtest
/usr/local/apache/bin/apachectl graceful
こうする事により、apacheのアクセスログに残るIPアドレスも、プログラム上で表示するアクセス元IPも、本当のIPアドレスになります。
いずれの方法も公式のHPに記載がありますので、是非参考にしてみてください。
https://support.cloudflare.com/hc/ja/articles/200170916-オリジナル訪問者IPを復元する-オプション1-mod-cloudflareのインストール
まとめ
いかがだったでしょうか。
『クラウドフレア』を導入だけしても本当のIPアドレスというのはわかりません。サーバー管理者でありましたら、このあたりも対応しておきたいものですね。
ちなみに、WordpressもLinuxも利用できるレンタルサーバーはエックスサーバーがオススメです。