1 頁 (共 1 頁)

[問題]ip錯亂

發表於 : 2005-09-14 00:35
ETERNAL
不知道有沒有人也遇到過這樣的情況
我網站上的管理員(包含我自己)有時候執行版面管理時
會遇到 "Invalid_session" 這樣的訊息\r
詭異的是有些人有遇到,有些人則是一次都沒遇到過(我在公司沒遇到過,但是在家裡卻常遇到)

在我無數次的實驗下,發現問題出在IP
正常的情況應該如第一張圖片所示\r
我的正確IP是218.166.116.217 , phpbb也正常抓到我正確的IP
$user_ip此時的參數值是daa674d9
圖檔

但是有時候發生下面這張圖的情況
我的正確IP應該是218.166.116.217 , 可是phpbb卻抓成211.22.33.18
$user_ip這時的參數值變成d3162112
圖檔
使得phpbb重新產生新的session_id
造成左右兩邊(如圖二紅色框框所示)的session_id不同,而發生Invalid_session
進入phpbb後台時,有時會自動跳回首頁,也是這樣的原因

請問這個問題有辦法解決嗎? :-?

發表於 : 2005-09-14 20:32
ETERNAL
關於上面的問題,我繼續做了測試,發現不是phpbb的問題

寫了一隻程式,程式內容如下

代碼: 選擇全部

<?
echo " HTTP_VIA ->".$_SERVER['HTTP_VIA'] . "<br>
";
echo " HTTP_X_FORWARDED_FOR ->".$_SERVER['HTTP_X_FORWARDED_FOR'] . "<br>
";
echo " HTTP_SERVER_VARS['REMOTE_ADDR'] -> ".$HTTP_SERVER_VARS['REMOTE_ADDR']." --1";
echo "<br>";
echo " HTTP_ENV_VARS['REMOTE_ADDR'] -> ".$HTTP_ENV_VARS['REMOTE_ADDR']." --2";
echo "<br>";
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
echo " client_ip -> ".$client_ip." --3";
?>
1.的部分是用$HTTP_SERVER_VARS['REMOTE_ADDR']抓IP
2.的部分是用$HTTP_ENV_VARS['REMOTE_ADDR']抓IP
3.的部分是用phpbb所抓IP的語法來抓IP

經過多次的測試,發現有下圖的問題
圖檔

218.167.218.228是我真正的IP
IE經過幾次的重新整理卻出現211.75.91.2這個IP

同樣都是透過$HTTP_SERVER_VARS['REMOTE_ADDR']來取得IP
在同時段也沒斷線過的情況下,會抓到兩種不同的IP
這是什麼原因?

後來我用在hinet網站上所申請的固定IP去做測試,發現沒有這樣的問題,似乎只有浮動IP才會有這個情況
難道是中華電信機房的關係嗎?

http://bbs.2233.idv.tw/test3.php
這是我弄的測試網頁
希望同樣跟我一樣是用浮動式IP的朋友們,也能測試看看,告訴我結果
是否只有我才有這樣的情況

我是浮動式IP,中華電信2M/512 ADSL

發表於 : 2005-09-14 21:52
問題狂
經過測試確實會發生此問題
而我也跟你是用Hinet 2m/512k
當改用Hinet配發的固定IP時又無此問題
所以應該可以確定是Hinet線路的問題並非PHPBB本身的BUG

以下為正常時所發生的情況:
圖檔

以下為錯誤時的情況:
圖檔

發表於 : 2005-09-14 22:19
~倉木麻衣~
忘了之前幾天曾在那裡看過有人提到, 那個可能是抓到了proxy ip
不過我不是很確定, 因為從錯誤的ip來看, 似乎都是router
雖然不是很確定, 不過還是建議test3.php多做兩個檢查, 看看是否能獲得什麼資訊

代碼: 選擇全部

	echo $_SERVER['HTTP_VIA'] . "<br>
";
	echo $_SERVER['HTTP_X_FORWARDED_FOR'] . "<br>
";
$_SERVER['HTTP_VIA']可以取得代理伺服器的IP
$_SERVER['HTTP_X_FORWARDED_FOR']則可知道是那個IP經由代理伺服器連到你的主機

發表於 : 2005-09-14 23:43
ETERNAL
~倉木麻衣~ 寫:忘了之前幾天曾在那裡看過有人提到, 那個可能是抓到了proxy ip
不過我不是很確定, 因為從錯誤的ip來看, 似乎都是router
雖然不是很確定, 不過還是建議test3.php多做兩個檢查, 看看是否能獲得什麼資訊

代碼: 選擇全部

	echo $_SERVER['HTTP_VIA'] . "<br>
";
	echo $_SERVER['HTTP_X_FORWARDED_FOR'] . "<br>
";
$_SERVER['HTTP_VIA']可以取得代理伺服器的IP
$_SERVER['HTTP_X_FORWARDED_FOR']則可知道是那個IP經由代理伺服器連到你的主機
我沒使用proxy,確定不是proxy所造成
找了一個網友,也是用中華電信浮動IP來測試,也有同樣的結果

我剛剛加上

代碼: 選擇全部

	echo $_SERVER['HTTP_VIA'] . "<br>\
";
	echo $_SERVER['HTTP_X_FORWARDED_FOR'] . "<br>
";
測試結果如下圖
圖檔
HTTP_VIA及HTTP_X_FORWARDED_FOR是空白\r
確定沒有使用代理伺服器\r

不知道是中華電信的問題??
還是跟我所租用的主機有關係??

發表於 : 2005-09-15 00:10
~倉木麻衣~
我當初看的那篇文章在這裡\r
[問題] 登入後變了 IP 位址 ? 常常自動登出

而我剛才利用底下網址找到一個台灣固網的proxy(我目前是台固的固定IP用戶)
http://www.cybersyndrome.net/plr.html
設定完後, 連到我自己的測試站台進行測試, 也是發現沒法顯示代理伺服器的資訊
但REMOTE_ADDR所測到的則為該代理伺服器的IP
(sorry, 目前我在那一個網頁找不到剛才測試用的proxy資料)
然而, 當我再換一個代理伺服器後(neptun.ium.ne.jp:8081), 則可利用HTTP_X_FORWORED_FOR找到正確的IP位置\r

因此我可以合理的懷疑211.22.33.18有可能是一台Transparent Proxy
接著, 我試著上google尋找可能的資料, 找到了這二篇
http://forum.acsite.net/big5/index.php?showtopic=436
http://forum.acsite.net/big5/index.php?showtopic=266
看起來, 這應該差不多可以確定是ISP的問題了

發表於 : 2005-09-15 09:10
ETERNAL
恩,沒錯\r
是Transparent proxy 的關係
今天我站上有一位網友提供了一篇文章,以及多次的測試下確定是Transparent proxy (透明代理伺服器)在搞怪 :-?

http://www.pczone.com.tw/vbb3/showthrea ... ge=1&pp=20

唉 這hinet實在是OOXX,看來大家都去申請固定IP好了