問題產生的原因 第19跳到達內網192.168.0.45,TTL =0,於是以source IP =192.168.0.45 告訴源主機TTL Expired,當這條消息到達內網出口,NAT沒有將ICMP消息做私網Source IP =192.168.0.45轉換成公網的工作,所以原封不動地到達源主機,於是產生了很奇怪的現象。
為何TTL Expired ICMP 能夠到達源主機? 因為Destination IP = 源主機公網IP ,Source IP =192.168.0.45,路由器一般只根據destination IP 查詢路由表做轉發,有時運營商也會檢查Source IP 是不是非法(私有IP),如非法會丟棄,從這裡的輸出看,沒有做合法性檢查,所以ICMP鬼使神差到達了源主機。
第20、21、22跳的情況參考第19跳。
第23跳允許外部訪問,在內網邊界做了靜態NAT(公網IP=119.75.218.70),所以顯示正常。
不贊同這個地址是在NAT內網,因為traceroute封包沒法主動進入NAT內網。我更傾向於這個私有地址被放在了公網,192的保留地址也是一個合法IP,不用於公網只是一個人為約定。只要配置好周邊的路由,沒什麼是不可能的。
應該只是路由器間的鏈路使用保留地址組網了吧,為了省IP地址。畢竟不在網路邊界,不需要對外可見。
防火牆,或者流量清洗設備
為什麼不能遇到呢?trace只不過是記錄了途徑設備的ip地址而已。這些地址是否internet可達並不重要。回包的icmp time exceeded源地址用啥是途經路由器自行決定的。