互聯網上怎麼會遇到區域網的ip地址?
這怎麼做到能夠存在的呢 ,因為他的區域網有兩個路由器接到網際網路,所以我的數據包就進去轉了一圈?
Traceroute 工作原理
這是一個traceroute 的輸出,源主機使用TTL=1、2、3…23 基於UDP的探測包,每一跳發3次,可以測量RTT的最大值、最小值、平均值。
假定源主機的TTL= 1,經過第一跳設備會TTL減1 操作,然後TTL = 0,第一跳發TTL Expired 消息給源主機,然後源主機把第一跳的IP地址列印輸出。
其它的跳數以此類推…
問題產生的原因
第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源地址用啥是途經路由器自行決定的。
這個很奇怪嗎。。。。。。
也許目標IP處於某個比較大的網路中?
運營商臨時調整?
是否是私有IP根本不是個事兒吧,只要為主機配置了路由,該去哪兒的,就一定會去那兒~
說明該設備處於私網,而該私網使用的nat設備沒有icmp alg,或者其icmp alg實現錯誤。
應該是運營商用了NAT,所以tracert的時候返回了內網路由器的私有地址
推薦閱讀:
※DNS 網關 路由 交換機 網橋 協議 伺服器 這些都是什麼關係?
※處於不同網段的子網內的計算機是怎麼找到對方子網IP的?
※為什麼100.74.146.78是保留地址?
※支持ipv6的路由器有哪些?