一、基礎知識
路由跟蹤(Routing Trace)是用來追蹤IP數據包在網路中的傳輸狀態的一種機制,可以幫助我們找到網路中發生故障的位置。在linux操作系統中,路由跟蹤是通過iproute2工具包來實現的。
路由跟蹤可以追蹤IP數據包在整個路由路徑中的轉發情況,我們可以通過路由跟蹤來確定數據包是被丟棄還是被正確轉發,從而快速排查網路故障。
下面是一些常用的路由跟蹤命令:
traceroute -I -n -p 80 www.example.com
tracepath -n -m 5 -p 80 www.example.com
mtr www.example.com
二、使用traceroute進行路由跟蹤
traceroute是一個非常常用的路由跟蹤工具,它可以幫助我們了解IP在網路中的傳輸情況。下面我們來看一個例子:
traceroute -I -n -p 80 www.example.com
這個命令的作用是使用ICMP協議進行路由跟蹤,目標IP為www.example.com,目標埠為80。它將逐一顯示IP數據包從本機到目標主機的路由路徑。其中,-I參數表示使用ICMP協議,-n參數表示不需要將IP地址解析為主機名,-p參數表示指定目標埠。
執行這個命令後,我們可以看到如下輸出:
1 192.168.1.1 (192.168.1.1) 1.112 ms 1.104 ms 1.118 ms
2 202.120.166.169 (202.120.166.169) 9.688 ms 9.686 ms 9.674 ms
3 202.120.224.170 (202.120.224.170) 13.853 ms 14.281 ms 14.538 ms
4 202.120.224.130 (202.120.224.130) 15.309 ms 15.305 ms 15.286 ms
5 202.120.224.69 (202.120.224.69) 14.935 ms 14.936 ms 14.943 ms
6 101.4.116.102 (101.4.116.102) 30.500 ms 30.537 ms 30.606 ms
7 101.4.117.14 (101.4.117.14) 30.257 ms 30.235 ms 30.237 ms
8 101.4.120.70 (101.4.120.70) 35.136 ms 35.202 ms 35.179 ms
9 * * *
每一行的前面有一個數字,表示數據包從源地址到目標地址經過的跳數。後面跟著的是一個地址,表示經過該跳的下一個設備的IP地址。再後面是三個時間值,表示三次從本機發送數據包到目標設備的響應時間。最後一行表示目標設備無法響應。
三、使用tracepath進行路由跟蹤
tracepath是另外一個常用的路由跟蹤工具,與traceroute相比,它的輸出更簡潔。
tracepath -n -m 5 -p 80 www.example.com
這個命令的作用是使用默認的UDP協議進行路由跟蹤,目標IP為www.example.com,目標埠為80,最大跳數為5。它將顯示從本機到目標主機經過的所有跳數,以及每個跳數經過的時間。
執行這個命令後,我們可以看到如下輸出:
1: 192.168.1.1 1.227ms pmtu 1500
1: 202.120.166.169 11.719ms
2: 202.120.224.170 15.854ms
3: 202.120.224.130 15.416ms
4: 202.120.224.69 18.615ms
5: 101.4.116.102 31.194ms
Resume: pmtu 1500
從這個輸出中,我們可以看到從本機到目標主機的所有跳數,以及每個跳數所需的時間。第一行中的pmtu 1500表示該路徑的MTU值為1500位元組,Resume表示該數據包的響應時間。
四、使用mtr進行路由跟蹤
mtr是一個功能非常強大的路由跟蹤工具,它可以實時顯示路由跟蹤的結果,並且可以進行帶寬測試。
mtr www.example.com
這個命令的作用是使用UDP協議進行路由跟蹤,目標IP為www.example.com。它將繪製一個互動式的圖表,顯示到目標主機的路由路徑,以及每個路徑經過的時間和可達性。
執行這個命令後,我們可以看到如下輸出:
My traceroute [v0.85]
(linux4u) Tue Oct 6 00:39:47 2020
Resolver: Shared to [email protected]
Destination: www.example.com (www.example.com)
Packets: Sent = 30, Received = 30, Lost = 0 (0% loss)
...
[中間省略部分輸出]
...
Name or service not known
從這個輸出中,我們可以看到每個路徑經過的時間和可達性,以及每個路徑的帶寬使用率。
五、總結
本文介紹了在linux系統中使用traceroute、tracepath和mtr進行路由跟蹤的方法。通過這些工具,在排查網路故障時,我們可以快速定位到故障點,提高排障效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/288658.html