部分運營商traceroute結果中含有私有IP段,有何利弊?
斜體部分為讀者提問
本地網路是上海移動(鐵通),訪問電信網路查看到的本機IP和PPPoE得到的公網IP不一致。電信看到的是一個其他省市的電信IP,而本機獲得的公網IP是上海鐵通的。通過tracert會看到經過了幾跳使用私有IP段的路由器,儘管所有電信網站均無法Ping通但的確可以訪問。(電信網路同樣無法Ping通本機獲得鐵通公網IP)
運營商這樣做有何利弊?為何訪問國外網站則能正常顯示本機IP,也能互相Ping通?
這個問題可以歸納為以下幾個小問題。
Q1為何本機通過PPPoE撥號獲得的公網IP,但是訪問電信網路卻顯示的是不同的公網IP?
毫無疑問,主機PPPoE撥號獲得的公網IP,是真實的公網IP,可以在Internet上自由自在地訪問,這個從訪問國外網站上的表現可以分析得出。
訪問電信網路,使用了兩種技術得其中得一種:
1 NAT技術
主機得公網IP,被移動NAT替換成與電信網路直連介面IP(或地址池中一個),這樣最終在目的地伺服器看來,是和電信網路直連介面IP通信,而不是和主機的公網IP通信。
NAT讓電信伺服器,以為是和NAT設備通信,自然流量會返回給NAT。這樣就可以嚴格控制返迴流量的流經路徑。也許不同的網間鏈路其結算費用不一樣,有便宜的,也有昂貴的,為了節省費用,自然會選擇便宜的鏈路。
2透明代理技術
所謂透明代理,是用戶沒有配置過代理,用戶感受不到代理的存在,用戶的網頁訪問被重定向到移動網路的代理伺服器,代理伺服器再與目的伺服器通信。
代理伺服器,可以充當緩存伺服器,緩存著海量靜態資源,如圖片、視頻,一旦匹配到,直接返回給用戶主機,避免再耗費大量的網間流量去電信網路去抓,這樣可以節省網間結算費用。
Q2為何traceroute會出現6跳私有IP?
Traceroute報文進入了一個私有IP互聯的網路,出現TTL=0時,自然使用私有IP作為源IP發ICMP出錯消息。
有同學自然會問,為何這些私有IP沒有轉換成公網IP?
那是因為使用私有IP的互聯介面,壓根不會被用來訪問互聯網。如果用這些私有IP作為源IP,去訪問互聯網,肯定會NAT成公網IP。
而卻可以使用私有IP做為源IP,去發送單向的ICMP Error Message。
Q3為何通過網頁可以訪問電信的網站,卻不可以Ping通?
訪問電信網站是基於TCP埠轉發,而ping 沒有埠,自然不會被代理轉發。
NAT情況是,如果移動網路沒有為Ping報文做動態NAT,自然無法Ping通。
Q4為何訪問國外網站顯示的IP ==本機PPPoE撥號獲得的公網IP?
國內網間的流量使用了代理伺服器或NAT,而訪問國外的網站,沒有使用這些技術,讓用戶IP與國外伺服器直接通信。
Q5有何利弊?
NAT的存在,破壞了本來端到端通信,NAT如同一個中間人一樣存在著,一旦出問題不利於排查問題。
代理伺服器,使得本來端到端通信,演變成多個點對點通信的疊加,一旦出問題,端到端都無法Ping通,加大了排查的難度。
Q6從第12跳開始為何都請求超時了?
前11跳一直處於移動網路,自然沒有問題。
從12跳開始,將要進入電信網路,由於移動網路沒有給traceroute報文做動態NAT映射,或做基於埠的轉發,所以traceroute報文全丟了。
※一生福運連連,富貴無憂的痣長在哪
※孩子,我求求你玩玩這個遊戲吧!
TAG:全球大搜羅 |