ホーム > フォーラム > 開発 > コア開発 > あらゆるリモートアドレスが自機サーバーとなるような環境でのXOOPS運用時

あらゆるリモートアドレスが自機サーバーとなるような環境でのXOOPS運用時
投稿者: Ujiki | 投稿日時: 2006/10/8 16:35 | 閲覧: 19111回
Ujiki
いつも大変お世話になっております。
どのモジュールも投稿者のIPアドレスが一定となる問題に直面しました。どこからの接続も同じIPアドレスが保存されます。投稿者のIPアドレスではなく、XOOPSが稼動しているサーバー側のIPアドレスでした!
それは、当方が利用しているWebサーバーが、
リバースプロキシーのキャッシング機能のためにREMOTE_ADDRが正常に取得出来ない環境」なのだそうです。むつかし
 そこで、何と、mainfile.php に、プチ・ハックすることにしました。
mainfile.php の末尾に、Protectorなりを呼び出しているので、えーい、mainfile.php の先頭に定義しました。

if($_SERVER['REMOTE_ADDR']!=""
	&& $_SERVER['HTTP_X_FORWARDED_FOR']!=""
	&& $_SERVER['REMOTE_ADDR']!=$_SERVER['HTTP_X_FORWARDED_FOR']){
 $HTTP_SERVER_VARS['REMOTE_ADDR'] = $REMOTE_ADDR = $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

 この処理後、WordPress-MEのトラックバック受信時の送信元のIPアドレスの記録だけでなく、XOOPSコメント登録者のIPアドレス、そしてログカウンターのIPに関するログが、初期仕様を満たせるようになりました。のぶのぶ様に感謝!

コメント(4)

本レポートを行う簡単なPHPスクリプトをアップしておきました。 
投稿者: Ujiki | 投稿日時: 2006/10/9 21:33
Ujiki
「リバースプロキシーのキャッシング機能のためにREMOTE_ADDRが正常に取得出来ない環境」を実証しましょう。Free Web Hosting Service - byethost.comの場合です。
上段の水色枠をご覧下さい。3段のIPアドレスは実は、全世界どこから接続しても同じIPアドレスになる。つまり、Free Web Hosting Service - byethost.comが稼動しているWebサーバー入り口へのグローバルIPアドレスです。

 そこで、全ての変数を上書きする。すると、当然、下段の黄色のようになります。これは接続元の、あなたのグローバルIPアドレスですね。

 それでは、気になるので、普通のWebサーバーでは、どうなるのか。Free Web Hosting Service - ABCオロチの場合です。全てが接続元の、あなたのグローバルIPアドレスですね。

 ┿━━━━━━━━━━━━━━━━━━━━━━━━━┷

 本レポートを行う簡単なPHPスクリプトをアップしておきました。
http://hamster.byethost31.com/modules/myalbum/photo.php?com_mode=thread&com_order=1&lid=28
2006年10月10日 07:30 現在、各IPアドレスから「 whois 」検索に飛べるように致しました。
2006年10月10日 19:30 現在、各変数の解に対して、gethostbyaddr関数、gethostbyname関数の解も列記させました。
ProtectorモジュールでIPによる拒否を有効にする場合に問題になりますかね。 
投稿者: Ujiki | 投稿日時: 2006/10/9 22:20
Ujiki
いつも大変お世話になっております。

「リバースプロキシーのキャッシング機能のためにREMOTE_ADDRが正常に取得出来ない環境」で、XOOPSをハックしないで、XOOPS標準でインストールして、Protectorモジュールを稼動すると・・・・「画面が白色になる」問題が起こるんではないのでしょうか?
 今後「わたしの(ぼくの)XOOPSが、突然、画面が白くなるんですが、救ってください!」発言には、この「リバースプロキシーのキャッシング機能のためにREMOTE_ADDRが正常に取得出来ない環境で、IPによる自動拒否を設定したのでは?」を調べる必要はないでしょうか?
 Protectorモジュールなどで、IPアドレスベースで自動拒絶するルーチンを採用しているモジュール等の場合、「リバースプロキシーのキャッシング機能のためにREMOTE_ADDRが正常に取得出来ない環境」でないかどうかを調べるPHPスクリプトが、管理者メニューに必須かも知れません。

 ふと、「XOOPSの画面が白くなる」原因にならないかと、思い付いた次第です。間違っていたら、削除申請致します。

【発展的な要望】:
 XOOPSのインストーラー段階で、
「リバースプロキシーのキャッシング機能のためにREMOTE_ADDRが正常に取得出来ない環境」でないかどうかを検証して、
全てのモジュールなりが正しくIPアドレスを取得できるように、
XOOPSのインストーラーが、mainfile.php などを自動的に調整(ハック)するように
ならないものでしょうか?

リンク: 本件、GIJOE様製、Protectorモジュールのコメントに投稿。
SERVER_NAMEなりHTTP_HOSTの戻り値がプライベートアドレスな場合 
投稿者: Ujiki | 投稿日時: 2006/10/11 7:56
Ujiki
いつも大変お世話になっております。
引用:
自己レスです:
 それでは、気になるので、普通のWebサーバーでは、どうなるのか。Free Web Hosting Service - ABCオロチの場合です。

 1.XOOPSへのURL欄は手打ちにもレポートしましたが、
LAN内のプライベートアドレスにフォワーディングしているWebサーバーだからでしょうか? SERVER_NAMEなりHTTP_HOSTの戻り値がプライベートアドレスな場合、XOOPSのインストール用のウィザードのままでは、必ずインストールに失敗します。『約 5 分でインストールでき、直ちに当サイトのような』は必ず達成できないですから、「XOOPSの運用は難しい!」などと発信されかねませんね。

※ なんとか、次世代XOOPSの標準的なインストールウィザードでは、「SERVER_NAMEなりHTTP_HOSTの戻り値がプライベートアドレスな場合」でも、正常にインストールできれば良いでしょうね。それか少なくとも「警告を表示する」なり、「How to ページ」に target=_BLANKで飛べるなりは初心者に対しても親切かと存じます。
もちろん現行バージョンでもお願い致します。
新リンク先 Re: 本レポートを行う簡単なPHPスクリプトをアップしておきました。 
投稿者: Ujiki | 投稿日時: 2007/10/10 16:03
Ujiki
リンク切れを直しておきます。無用とは感じながら、外乱済みません。

引用:
Ujikiは書きました:
 本レポートを行う簡単なPHPスクリプトをアップしておきました。
http://hamster.byethost31.com/modules/myalbum/photo.php?com_mode=thread&com_order=1&lid=28
2006年10月10日 07:30 現在、各IPアドレスから「 whois 」検索に飛べるように致しました。
2006年10月10日 19:30 現在、各変数の解に対して、gethostbyaddr関数、gethostbyname関数の解も列記させました。


http://hamster.fam.cx/modules/myalbum/photo.php?com_mode=thread&com_order=1&lid=28

です。

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top