traceroute

顯示數據包到主機間的路徑

補充說明

traceroute命令 用於追蹤數據包在網絡上的傳輸時的全部路徑,它默認發送的數據包大小是40字節。

通過traceroute我們可以知道信息從你的計算機到互聯網另一端的主機是走的什麼路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。

traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其ip地址。

語法

1traceroute(選項)(參數)

選項

 1-d:使用Socket層級的排錯功能;
 2-f<存活數值>:設置第一個檢測數據包的存活數值TTL的大小;
 3-F:設置勿離斷位;
 4-g<網關>:設置來源路由網關,最多可設置8個;
 5-i<網絡界面>:使用指定的網絡界面送出數據包;
 6-I:使用ICMP回應取代UDP資料信息;
 7-m<存活數值>:設置檢測數據包的最大存活數值TTL的大小;
 8-n:直接使用IP地址而非主機名稱;
 9-p<通信端口>:設置UDP傳輸協議的通信端口;
10-r:忽略普通的Routing Table,直接將數據包送到遠端主機上。
11-s<來源地址>:設置本地主機送出數據包的IP地址;
12-t<服務類型>:設置檢測數據包的TOS數值;
13-v:詳細顯示指令的執行過程;
14-w<超時秒數>:設置等待遠端主機回報的時間;
15-x:開啓或關閉數據包的正確性檢驗。

參數

主機:指定目的主機IP地址或主機名。

實例

 1traceroute www.58.com
 2traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
 3 1  unknown (192.168.2.1)  3.453 ms  3.801 ms  3.937 ms
 4 2  221.6.45.33 (221.6.45.33)  7.768 ms  7.816 ms  7.840 ms
 5 3  221.6.0.233 (221.6.0.233)  13.784 ms  13.827 ms 221.6.9.81 (221.6.9.81)  9.758 ms
 6 4  221.6.2.169 (221.6.2.169)  11.777 ms 122.96.66.13 (122.96.66.13)  34.952 ms 221.6.2.53 (221.6.2.53)  41.372 ms
 7 5  219.158.96.149 (219.158.96.149)  39.167 ms  39.210 ms  39.238 ms
 8 6  123.126.0.194 (123.126.0.194)  37.270 ms 123.126.0.66 (123.126.0.66)  37.163 ms  37.441 ms
 9 7  124.65.57.26 (124.65.57.26)  42.787 ms  42.799 ms  42.809 ms
10 8  61.148.146.210 (61.148.146.210)  30.176 ms 61.148.154.98 (61.148.154.98)  32.613 ms  32.675 ms
11 9  202.106.42.102 (202.106.42.102)  44.563 ms  44.600 ms  44.627 ms
1210  210.77.139.150 (210.77.139.150)  53.302 ms  53.233 ms  53.032 ms
1311  211.151.104.6 (211.151.104.6)  39.585 ms  39.502 ms  39.598 ms
1412  211.151.111.30 (211.151.111.30)  35.161 ms  35.938 ms  36.005 ms

記錄按序列號從1開始,每個紀錄就是一跳 ,每跳錶示一個網關,我們看到每行有三個時間,單位是ms,其實就是-q的默認參數。探測數據包向每個網關發送三個數據包後,網關響應後返回的時間;如果用traceroute -q 4 www.58.com,表示向每個網關發送4個數據包。

有時我們traceroute一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回信息,所以我們得不到什麼相關的數據包返回數據。

有時我們在某一網關處延時比較長,有可能是某臺網關比較阻塞,也可能是物理設備本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您可以加-n參數來避免DNS解析,以IP格式輸出數據。

如果在局域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某臺服務器遇到問題時,我們用到traceroute 追蹤數據包所經過的網關,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能幫助我們解決。

跳數設置

 1[root@localhost ~]# traceroute -m 10 www.baidu.com
 2traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets
 3 1  192.168.74.2 (192.168.74.2)  1.534 ms  1.775 ms  1.961 ms
 4 2  211.151.56.1 (211.151.56.1)  0.508 ms  0.514 ms  0.507 ms
 5 3  211.151.227.206 (211.151.227.206)  0.571 ms  0.558 ms  0.550 ms
 6 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.729 ms  0.785 ms
 7 5  202.106.42.101 (202.106.42.101)  7.978 ms  8.155 ms  8.311 ms
 8 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
 9 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
10 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
11 9  * * *
1210  * * *

其它一些實例

1traceroute -m 10 www.baidu.com # 跳數設置
2traceroute -n www.baidu.com    # 顯示IP地址,不查主機名
3traceroute -p 6888 www.baidu.com  # 探測包使用的基本UDP端口設置6888
4traceroute -q 4 www.baidu.com  # 把探測包的個數設置爲值4
5traceroute -r www.baidu.com    # 繞過正常的路由表,直接發送到網絡相連的主機
6traceroute -w 3 www.baidu.com  # 把對外發探測包的等待響應時間設置爲3秒

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: