每天一個linux命令(55):traceroute命令
通過(guo)traceroute我們可(ke)以(yi)知道信息從你的(de)計算機(ji)到互(hu)聯網另一(yi)端的(de)主機(ji)是走的(de)什么路(lu)徑(jing)。當然(ran)每次(ci)數(shu)據包由某一(yi)同樣的(de)出發點(source)到達某一(yi)同樣的(de)目的(de)地(di)(destination)走的(de)路(lu)徑(jing)可(ke)能會不一(yi)樣,但基(ji)本(ben)上來說大部(bu)分時候所走的(de)路(lu)由是相同的(de)。linux系統中(zhong),我們稱之為traceroute,在MS Windows中為tracert。 traceroute通過發送小的數據包到目(mu)的設(she)備(bei)直到其返(fan)回(hui),來測(ce)量其需要多長時間。一(yi)條(tiao)路徑上的每個(ge)設(she)備(bei)traceroute要測(ce)3次(ci)。輸出(chu)結果中包括每(mei)次(ci)測(ce)試的(de)時間(ms)和設備(bei)的(de)名(ming)稱(cheng)(如有的(de)話)及其IP地(di)址(zhi)。
在大多數情(qing)況下,我(wo)們會在linux主機系統(tong)下,直接(jie)執行命令行:
traceroute hostname
而(er)在Windows系統下(xia)是執行tracert的命(ming)令(ling):
tracert hostname
1.命令格(ge)式:
traceroute[參數][主機]
2.命令功能:
traceroute指令讓你追蹤(zong)網(wang)絡數據包(bao)的路(lu)由(you)途徑,預設(she)數據包(bao)大小是40Bytes,用戶(hu)可另行設(she)置。
具體(ti)(ti)參數格式:traceroute [-dFlnrvx][-f<存活數(shu)(shu)值>][-g<網關(guan)>...][-i<網絡界(jie)面>][-m<存活數(shu)(shu)值>][-p<通信(xin)端口(kou)>][-s<來源地(di)址(zhi)>][-t<服務類型(xing)>][-w<超時(shi)秒數(shu)(shu)>][主機名稱(cheng)或IP地(di)址(zhi)][數(shu)(shu)據包(bao)大小]
3.命令(ling)參數:
-d 使(shi)用Socket層(ceng)級的排錯功(gong)能。
-f 設置(zhi)第一(yi)個檢測數據包的存活數值TTL的大小。
-F 設置勿離(li)斷(duan)位。
-g 設(she)置來(lai)源路由網關(guan),最多可設(she)置8個。
-i 使(shi)用(yong)指定的網(wang)絡界面送出數據包(bao)。
-I 使用(yong)ICMP回應(ying)取代UDP資(zi)料信(xin)息。
-m 設置檢(jian)測數據(ju)包的最大(da)存活(huo)數值TTL的大(da)小。
-n 直接使用(yong)IP地址(zhi)而(er)非主機(ji)名稱。
-p 設置UDP傳(chuan)輸協(xie)議的(de)通信(xin)端(duan)口。
-r 忽略普通的Routing Table,直接將數據包送(song)到遠端(duan)主機上。
-s 設置本地主機送出數(shu)據包的IP地址。
-t 設(she)置(zhi)檢(jian)測(ce)數據(ju)包(bao)的TOS數值。
-v 詳細(xi)顯示指令的執行過程。
-w 設置等待遠端(duan)主機回(hui)報的時間。
-x 開啟或關(guan)閉(bi)數(shu)據包的正確性檢驗。
4.使用實例:
實例1:traceroute 用法簡單、最常用的用法
命令:
traceroute www.baidu.com
輸出:
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms
2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms
3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms
4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms
5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms
6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms
7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms
8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms
9 * * *
30 * * *
[root@localhost ~]#
說(shuo)明:
記錄(lu)按序列號從1開始(shi),每(mei)(mei)(mei)個(ge)紀錄(lu)就是一跳(tiao) ,每(mei)(mei)(mei)跳(tiao)表示一個(ge)網(wang)關(guan),我們看到(dao)每(mei)(mei)(mei)行(xing)有三個(ge)時(shi)間(jian),單位(wei)是 ms,其實就是-q的默(mo)認參數。探測數據(ju)包向每(mei)(mei)(mei)個(ge)網(wang)關(guan)發送三個(ge)數據(ju)包后,網(wang)關(guan)響應后返回的時(shi)間(jian);如果(guo)您用 traceroute -q 4 www.58.com ,表示向每個網關發送4個數據包(bao)。
有(you)時我們(men)traceroute 一臺(tai)主機時,會看(kan)到(dao)有(you)一些行是以(yi)星號表示的(de)。出(chu)現這樣的(de)情況,可能是防火墻(qiang)封掉了ICMP的(de)返(fan)回信息(xi),所以(yi)我們(men)得不到(dao)什么相(xiang)關的(de)數據包返(fan)回數據。
有時(shi)(shi)我們在(zai)某(mou)一網關處延時(shi)(shi)比較長,有可(ke)能(neng)(neng)是(shi)某(mou)臺網關比較阻塞,也可(ke)能(neng)(neng)是(shi)物理(li)設備本(ben)身的(de)原因。當然如果某(mou)臺DNS出現問(wen)題(ti)時(shi)(shi),不能(neng)(neng)解(jie)析(xi)主機名、域名時(shi)(shi),也會 有延時(shi)(shi)長的(de)現象;您可(ke)以(yi)加-n 參數來避(bi)免DNS解(jie)析(xi),以(yi)IP格式輸出數據。
如果在(zai)局(ju)域(yu)網(wang)中的(de)不(bu)同網(wang)段(duan)之間,我們可以(yi)通過(guo)traceroute 來(lai)(lai)排查(cha)問(wen)題(ti)(ti)(ti)所在(zai),是(shi)主機的(de)問(wen)題(ti)(ti)(ti)還是(shi)網(wang)關(guan)的(de)問(wen)題(ti)(ti)(ti)。如果我們通過(guo)遠程(cheng)來(lai)(lai)訪(fang)問(wen)某臺服務器遇到(dao)問(wen)題(ti)(ti)(ti)時,我們用到(dao)traceroute 追蹤數據包所經過(guo)的(de)網(wang)關(guan),提交IDC服務商,也(ye)有助于解(jie)決問(wen)題(ti)(ti)(ti);但目前看來(lai)(lai)在(zai)國內解(jie)決這樣的(de)問(wen)題(ti)(ti)(ti)是(shi)比較困難的(de),就是(shi)我們發(fa)現問(wen)題(ti)(ti)(ti)所在(zai),IDC服務商也(ye)不(bu)可能幫助我們解(jie)決。
實例(li)2:跳數設置
命(ming)令:
traceroute -m 10 www.baidu.com
輸出:
traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets
1 192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms
2 211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms
3 211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms
4 210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms
5 202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms
6 bt-228-037.bta.net.cn (202.106.228.37) 772.460 ms bt-228-025.bta.net.cn (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms
7 124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms
8 123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms
9 * * *
10 * * *
[root@localhost ~]#
說明(ming):
實例3:顯示IP地址,不查主機名
命(ming)令:
traceroute -n www.baidu.com
輸出:
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
1 211.151.74.2 5.430 ms 5.636 ms 5.802 ms
2 211.151.56.57 0.627 ms 0.625 ms 0.617 ms
3 211.151.227.206 0.575 ms 0.584 ms 0.576 ms
4 210.77.139.145 0.703 ms 0.754 ms 0.806 ms
5 202.106.42.101 23.683 ms 23.869 ms 23.998 ms
6 202.106.228.37 247.101 ms * *
7 61.148.146.29 5.256 ms 124.65.58.213 4.386 ms 4.373 ms
8 202.106.35.190 1.610 ms 61.148.156.138 1.786 ms 61.148.3.34 2.089 ms
9 * * *
30 * * *
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
1 211.151.74.2 (211.151.74.2) 4.671 ms 4.865 ms 5.055 ms
2 211.151.56.57 (211.151.56.57) 0.619 ms 0.618 ms 0.612 ms
3 211.151.227.206 (211.151.227.206) 0.620 ms 0.642 ms 0.636 ms
4 210.77.139.145 (210.77.139.145) 0.720 ms 0.772 ms 0.816 ms
5 202.106.42.101 (202.106.42.101) 7.667 ms 7.910 ms 8.012 ms
6 bt-228-025.bta.net.cn (202.106.228.25) 2.965 ms 2.440 ms 61.148.154.97 (61.148.154.97) 431.337 ms
7 124.65.58.213 (124.65.58.213) 5.134 ms 5.124 ms 5.044 ms
8 202.106.35.190 (202.106.35.190) 1.917 ms 2.052 ms 2.059 ms
9 * * *
30 * * *
[root@localhost ~]#
說明:
實(shi)例4:探(tan)測包使用的基本(ben)UDP端口設置(zhi)6888
命(ming)令:
traceroute -p 6888 www.baidu.com
輸出:
traceroute to www.baidu.com (220.181.111.147), 30 hops max, 40 byte packets
1 211.151.74.2 (211.151.74.2) 4.927 ms 5.121 ms 5.298 ms
2 211.151.56.1 (211.151.56.1) 0.500 ms 0.499 ms 0.509 ms
3 211.151.224.90 (211.151.224.90) 0.637 ms 0.631 ms 0.641 ms
4 * * *
5 220.181.70.98 (220.181.70.98) 5.050 ms 5.313 ms 5.596 ms
6 220.181.17.94 (220.181.17.94) 1.665 ms !X * *
[root@localhost ~]#
說(shuo)明(ming):
實例5:把探測(ce)包的(de)個數設置(zhi)為值4
命令(ling):
traceroute -q 4 www.baidu.com
輸出:
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
1 211.151.74.2 (211.151.74.2) 40.633 ms 40.819 ms 41.004 ms 41.188 ms
2 211.151.56.57 (211.151.56.57) 0.637 ms 0.633 ms 0.627 ms 0.619 ms
3 211.151.227.206 (211.151.227.206) 0.505 ms 0.580 ms 0.571 ms 0.569 ms
4 210.77.139.145 (210.77.139.145) 0.753 ms 0.800 ms 0.853 ms 0.904 ms
5 202.106.42.101 (202.106.42.101) 7.449 ms 7.543 ms 7.738 ms 7.893 ms
6 61.148.154.97 (61.148.154.97) 316.817 ms bt-228-025.bta.net.cn (202.106.228.25) 3.695 ms 3.672 ms *
7 124.65.58.213 (124.65.58.213) 3.056 ms 2.993 ms 2.960 ms 61.148.146.29 (61.148.146.29) 2.837 ms
8 61.148.3.34 (61.148.3.34) 2.179 ms 2.295 ms 2.442 ms 202.106.35.190 (202.106.35.190) 7.136 ms
9 * * * *
30 * * * *
[root@localhost ~]#
說明(ming):
實例6:繞過正常的路由(you)表,直接發(fa)送到網絡相連的主機
命令:
traceroute -r www.baidu.com
輸(shu)出(chu):
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
connect: 網絡不可達
[root@localhost ~]#
說明:
實例7:把對(dui)外發(fa)探測包的等(deng)待響(xiang)應(ying)時(shi)間設置(zhi)為3秒(miao)
命令(ling):
traceroute -w 3 www.baidu.com
輸出:
traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets
1 211.151.74.2 (211.151.74.2) 2.306 ms 2.469 ms 2.650 ms
2 211.151.56.1 (211.151.56.1) 0.621 ms 0.613 ms 0.603 ms
3 211.151.227.206 (211.151.227.206) 0.557 ms 0.560 ms 0.552 ms
4 210.77.139.145 (210.77.139.145) 0.708 ms 0.761 ms 0.817 ms
5 202.106.42.101 (202.106.42.101) 7.520 ms 7.774 ms 7.902 ms
6 bt-228-025.bta.net.cn (202.106.228.25) 2.890 ms 2.369 ms 61.148.154.97 (61.148.154.97) 471.961 ms
7 124.65.58.221 (124.65.58.221) 4.490 ms 4.483 ms 4.472 ms
8 123.126.6.198 (123.126.6.198) 2.948 ms 61.148.156.6 (61.148.156.6) 7.688 ms 7.756 ms
9 * * *
30 * * *
[root@localhost ~]#
說明(ming):
Traceroute的(de)工作原(yuan)理:
Traceroute最簡單的(de)基本(ben)用法是:traceroute hostname
Traceroute程序(xu)的(de)(de)(de)(de)設計是利用ICMP及IP header的(de)(de)(de)(de)TTL(Time To Live)欄位(field)。首先(xian),traceroute送出一(yi)個(ge)(ge)(ge)TTL是1的(de)(de)(de)(de)IP datagram(其實,每次送出的(de)(de)(de)(de)為3個(ge)(ge)(ge)40字節的(de)(de)(de)(de)包(bao)(bao),包(bao)(bao)括源(yuan)地(di)(di)址(zhi),目(mu)的(de)(de)(de)(de)地(di)(di)址(zhi)和包(bao)(bao)發出的(de)(de)(de)(de)時間標簽)到(dao)目(mu)的(de)(de)(de)(de)地(di)(di),當(dang)路(lu)徑上(shang)的(de)(de)(de)(de)第一(yi)個(ge)(ge)(ge)路(lu)由(you)器(qi)(router)收(shou)到(dao)這(zhe)(zhe)個(ge)(ge)(ge)datagram時,它將TTL減1。此(ci)時,TTL變為0了,所(suo)以(yi)該路(lu)由(you)器(qi)會將此(ci)datagram丟(diu)掉,并(bing)送回(hui)一(yi)個(ge)(ge)(ge)「ICMP time exceeded」消息(包(bao)(bao)括發IP包(bao)(bao)的(de)(de)(de)(de)源(yuan)地(di)(di)址(zhi),IP包(bao)(bao)的(de)(de)(de)(de)所(suo)有內(nei)容及路(lu)由(you)器(qi)的(de)(de)(de)(de)IP地(di)(di)址(zhi)),traceroute 收(shou)到(dao)這(zhe)(zhe)個(ge)(ge)(ge)消息后(hou),便知道這(zhe)(zhe)個(ge)(ge)(ge)路(lu)由(you)器(qi)存在于這(zhe)(zhe)個(ge)(ge)(ge)路(lu)徑上(shang),接著traceroute 再送出另一(yi)個(ge)(ge)(ge)TTL是2 的(de)(de)(de)(de)datagram,發現第2 個(ge)(ge)(ge)路(lu)由(you)器(qi)...... traceroute 每次將送出的(de)(de)(de)(de)datagram的(de)(de)(de)(de)TTL 加1來發現另一(yi)個(ge)(ge)(ge)路(lu)由(you)器(qi),這(zhe)(zhe)個(ge)(ge)(ge)重復(fu)的(de)(de)(de)(de)動作一(yi)直持續(xu)到(dao)某個(ge)(ge)(ge)datagram 抵達目(mu)的(de)(de)(de)(de)地(di)(di)。當(dang)datagram到(dao)達目(mu)的(de)(de)(de)(de)地(di)(di)后(hou),該主機并(bing)不會送回(hui)ICMP time exceeded消息,因(yin)為它已是目(mu)的(de)(de)(de)(de)地(di)(di)了,那(nei)么traceroute如何得知目(mu)的(de)(de)(de)(de)地(di)(di)到(dao)達了呢?
Traceroute在送(song)(song)出(chu)UDP datagrams到(dao)目的(de)(de)(de)地時,它(ta)所選擇送(song)(song)達(da)的(de)(de)(de)port number 是一個一般應用(yong)(yong)程序(xu)都(dou)不會用(yong)(yong)的(de)(de)(de)號(hao)碼(30000 以上),所以當(dang)此UDP datagram 到(dao)達(da)目的(de)(de)(de)地后(hou)該主機會送(song)(song)回一個「ICMP port unreachable」的(de)(de)(de)消(xiao)(xiao)息(xi),而當(dang)traceroute 收(shou)到(dao)這個消(xiao)(xiao)息(xi)時,便知道目的(de)(de)(de)地已(yi)經到(dao)達(da)了(le)。所以traceroute 在Server端也是沒有所謂(wei)的(de)(de)(de)Daemon 程式(shi)。
Traceroute提取發 ICMP TTL到期消(xiao)息設(she)備(bei)的IP地址(zhi)并作域(yu)名解析。每次 ,Traceroute都打印出一(yi)系列(lie)數據(ju),包括(kuo)所經過的路由設(she)備(bei)的域(yu)名及 IP地址(zhi),三(san)個(ge)包每次來回(hui)所花時間。
windows之tracert:
格式(shi):
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
參數說明(ming):
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
該診斷實(shi)用程序通過(guo)向目(mu)的(de)地(di)發(fa)(fa)(fa)送(song)具(ju)有不同生(sheng)存(cun)時間(jian) (TL) 的(de) Internet 控(kong)制信息(xi)協議 (CMP) 回應報(bao)(bao)文,以(yi)確定(ding)(ding)至(zhi)目(mu)的(de)地(di)的(de)路(lu)(lu)由(you)(you)。路(lu)(lu)徑上的(de)每個(ge)路(lu)(lu)由(you)(you)器都要在轉發(fa)(fa)(fa)該 ICMP 回應報(bao)(bao)文之前將其 TTL 值至(zhi)少減 1,因此 TTL 是有效(xiao)的(de)跳轉計數。當報(bao)(bao)文的(de) TTL 值減少到 0 時,路(lu)(lu)由(you)(you)器向源系統(tong)發(fa)(fa)(fa)回 ICMP 超(chao)時信息(xi)。通過(guo)發(fa)(fa)(fa)送(song) TTL 為 1 的(de)第一個(ge)回應報(bao)(bao)文并且(qie)在隨后的(de)發(fa)(fa)(fa)送(song)中(zhong)每次將 TTL 值加 1,直到目(mu)標響應或達到最大 TTL 值,Tracert 可以(yi)確定(ding)(ding)路(lu)(lu)由(you)(you)。通過(guo)檢查中(zhong)間(jian)路(lu)(lu)由(you)(you)器發(fa)(fa)(fa)發(fa)(fa)(fa)回的(de) ICMP 超(chao)時 (ime Exceeded) 信息(xi),可以(yi)確定(ding)(ding)路(lu)(lu)由(you)(you)器。注意,有些路(lu)(lu)由(you)(you)器“安(an)靜”地(di)丟棄生(sheng)存(cun)時間(jian) (TLS) 過(guo)期的(de)報(bao)(bao)文并且(qie)對 tracert 無效(xiao)。
參數:
-d 指(zhi)定(ding)不(bu)對計算機名(ming)解析地址。
-h maximum_hops 指定查找目(mu)標的跳轉的最大(da)數(shu)目(mu)。
-jcomputer-list 指定在(zai) computer-list 中(zhong)松散源路由。
-w timeout 等待由 timeout 對每(mei)個應答指(zhi)定的毫秒數。
target_name 目標計算機的名稱。
實例:
Tracing route to www.58.com [221.187.111.30]
over a maximum of 30 hops:
1 1 ms 1 ms 1 ms 10.58.156.1
2 1 ms <1 ms <1 ms 10.10.10.1
3 1 ms 1 ms 1 ms 211.103.193.129
4 2 ms 2 ms 2 ms 10.255.109.129
5 1 ms 1 ms 3 ms 124.205.98.205
6 2 ms 2 ms 2 ms 124.205.98.253
7 2 ms 6 ms 1 ms 202.99.1.125
8 5 ms 6 ms 5 ms 118.186.0.113
9 207 ms * * 118.186.0.106
10 8 ms 6 ms 11 ms 124.238.226.201
11 6 ms 7 ms 6 ms 219.148.19.177
12 12 ms 12 ms 16 ms 219.148.18.117
13 14 ms 17 ms 16 ms 219.148.19.125
14 13 ms 13 ms 12 ms 202.97.80.113
15 * * * Request timed out.
16 12 ms 12 ms 17 ms bj141-147-82.bjtelecom.net [219.141.147.82]
17 13 ms 13 ms 12 ms 202.97.48.2
18 * * * Request timed out.
19 14 ms 14 ms 12 ms 221.187.224.85
20 15 ms 13 ms 12 ms 221.187.104.2
21 * * * Request timed out.
22 15 ms 17 ms 18 ms 221.187.111.30
Trace complete.
關注 熵減黑客 ,一起學習成長
