クラウドフレア利用時に本当のアクセス元IPを取得する方法

クラウドフレア利用時に本当のアクセス元IPを取得する方法 プログラミング
クラウドフレア利用時に本当のアクセス元IPを取得する方法

インターネットのサイバー攻撃や悪戯などから、実際のサーバーのIPアドレスを公開したくなく、Webサイトを守るため『クラウドフレア』を導入しているサイトは多くなっていると思います。

ただ『クラウドフレア』を初期状態で利用すると、サーバーにアクセスされるIPアドレスが正しいIPアドレスではございません。正しくは『クラウドフレア』のIPとしてアクセスされてきます。

そんな場合、どのように本当のアクセス元IPを取得するか、今回はご説明させて頂きます。(この記事ではソースからインストールされたapache、およびphpを使った説明となります。)

このブログは現役のエンジニア(プログラマー歴が約12年)の僕(よしたか)が2019年12月後半から日々更新しております。

もしもアフィリエイトは会員登録後も無料です!
今すぐ会員登録してアフィリエイトを始めよう!

本当のアクセス元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アドレスはわからない
  • Linux等のサーバーがいじれる場合はモジュールを読み込む方がよい

いかがだったでしょうか。

『クラウドフレア』を導入だけしても本当のIPアドレスというのはわかりません。サーバー管理者でありましたら、このあたりも対応しておきたいものですね。

ちなみに、WordpressもLinuxも利用できるレンタルサーバーはエックスサーバーがオススメです。