筆者在《如何區分國內上網環境中不同的人為網路故障》中曾經介紹過人為網路故障的多種方式,但近階段又發現出現了新型的人為網路故障,此文將為大家進行介紹這種新型的人為網路故障。
事情的起因是在前幾天公司在海外的伺服器工作不正常,國內使用者訪問該伺服器上的網站要麼只顯示一個標題,然後一直處於載入之中,要麼就是無法連接到伺服器。經過自己的試驗,發現一旦訪問了伺服器的網站(或者連接了伺服器的SSH),五分鐘之內便無法和伺服器進行通訊,五分鐘之內PING全部超時,過了五分鐘後恢復。而且經常是網頁傳輸到一半就無法和伺服器進行通訊了,所以出現了有時候網站要麼只顯示一個標題,然後一直處於載入之中,有時候無法連接到伺服器的情況。如果五分鐘後再次訪問伺服器上的網站,則此現象就再次重複出現。
為此,為了診斷故障原因,在無法訪問伺服器的五分鐘內,關閉了伺服器的iptables並使用了路由跟蹤工具,結果如下:
從路由跟蹤的結果發現,最後一跳是74.117.63.66,查詢IP所在的地理位置顯示此IP所在地為美國,經過《如何區分國內上網環境中不同的人為網路故障》文仲介紹的方式判斷,似乎問題出在美國的網路部分。為此,和美國伺服器供應商進行了聯繫,同時提供了路由跟蹤結果。不過,供應商那裡經過檢查並沒有設置過任何遮罩IP的機制(包括根據訪問後遮罩五分鐘的機制),需要排查國內自己本地網路的問題。
經過思考,猜想是否有可能是防火牆進行了反向遮罩:如果網路資料包中的源IP為國內,目標IP在國外,則放行;如果網路資料包中的源IP為國外五分鐘內臨時被遮罩的IP,目標IP為國內,防火牆則丟棄該資料包。如果是這樣,也就能解釋通為什麼最後一跳是在美國,但卻是防火牆的遮罩。因為國內發往國外的資料包永遠被放行,所以海外伺服器可以收到資料包,而在前13跳中返回資料包的IP位址都不在防火牆的黑名單之內,所以TTL超時的資料包仍舊可以發回國內的IP位址(路由跟蹤工具的原理就是每次TTL加一,每次經過路由器則TTL減一,如果減到零那麼路由器會發送TTL超時的資料包給源IP)。最後一跳之後由於海外的IP位址被遮罩,則資料包無法送達國內的IP位址。這麼解釋就可以解釋得通為什麼最後一跳在美國,但卻是防火牆的遮罩了。
但猜測歸猜測,證據在哪裡呢?
為此,使用了其他代理工具連接上伺服器的SSH,在被臨時遮罩的五分鐘內反向路由追蹤國內無法訪問網站的IP位址,結果如下:
從反向路由追蹤結果看,最後一跳是202.97.33.101,地理位置查詢該IP屬於“上海市 電信骨幹網”,從而驗證了猜測。而反向追蹤的第一跳74.117.63.66又正好是正向路由追蹤中的最後一跳,又再次驗證了猜想中的正向路由追蹤中的最後一跳之後的IP位址(也就是伺服器的IP位址)被遮罩的情況。至此,問題已經明確。
之後,又再次在五分鐘臨時被遮罩的時間內反向追蹤了上海的其他IP位址,顯示可以正常訪問,並不影響伺服器訪問國內的網站,只有國內的IP位址首先對國外被遮罩的IP位址發起通訊才能觸發被五分鐘臨時遮罩:
而《如何區分國內上網環境中不同的人為網路故障》仲介紹的通過國內IP路由跟蹤國外IP進行判斷是國內人為的網路故障還是海外的網路故障在一些情況中將不再適用。
來源:投稿,作者:DavidSky,作者E-mail:lehui99 (at ) gmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,文章转自月光博客