IP - Part 2

Posted by Tim Luo on 2008/3/22 21:54:27
簡單的說 IP 就像一個人的住址或電話號碼,讓溝通的雙方能找的到對方。 IP 的組成習慣是以 xxx.xxx.xxx.xxx 的方式表示,其中 xxx 是 0 到 255 的十進位數字。

IP 還有它分配的規矩,並不是每一個都可以實際使用到。IP 號碼以 127. 開頭是每一台機器或裝置的預設網路 IP, 供 TCP/IP 本身使用。通常也稱 localhost,而其相對的 IP 則用 127.0.0.1 表示。實際上除了 127.0.0.0 和 127.255.255.255 兩個 IP 之外, 其他所有的 127 開頭的 IP 都可以說是 localhost 的 IP。 127 開頭的 IP 並不會傳到本身機器以外的地方。即使機器沒有安裝網路卡,只要有 TCP/IP 它就存在。以下是在 Windows XP 的命令視窗下執行 ping 的抓圖。



除了127 開頭的 IP 之外,還有三段 IP 是不會傳到外面的網路的。這三段分別是 10. 開頭的 IP, 172.16.xxx.xxx ~ 172.31.255.255 以及 192.168. 開頭的 IP。它們一般稱為私有 IP (private IP),通常用於內部網路。有時候人們會以內部 IP 與外部 IP 分別稱呼。在現在很多人使用 IP 分享器的條件下, 使用的電腦實際上是用內部 IP 的, 但在與外面的電腦溝通時是用外部 IP 的,這也是伺服器看到以及紀錄的 IP

如果說在這麼單純的環境下直接與外面連線,那麼對方看到的 IP 就可以說是實際的 IP,不容任何人否認的。但現實世界卻不是這麼單純的。很多人可以透過其他機器上網,方法可以透過遙控其他電腦,使用代理伺服器等等。分別敘述如下:


遙控其他電腦

遙控其他電腦的方式在適當設定下,可以使用 PCAnywhere,VNC 以及 IP KVM 等等.。PCAnywhere 應該很多人都聽過,用過或看過。至於 VNC 和 IP KVM 的原理基本上皆類似。在這種狀況下遠端伺服器看到的 IP 是被遙控電腦的 IP,而不是實際使用者的 IP。在這種狀況下要知道實際使用者的 IP 是非常困難的。

使用代理伺服器

使用代理伺服器是另外一種常見的方法,簡單的說實際與對方伺服器連線的是代理伺服器,而不是使用者的電腦。代理伺服器會把遠端的內容送給使用該代理的電腦,這時候遠端伺服器看到的是代理伺服器 IP,所紀錄的也是該 IP。看到這裡你應該會感覺故事就結束了,但實際卻不然。除了伺服器上紀錄的 IP 是代理伺服器的 IP 之外,有些應用程式會詢問代理伺服器是否可以顯示使用該代理伺服器的電腦的 IP。這時候就要看代理伺服器是怎樣設定的,如果設定成會送出該訊息,那麼對方的伺服器就會看到實際使用代理伺服器的電腦的 IP。如果代理伺服器的設定是不提供此資料,也就是所謂的匿名代理伺服器,對方伺服器就看不到實際使用代理伺服器的電腦的 IP。像 OKENGLISH 的 newbb 討論區模組使用的就是此種功能。至此,讀者是不是又要問故事就這麼結束了呢?答案仍然是否定的

現在先顯示一段我的 Web 伺服器上的紀錄供大家參考。

====================================================================
218.111.181.7 - - [22/Mar/2008:21:10:07 +0800] "POST /chat/getxml.php HTTP/1.1" 200 64 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"
220.141.101.39 - - [22/Mar/2008:21:10:08 +0800] "POST /chat/getxml.php HTTP/1.1" 200 64 "http://okenglish.tw/chat/chatui.swf" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)"
220.181.19.183 - - [22/Mar/2008:21:10:08 +0800] "GET /modules/xcgal/displayimage.php?album=lastcom&cat=0&pos=64&pid=328 HTTP/1.1" 200 27810 "-" "Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"
165.21.155.11 - - [22/Mar/2008:21:10:11 +0800] "POST /chat/getxml.php HTTP/1.1" 200 64 "http://okenglish.tw/chat/chatui.swf" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; IEMB3; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; IEMB3)"
===========================================================================================

每一行一開始的數字是與 OKENGLISH 連線的機器的 IP, 後面顯示的是連線時間以及對方使用的是何種作業系統,瀏覽器以及版本。作業系統與瀏覽器的相關訊息是使用者的瀏覽器送給我的伺服器的。

如果說這其中一個 IP 實際上是代理伺服器的 IP,我就無法從此看出使用者的真正 IP。如果該代理伺服器會提供使用者的 IP,而該使用者又恰好在討論區留言,我就應該可以看到該用戶的 IP。但問題也就出現在這裡了,該代理伺服器所提供的使用者 IP 是它認為的使用者 IP,也就是有可能經過變造過的 IP。這可能的狀況是該使用者擁有兩台以上的電腦,其中一台用來作代理伺服器,並在該代理伺服器上設定多重 IP。另外的 IP 可以隨便捏造,然後再把另外電腦的 IP 設定成可以和這捏造 IP 直接連線的 IP。因為是透過代理伺服器,這另一台電腦或伺服器上捏造的 IP 並不會實際連到外面去,卻可以造成代理伺服器以為和它連線的電腦使用的是合法無誤的 IP。就以 OKENGLISH 舊的 IP 61.218.91.90 而言,任何人只要懂得架設代理伺服器,設定多重 IP 就可以連線到一些採用要求代理伺服器提供用戶 IP 的系統上留言,並讓該系統認為與之連線的 IP 就是 61.218.91.90。這也是我上一篇說的可以不用寫程式就偽造 IP 的方式。至於在這種狀況下網管人員該怎麼因應呢?這時就要先花時間檢查系統紀錄來看該代理伺服器的 IP,然後在看看能否從代理伺服器那一方得到你想要的訊息,不過這通常可能要經過法律程序並即時提出申請才做得到。



上圖是我上一篇文章的 IP 顯示。會不會感到奇怪,IP 怎麼會是 127.255.255.255。在這種狀況下更好,它讓你知道系統無法確認所得到的 IP 是正確的。這也告訴我們網路世界並不是那麼簡單,也就是為什麼很多人敢隨意亂來的原因。

Tim

This Post was from: http://okenglish.tw/newbb/viewtopic.php?forum=16&topic_id=2657&post_id=10436