在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
解決方法:
SRX@Test-SRX#show
policy OUT {
match {
source-address any;
destination-address any;
application [junos-icmp-ping junos-udp-any ];
}
then {
permit;
}
測試:
解決方法:
默認不管是traceroute還是tracert,就是通的,是因為NS默認有一條trust fromto untrust any 策略。
測試:
當我們使用traceroute和tracert命令時,如果中間設備有防火牆或者有ACL規則,我們應當放行ICMP和UDP協議,防火牆要恢復減TTL功能。
泰克連續多年被評為「中國區優秀培訓合作夥伴」、2014年被華為公司授予「 華為HCIE培訓第一品牌」,成為華為技術培訓領頭羊。2014年通過265名HCIE;2015年通過348名HCIE;2016年通過430名HCIE;2017年通過660名HCIE;2018年截止3月份已經通過133名HCIE。泰克累計培育出2000餘名HCIE專家,居全球第一。