traceroute追蹤路由命令

traceroute (Windows 系統下是tracert) 命令利用ICMP 協議定位您的計算機和目標計算機之間的所有路由器。TTL 值可以反映數據包經過的路由器或網關的數量,通過操縱獨立ICMP 呼叫報文的TTL 值和觀察該報文被拋棄的返回信息,traceroute命令能夠遍歷到數據包傳輸路徑上的所有路由器。
此命令的適用範圍:。CentOS7,Ubnutu16.04,Debian9,openSUSE15等以後版本系統已經默認不再集成這個命令,需要安裝相應的軟件traceroute

一、在介紹Traceroute的原理之前,需要了解幾個技術名詞:

IP協議
IP協議是TCP/IP協議族中最核心的部分,它的作用是在兩臺主機之間傳輸數據,所有上層協議的數據(HTTP、TCP、UDP等)都會被封裝在一個個的IP數據包中被髮送到網絡上。

ICMP
ICMP全稱爲互聯網控制報文協議,它常用於傳遞錯誤信息,ICMP協議是IP層的一部分,它的報文也是通過IP數據包來傳輸的。

TTL
TTL(time-to-live)是IP數據包中的一個字段,它指定了數據包最多能經過幾次路由器。從我們源主機發出去的數據包在到達目的主機的路上要經過許多個路由器的轉發,在發送數據包的時候源主機會設置一個TTL的值,每經過一個路由器TTL就會被減去一,當TTL爲0的時候該數據包會被直接丟棄(不再繼續轉發),併發送一個超時ICMP報文給源主機。

二、原理:
Traceroute實現原理

1. 從源地址發出一個UDP探測包到目的地址,並將TTL設置爲1;

2. 到達路由器時,將TTL減1;

3. 當TTL變爲0時,包被丟棄,路由器向源地址發回一個ICMP超時通知(ICMP Time Exceeded Message),內含發送IP包的源地址,IP包的所有內容及路由器的IP地址;

4. 當源地址收到該ICMP包時,顯示這一跳路由信息;

5. 重複1~5,並每次設置TTL加1;

6. 直至目標地址收到探測數據包,並返回端口不可達通知(ICMP Port Unreachable);

7. 當源地址收到ICMP Port Unreachable包時停止traceroute。

注:

1. Linux和Mac OS等系統使用UDP包進行探測,目標端口號默認爲33434,每次探測目標端口號加1。Traceroute故意使用了一個大於 30000 的目標端口號,以保證目標地址收到數據包後能夠返回一個“端口不可達”的 ICMP 報文,於是源地址就可將端口不可達報文當作跟蹤結束的標誌。

2.Traceroute每跳默認發送3個探測包(發包的數量可通過-q進行設置),探測包的返回會受到網絡情況的影響。如果防火牆封掉了ICMP的返回信息,那麼相應的延時位置會以*顯示。如果某臺網關阻塞或者某臺DNS出現問題,那麼相應行的延時會變長。可以加-n 參數來避免DNS解析,以IP格式輸出數據。

3.每個探測包都有唯一的標識號,使得Traceroute能夠識別返回的包。UDP數據包使用遞增的目標端口號進行標識。

三、命令格式:

traceroute[參數][主機]
參數

-f   設置第一個檢測數據包的存活數值TTL的大小,默認是1。

-i   使用指定的網絡接口送出數據包,如果網絡接口較多時有不同的網段可以使用這個參數來區分,從而測試不同的網段

-g   與-i參數相仿,只是-g後面接的是網管的ip地址,告訴Traceroute將IP源路由選項添加到傳出數據包,該數據包通知網絡通過指定網關路由數據包(大多數路由器出於安全原因禁用了源路由)。通常,允許多個網關(逗號分隔)。。

-I   使用ICMP迴應取代UDP資料信息。

-m   指定最大ttl,默認30,可以理解爲追蹤路由的跳數。

-n   直接使用IP地址而非主機名稱。

-p   設置UDP傳輸協議的通信端口。

-q   設置每跳的探測數據包數。默認爲3

-r   忽略普通的Routing Table,直接將數據包送到遠端主機上。

-s   設置本地主機送出數據包的IP地址。

-t   設置檢測數據包的TOS數值。

-v   詳細顯示指令的執行過程。

-w   設置等待遠端主機回報的時間。

-x   開啓或關閉數據包的正確性檢驗。

 

四、使用實例:

1、定位到目的主機的路由數量
-----------------------------------------------------------------------------
[root@CentOS ~]# traceroute www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 3.259 ms 3.202 ms 6.758 ms              #我的網關,也就是第一個路由
2 10.28.0.1 (10.28.0.1) 6.826 ms 6.930 ms 6.703 ms
3 * * *
4 221.183.53.1 (221.183.53.1) 9.289 ms 8.961 ms 9.164 ms
5 221.183.37.145 (221.183.37.145) 19.843 ms 20.337 ms 19.956 ms
6 * * *
7 * 39.156.27.1 (39.156.27.1) 26.354 ms *
8 39.156.67.101 (39.156.67.101) 19.786 ms 39.156.27.5 (39.156.27.5) 19.419 ms 39.156.67.17 (39.156.67.17) 18.898 ms
9 39.156.67.73 (39.156.67.73) 27.235 ms 39.156.67.21 (39.156.67.21) 19.498 ms 39.156.67.69 (39.156.67.69) 17.565 ms
10 * * *
.......
28 * * *
29 * * *
30 * * *
[root@CentOS ~]#
-----------------------------------------------------------------------------
說明:
記錄按序列號從1開始,每個紀錄就是一跳 ,每跳錶示一個網關(可以理解爲一個路由器),我們看到每行有三個時間,單位是 ms,其實就是-q的默認參數。探測數據包向每個網關發送三個數據包後,網關響應後返回的時間;如果您用 traceroute -q 4 www.baidu.com ,表示向每個網關發送4個數據包。
有時我們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回信息,所以我們得不到什麼相關的數據包返回數據。
有時我們在某一網關處延時比較長,有可能是某臺網關比較阻塞,也可能是物理設備本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您可以加-n 參數來避免DNS解析,以IP格式輸出數據。
如果在局域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某臺服務器遇到問題時,我們用到traceroute 追蹤數據包所經過的網關,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能幫助我們解決。

2、設置追蹤的跳數
-------------------------------------------------
traceroute -m 10 www.baidu.com
-------------------------------------------------

3、從網絡接口eth0進行網絡追蹤
-------------------------------------------------
traceroute -i eth0 www.baidu.com
-------------------------------------------------

4、探測包使用的基本UDP端口設置6888
-------------------------------------------------
traceroute -p 6888 www.baidu.com
-------------------------------------------------

5、把探測包的個數設置爲值4
-------------------------------------------------
traceroute -q 4 www.baidu.com
-------------------------------------------------

6、把對外發探測包的等待響應時間設置爲3秒
-------------------------------------------------
traceroute -w 3 www.baidu.com
-------------------------------------------------

 參考:https://www.freebuf.com/articles/network/118221.html

           https://www.cnblogs.com/lcword/p/9862539.html 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章