1. 程式人生 > >路由跟蹤為什麼會有兩個區域網?

路由跟蹤為什麼會有兩個區域網?

問:

剛開始學習網路,用Best Trace做了一下路由跟蹤,看了這個結果不是很明白,有幾個問題想請教一下大家,非常感謝各位大神。

1.為什麼第1個記錄的ip是公網ip, 後面卻標示著‘區域網’,這個是和教育網有關嗎?

2.第4個記錄為什麼又多出一個區域網,教育網也是公網ip, 為什麼不直接連廣州電信,是因為教育網轉入公網的原因嗎?

3.第10個記錄的4個‘*’符號分別是什麼意思,是得不到響應的意思嗎?為什麼會有這種情況?

另外還有一個問題:

用瀏覽器開啟http://ip.cn,上面顯示我所在的ip是183.6.160.232, 是廣州電信的,但用Best Trace對

http://ip.cn作路由跟蹤,所得到的記錄裡面卻沒有這個ip。

答:

作者:北極
連結:https://www.zhihu.com/question/287956997/answer/458835550
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
 

我對這個trace的結果有一些不同的看法,從實際網路部署的角度上看,我覺得其它回答說的都不完全正確:

1.為什麼第1個記錄的ip是公網ip, 後面卻標示著‘區域網’,這個是和教育網有關嗎?

高度懷疑是你工具的bug,這個IP地址的歸屬,建議到APNIC上查一下https://wq.apnic.net/static/search.html

,APNIC掌管著亞洲地區的IP地址分配,雖然不能精確到宿舍樓這種場景,但大塊地址的所有權還是很明確的。

2.第4個記錄為什麼又多出一個區域網,教育網也是公網ip, 為什麼不直接連廣州電信,是因為教育網轉入公網的原因嗎?

這個比較有意思,首先,先說一種最常見的情況:

即使你擁有公網IP地址,你直接訪問教育網的話(注意,不是廣州電信),你使用trace工具也可能看到區域網IP地址。

trace工具的原理是設定一個較小的TTL,等到超時的時候,會收到一箇中間的三層裝置的TTL Expired迴應。迴應的報文裡,會包含一個IP地址,trace工具收到這個地址以後,給你顯示出來,你就可以看到某一跳的裝置地址了。

迴應的報文裡的IP地址,是中間節點的那個三層裝置填充的,這個裝置填充的IP地址,是這個裝置上的地址,但一個三層裝置,可能有多個IP地址

比如下面的這個圖,如果迴應的報文是三層裝置B返回的,那麼它實際上有兩個IP地址:IP1和IP2,報文裡應該填哪個呢?

[你的PC]----[三層裝置A]----(IP1)[三層裝置B](IP2)------(外網...)

實際情況是,它填哪個都可以。甚至,更極端的情況下,三層裝置B上面連線著十幾個不同的網段,那麼它返回哪個地址都是可以的。

所以,如果它的某個介面上連線著的是一個內網,它返回一個私有地址是完全有可能的

然後就要繼續說這個有意思的事情了,題主遇到的是一種更復雜的情況

正常情況下,教育網要訪問公網的網站,是要繞行到教育網的總出口的,我印象裡總出口是在北京、上海這種地方,可能廣州也有,但應該不在華南理工大學。

所以你正常的trace應該走的是:

校園網-教育網廣州節點-教育網北京節點-北京聯通->...

但實際情況不符。

那隻能證明一點:你們學校自己拉了一個公網出口

我記得我念書的時候(2003年),高校一般都嚴格禁止私自接一個公網出口,但如果不私自接的話,訪問公網又太慢了,現在管的嚴不嚴就不清楚了。

但如果學校自己拉一個公網出口,配置起來就很麻煩了,首先要解決的就是路由表的問題:如果路由直接互通,那樣會干擾整個教育網的路由,廣州的其它大學會看到你們學校整個出口,這些學校要想訪問公網是走你們這個出口呢?還是走北京的教育網總出口?真要走到你們這裡的話,費用怎麼算?

所以為了防止互相干擾,一種特別常見的部署方式是雙向NAT技術,用圖來說話:

                 (教育網至北京)
                    |
[你的PC]----(IP1)[三層裝置A](IP2)---(雙向NAT網路)---(IP3)[三層裝置B](IP4)------(廣州電信)

因為擔心兩邊的路由表會影響對方,所以,當兩個不同的網路要私拉一個介面的時候,會在邊界路由器上(圖裡的三層裝置A/B)做兩個NAT,這樣的話,兩邊互相看不到對方的路由表,只能看到一個內網,在邊界上設定幾組靜態路由,就可以實現轉發。

根據我這個圖,可以得出一些結論:

三層裝置A對應著你的圖裡的第3跳,IP1是你看到的地址:222.201.129.17
三層裝置B對應著你的圖裡的第4跳,IP3是你看到的地址:192.168.66.250
你在網頁上看到的你的公網IP:183.6.160.232,對應著是IP4

這樣就能解釋你這個圖裡的好幾個問題:

為什麼中間會有一個內網地址?為什麼顯示的公網地址(183.6.160.232)在你trace裡找不到?為什麼你能直接從校園網直接進入廣州電信?

都是因為雙向NAT的原因

3.第10個記錄的4個‘*’符號分別是什麼意思,是得不到響應的意思嗎?為什麼會有這種情況?

可能的情況有很多,比較常見的情況是有安全設定,禁止迴應TTL超時的報文,但也不僅限於這一種,安全設定一般在網路接入層的防火牆附近,在公網裡不太常見

我更傾向於可能是trace這個工具本身的問題:

trace對於每個節點要發三次,如果三次返回的IP地址都一樣,那麼就顯示出來,但如果不一樣,就顯示一個星號“*”

在公網上,為了負載平衡的需要,不同節點之間,尤其在骨幹網上,可能存在多條等價路徑,如果trace工具在這種位置上嘗試trace,就會顯示“*”,因為每次返回的IP地址是不同的。

考慮到題主遇到“*”的位置正好是骨幹網,我更傾向於這裡是因為等價路由導致的。

以上是我的判斷。

-----------

對了,題主可以做一個實現,你去ping一下183.6.160.232和192.168.66.250,這兩個裝置的TTL值可能是一樣的(如果能ping通的話)。

 

下面是車小胖的回答:

 

我認為比較贊同前者北極的回答,中間的那個內網地址,應該是雙向NAT搞出來的。

車小胖的提到的兩篇連結:

ISP路由器上是不是擁有Internet中所有路由條目?

為什麼用IP查詢網查詢的自己的外網IP和用tracert命令查詢的自己的出口IP不一致?

原文連結:https://www.zhihu.com/question/287956997