Traceroute與Tracert區別?

2021-03-02 泰克安全技術部

一、在UNIX中的程序traceroute(Ciscoand Juniper應用),可以用來跟蹤一個數據包從源點到終點的路徑,通俗講就是跟蹤路由的工具。如下圖來說明traceroute的思想:
R1要去往R3數據包要經過路由器R2,但是在大多數情況下,我們並不知道這個網絡拓撲。R1和R3之間可能有很多的設備。traceroute使用ICMP超時報文和IP分組中的TTL(生存時間)欄位和UDP協議就能找出這個路由。

a.R1上運行traceroute使用UDP協議大於等於33434埠向終點R3發送一個分組,這個報文被封裝成IP分組,其TTL值為1,該程序會記下發送該分組的時間。抓包如下:

b.當R2收到這個IP分組,就會丟棄這個分組(減去TTL值1,TTL為0),同時R2會發送一個超時的ICMP報文(type:11,code:0),表示因為TTL值為0而丟棄該分組。抓包如下:

c.R1收到這個ICMP超時報文,利用封裝ICMP的IP分組的源地址找出R2地址,這個程序還記下該分組的到達時間。步驟a的時間(發送分組時間)與減去該時間(接收分組時間)就是往返時間。重複a步驟,其TTL值為2,R2會轉發該IP分組,當該分組抵達R3時,R3把TTL減去1,並不會丟棄該報文,因為現在該報文已經到達了最後的終點,R3會向R1發送一個ICMP埠不可達報文(type:3,code:3)。R1收到埠不可達報文後,表示整個路由已經找出,沒有必要再發送更多的分組。抓包如下:

註:華為雖然應用命令為tracert,工作原理和traceroute是一樣的!

最終的抓包結果如下:

二、Tracert一般應用於MS作業系統,tracert僅僅是利用的ICMP超時報文來追蹤路由,與一情況類似,這裡不做詳細解釋,抓包如下:

三、其實在業務環境中,我們經常用到這兩個工具,試想下如果中間有防火牆我們該如何做?接下來案例通過不同的廠商防火牆,我們進行進一步分析。

案例一、華為防火牆

解決方法:
ip ttl-expires enable 恢復減TTL功能,默認為了安全起見,防火牆減TTL功能是關閉的
policy interzone trust untrust outbound
policy 0
  action permit
  policy service service-set icmp

測試:

policyinterzone trust untrust outbound
policy 0
policy service service-set  udp

測試:

案例二、思科防火牆

解決方法:
access-list OUT extended permit icmp any any
access-group OUT in interface outside
測試:
Inside#traceroute 202.100.1.1
Type escape sequence to abort.
Tracing the route to 202.100.1.1
  1 202.100.1.1 4 msec *  4 msec

access-list TR extended permit udp any any gt 33433
class-map TR.MAP
match access-list TR
policy-map global_policy
class TR.MAP
  set connection decrement-ttl(恢復減少TTL功能)

測試:
tracert 202.100.1.1
traceroute to  202.100.1.1(202.100.1.1), max hops: 30 ,packet length:40,press CTRL_C to break
1 192.168.1.10 20 ms  60 ms  50 ms
2 202.100.1.1 70 ms  50 ms  50 ms

案例三、JuniperSRX(JunOS)

解決方法:

SRX@Test-SRX#show
policy OUT {
    match {
        source-address any;
        destination-address any;
          application [junos-icmp-ping junos-udp-any ];
    }
    then {
        permit;

 }
測試:

案例四、NetScreen(ScreenOS)

解決方法:
默認不管是traceroute還是tracert,就是通的,是因為NS默認有一條trust fromto untrust any 策略。

測試:

最後總結:當我們使用traceroute和tracert命令時,如果中間設備有防火牆或者有ACL規則,我們應當放行ICMP和UDP協議,防火牆要恢復減TTL功能。

相關焦點

  • 【乾貨】Traceroute與Tracert區別?
    在UNIX中的程序traceroute(Ciscoand Juniper應用),可以用來跟蹤一個數據包從源點到終點的路徑,通俗講就是跟蹤路由的工具。如下圖來說明traceroute的思想:R1要去往R3數據包要經過路由器R2,但是在大多數情況下,我們並不知道這個網絡拓撲。R1和R3之間可能有很多的設備。
  • 每天一個 Linux 命令(55):traceroute命令
    linux系統中,我們稱之為traceroute,在MS Windows中為tracert。 traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其IP位址。
  • Tcptraceroute:基於TCP數據包的路由跟蹤器
    通過發送TCP SYN數據包來代替UDP或者ICMP應答數據包,tcptraceroute可以穿透大多數防火牆。[root@soft tcptraceroute-1.5beta7]# . /bin/  [root@soft bin]# tcptraceroute --help   tcptraceroute 1.5beta7  Copyright (c) 2001-2006 Michael C.
  • windows網絡命令:ping、ipconfig、tracert、netstat、arp
    幫助文檔windows查看配置:systeminfoipconfig和netstat命令後面不接IP位址、主機名,其餘3個命令ping,tracert,arp後面都要接主機地址。網絡基本功系列:細說網絡那些事兒1、ping用來檢測一幀數據從當前主機傳送到目的主機所需要的時間。來確定兩臺計算機之間的網絡是否連通。預測故障和確定故障源是非常有效。
  • CentOS下網絡路由追蹤軟體mtr及besttrace
    本文轉載自【微信公眾號:WalkingCloud,ID:WalkingCloud2018】,經微信公眾號授權轉載,如需轉載與原文作者聯繫1、MTRMTR是Linux平臺上一款非常好用的網絡診斷工具,或者說網絡連通性判斷工具,集成了traceroute
  • 泰漲知識 | Ping tracert原理詳解
    那為什麼我們有時候tracert 某個地址的時候會顯示多條路徑呢?tracert又是怎麼實現的呢?接下來我們開始給大家分析下tracert的原理以上就是ping的基本原理,那tracert的原理又是怎麼樣的?當我們tracert某個地址時,設備會發送TTL逐次加1的ping包或者UDP包,並且默認情況下每個TTL值發送三個包。
  • route是路線,one是一,那route one是什麼意思?
    我們知道route有「路線,路途」的意思,one是指數字一,那習語route one是什麼意思呢?route one的意思是「 to drive a football towards an opponent's goal by a long kick upfield from the rear」,即「(足球) 長傳(直接)進攻」。
  • OpenSIPS-關於請求中Record Set和Loose Route再討論
    關於這些相關概念的定義和細節,讀者可以參考筆者的歷史文檔來進一步了解關於record set 和loose route的區別以及應用場景中可能出現的問題:除了以上的參考連結以外,筆者這裡再次多IR初始請求和SR後續請求做一點補充說明。為了判斷其請求以及後續的處理流程,首先SIP 路由需要驗證其請求是初始請求還是後續請求。