一、tracert和traceroute簡介
相同點:都是用來跟蹤路由,幫助排查問題,關注的是過程,而ping關注的是結果
不同點:tracert請求是icmp echo報文
traceroute請求是UDP的報文,目標端口是30000以上隨機端口
二、tracert使用到三種報文
icmp echo request #icmp Type0,客戶端發起報文,traceroute使用udp報文發起 icmp echo replay #icmp Type 8到了目標地址,未禁ping,回復此報文 icmp time-exceeded #icmp Type11,經過的路由回復報文(到此路由ttl=1或0回復給客戶端)
三、traceroute使用的三種報文
UDP隨機端口發起請求 #icmp Type0,客戶端發起報文,traceroute使用udp報文發起 icmp time-exceeded #icmp Type11,經過的路由回復報文(到此路由ttl=1或0回復給客戶端) icmp unreachable #icmp Type3(Destination unreachable),到了目標地址,未禁ping,回復此報文
四、tracert原理
1.tracert送出一個TTL是1的ICMP echo request數據包a到目的地 2.當路徑上的第一個路由器收到這個數據包a時,它將TTL減1 3.TTL變為0,該路由器會將此數據包丟掉,並送回一個「ICMP time exceeded」消息 4.tracert 收到這個消息后,再送出另一個TTL是2 的數據包,發現第2 個路由器 5.當數據包到達目的地后,目標會送回一個icmp echo reply(前提是目標未禁ping)
ps:tracert 有一個固定的時間等待響應(ICMP TTL到期消息)。如果這個時間過了,它將打印出一系列的*號,表明在這個路徑上,這個設備不能在給定的時間內發出ICMP TTL到期消息的響應。
有些時候tracert都是打星號,但是抓包顯示icmp time-exceeded(即可知所經路由器),所以以抓包結果為准
五、tracert工具使用
用法:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
-d #不將地址解析成主機名。 -h maximum_hops #設置目標的最大躍點數。 -j host-list #與主機列表一起的松散源路由(僅適用於 IPv4)。 -w timeout #等待每個回復的超時時間(以毫秒為單位)。 -R #跟蹤往返行程路徑(僅適用於 IPv6)。 -S srcaddr #要使用的源地址(僅適用於 IPv6)。 -4 #強制使用 IPv4。 -6 #強制使用 IPv6。
六、traceroute工具參數使用
用法:
traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
-d #使用Socket層級的排錯功能。 -f first_ttl #設置第一個檢測數據包的存活數值TTL的大小。 -F #設置勿離斷位。 -g gate,... #設置來源路由網關,最多可設置8個。 -i device #使用指定的網絡接口送出數據包。 -I #使用ICMP echo request取代UDP請求,即類似使用tracert工具 -T #使用TCP SYN取代UDP請求 -m max_ttl #設置檢測數據包的最大存活數值TTL的大小。 -n #直接使用IP地址而非主機名稱。 -p port #設置UDP傳輸協議的通信端口,默認33434 -r #忽略普通的Routing Table,直接將數據包送到遠端主機上。 -s src_addr #設置本地主機送出數據包的IP地址。 -t tos #設置檢測數據包的TOS數值。 -w waittime #設置等待遠端主機回應的時間,默認5s
七、示例演示
7.1 禁止設備被tracert,希望對方tracert時打星號
以一台思科3850為例,根據上面tracert原理,跟蹤到路徑的地址是根據回復icmp time-exceeded的源地址得到,因此只要禁止指定的icmp time-exceeded的報文即可達到設備禁止tracert的效果
路徑圖:PC1-->G2/0/16_A_G2/0/17-->G2/0/16_B_G2/0/17-->G2/0/16_C_G2/0/17-->目標server 假設A設備為CISCO 3850純當二層設備使用,B設備地址192.168.6.1 (A)#ip access-lists extent test 10 deny icmp host 192.168.6.1 host 192.168.60.244 ttl-exceeded 20 permit ip any any QJ-W-3850-2F# interface GigabitEthernet2/0/16 switchport access vlan 60 switchport mode access ip access-group test out #注意:二層設備也可以應用acl過濾三層地址