一、前言
作為網絡工程師或者運維工程師,traceroute命令不會陌生,它的作用類似于ping命令,用于診斷網絡的連通性,不過traceroute命令輸出的命令會比ping命令豐富的多,可以跟蹤從源系統到目標系統的路徑。
很多工程師對traceroute命令僅停留在基礎使用上,但是在真實的實戰過程中,基礎操作并不能解決問題。本文我將給大家介紹幾個traceroute命令的使用例子,讓你完全掌握traceroute命令,讓我們直接開始吧!
二、前置知識
在正式介紹命令使用前,請大家看下以下拓撲圖:
如圖所示,電腦想要訪問服務器,期間到底走電腦->R1->R2->R4->服務器
還是走電腦->R1->R3->R4->服務器
,這個是就可以通過traceroute命令實現,這也是traceroute命令的價值所在。
三、在Linux中安裝traceroute命令
首先我們通過命令lsb_release -a
看下我們的服務器是什么發行版:
root@ecs-adf0-0003:~#lsb_release-a
NoLSBmodulesareavailable.
DistributorID:Ubuntu
Description:Ubuntu20.04.4LTS
Release:20.04
Codename:focal
由輸出可知,我們的系統是Ubuntu系統,所以安裝traceroute命令如下:
aptinstalltraceroute
安裝過程:
如果您的Linux系統發行版是CentOS或者Fedora,可以使用
yum install traceroute
命令。
四、在Linux中使用traceroute命令
4.1 基本用法
traceroute命令最基本的用法是:
traceroutehost
命令執行后會顯示到達目的地所需的路由器列表。
比如我們traceroute我們的博客網站:
traceroutewww.wljslmz.cn
執行結果:
如圖所示,我們執行完traceroute www.wljslmz.cn
命令后,看到從我的ecs服務器到達www.wljslmz.cn
所在服務器一共經歷了20臺路由器,每臺路由器響應的時間也都打印下來了。
4.2 更改等待時間
traceroute 中的默認等待時間是 3 秒,這個意思就是,假如有20臺路由器,每經歷一臺路由器默認等待時間是3秒,如果我們想改變這個值,可以加一個參數-w
:
traceroute-w1www.wljslmz.cn
執行結果:
4.3 更改收發數據包的數量
默認情況下,traceroute 一次發送 3 個包,假如想更改這個數量,可以使用-q
參數,比如我現在把它改成5個包:
traceroute-q5www.wljslmz.cn
執行結果:
由此可見,現在每臺路由器收發就變成了5個包了。
4.4 更改最大跳數
所謂跳數就是一次請求經歷的路由器的數量,還是這張圖:
比如流量走向是電腦->R1->R2->R4->服務器
,那么其跳數是3.
traceroute 中默認單次查詢的最大跳數是 30,可以擴展到 255。
如果想要更改這個參數,可以加上-m
參數。
我們上面執行的跳數都是20,我們為了顯示出效果,將這個值改為10:
traceroute-m10www.wljslmz.cn
執行結果:
可以看到最大跳數改為10以后,原先經歷20臺路由器,現在輸出顯示只有10臺,參數生效了。
4.5 更改TTL開始值
首先給大家解釋一下什么是TTL。
TTL英文全稱:Time To Live,翻譯成中文就是生存時間,是網絡技術中比較常見的專業術語。
如果你使用過ping命令,那么TTL經常會看到:
root@ecs-adf0-0003:~#pingwww.wljslmz.cn
執行結果:
TTL,專業點解釋就是用于限制數據包在 Internet 傳輸系統中“存活”的時間,或者說數據包在被丟棄之前在網絡中的時間限制。
如果你還是不明白,你就把TTL看作是跳數限制,目的是防止數據包在網絡中永遠流通,最大 TTL 值為 255。
數據包的 TTL 字段由發送方設置,并由到達目的地的路徑上的每個路由器減少,路由器在轉發 IP 數據包時將 TTL 值減一,當數據包 TTL 值達到 0 時,路由器將其丟棄并向始發主機發送回ICMP 消息。
這就是TTL的全部解釋了,如果還想更深入的了解TTL的底層原理,瑞哥可以后期專門出一篇文章進行解釋。
默認情況下,traceroute 將從第一個 TTL 開始,如果想要更改這個值,我們可以使用-f
參數實現:
traceroute-f8www.wljslmz.cn
執行結果:
可以看到我們這里是從第8個TTL開始的。
4.6 禁用主機名到 IP 地址的映射
我們在執行traceroute www.wljslmz.cn
命令時,注意箭頭所指的位置,會有域名的出現:
現在是因為域名比較少,假如你跟蹤的服務器中間路由器涉及到的域名比較多,那么是不便于排查問題的,所以我們需要去除主機名到 IP 地址的映射,可以使用-n
參數:
traceroute-nwww.wljslmz.cn
執行結果:
可以看到已經沒有域名了。
4.7 更改跟蹤路由目的端口
先問大家可以問題:traceroute www.wljslmz.cn
這條命令跟蹤的是什么端口?
答案是80端口,如果我們想更改這個目的端口,怎么辦?
可以使用-p
參數,比如改成跟蹤其2222端口:
traceroute-p2222www.wljslmz.cn
執行結果:
4.8 更改最大數據包大小
默認情況下,最大數據包為60字節,如下圖箭頭所示:
如果我們覺得跟蹤的路由器數量比較多,一看就不止60字節,這個時候想調大,可以這樣操作:
traceroutewww.wljslmz.cn200
執行結果:
可以看到直接在命令后加入數字即可。
我們嘗試執行一下這條命令:
traceroutewww.wljslmz.cn1
猜一下執行結果中,最大數據包大小是多少?
1?
當然不是!
我們看到最終的大小是28字節,也就是說這條命令只能用來限制最大大小,而不是設置多大,包就被過濾了,28字節是跟蹤包的最小大小,你設置的值小于這個大小,那么不管用!
4.9 啟用ipv4跟蹤
traceroute-4www.wljslmz.cn
執行結果:
4.10 啟用ipv6跟蹤
traceroute-6www.wljslmz.cn
執行結果:
說明我們的網站未支持ipv6.
4.11 使用ICMP ECHO
默認情況下,traceroute 命令使用 UDP 端口進行跟蹤路由,要使用 ICMP ECHO,可以結合參數-I
:
traceroute-Iwww.wljslmz.cn
執行結果:
4.12 將traceroute信息保存到文件
這個跟traceroute命令本身沒有太大關系,有時候我們需要將traceroute的信息離線分析,這個時候就需要將traceroute返回信息持久化,我們可以使用以下命令:
traceroutewww.wljslmz.cn>wljslmz.txt
執行結果:
我們通過命令more wljslmz.txt
來看下這個wljslmz.txt文件:
五、總結
traceroute 命令是一個有用且易于運行的網絡診斷工具,本文給大家介紹了12個traceroute 命令示例,希望本文能夠對您使用traceroute 命令有所幫助,如果有問題可以在下方評論區與我討論!
審核編輯 :李倩
-
Linux
+關注
關注
87文章
11296瀏覽量
209358 -
服務器
+關注
關注
12文章
9129瀏覽量
85344 -
Traceroute
+關注
關注
0文章
4瀏覽量
1634
原文標題:老板讓我在Linux中使用traceroute排查服務器網絡問題,幸好我收藏了這篇文章!
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論