tracert和traceroute介紹


一、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過濾三層地址

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM