一、前言
作為網(wǎng)絡(luò)工程師或者運(yùn)維工程師,traceroute命令不會(huì)陌生,它的作用類(lèi)似于ping命令,用于診斷網(wǎng)絡(luò)的連通性,不過(guò)traceroute命令輸出的命令會(huì)比ping命令豐富的多,可以跟蹤從源系統(tǒng)到目標(biāo)系統(tǒng)的路徑。
很多工程師對(duì)traceroute命令僅停留在基礎(chǔ)使用上,但是在真實(shí)的實(shí)戰(zhàn)過(guò)程中,基礎(chǔ)操作并不能解決問(wèn)題。本文我將給大家介紹幾個(gè)traceroute命令的使用例子,讓你完全掌握traceroute命令,讓我們直接開(kāi)始吧!
二、前置知識(shí)
在正式介紹命令使用前,請(qǐng)大家看下以下拓?fù)鋱D:

如圖所示,電腦想要訪(fǎng)問(wèn)服務(wù)器,期間到底走電腦->R1->R2->R4->服務(wù)器
還是走電腦->R1->R3->R4->服務(wù)器
,這個(gè)是就可以通過(guò)traceroute命令實(shí)現(xiàn),這也是traceroute命令的價(jià)值所在。
三、在Linux中安裝traceroute命令
首先我們通過(guò)命令lsb_release -a
看下我們的服務(wù)器是什么發(fā)行版:
root@ecs-adf0-0003:~#lsb_release-a
NoLSBmodulesareavailable.
DistributorID:Ubuntu
Description:Ubuntu20.04.4LTS
Release:20.04
Codename:focal
由輸出可知,我們的系統(tǒng)是Ubuntu系統(tǒng),所以安裝traceroute命令如下:
aptinstalltraceroute
安裝過(guò)程:

如果您的Linux系統(tǒng)發(fā)行版是CentOS或者Fedora,可以使用
yum install traceroute
命令。
四、在Linux中使用traceroute命令
4.1 基本用法
traceroute命令最基本的用法是:
traceroutehost
命令執(zhí)行后會(huì)顯示到達(dá)目的地所需的路由器列表。
比如我們traceroute我們的博客網(wǎng)站:
traceroutewww.wljslmz.cn
執(zhí)行結(jié)果:

如圖所示,我們執(zhí)行完traceroute www.wljslmz.cn
命令后,看到從我的ecs服務(wù)器到達(dá)www.wljslmz.cn
所在服務(wù)器一共經(jīng)歷了20臺(tái)路由器,每臺(tái)路由器響應(yīng)的時(shí)間也都打印下來(lái)了。
4.2 更改等待時(shí)間
traceroute 中的默認(rèn)等待時(shí)間是 3 秒,這個(gè)意思就是,假如有20臺(tái)路由器,每經(jīng)歷一臺(tái)路由器默認(rèn)等待時(shí)間是3秒,如果我們想改變這個(gè)值,可以加一個(gè)參數(shù)-w
:
traceroute-w1www.wljslmz.cn
執(zhí)行結(jié)果:

4.3 更改收發(fā)數(shù)據(jù)包的數(shù)量
默認(rèn)情況下,traceroute 一次發(fā)送 3 個(gè)包,假如想更改這個(gè)數(shù)量,可以使用-q
參數(shù),比如我現(xiàn)在把它改成5個(gè)包:
traceroute-q5www.wljslmz.cn
執(zhí)行結(jié)果:

由此可見(jiàn),現(xiàn)在每臺(tái)路由器收發(fā)就變成了5個(gè)包了。
4.4 更改最大跳數(shù)
所謂跳數(shù)就是一次請(qǐng)求經(jīng)歷的路由器的數(shù)量,還是這張圖:

比如流量走向是電腦->R1->R2->R4->服務(wù)器
,那么其跳數(shù)是3.
traceroute 中默認(rèn)單次查詢(xún)的最大跳數(shù)是 30,可以擴(kuò)展到 255。
如果想要更改這個(gè)參數(shù),可以加上-m
參數(shù)。
我們上面執(zhí)行的跳數(shù)都是20,我們?yōu)榱孙@示出效果,將這個(gè)值改為10:
traceroute-m10www.wljslmz.cn
執(zhí)行結(jié)果:

可以看到最大跳數(shù)改為10以后,原先經(jīng)歷20臺(tái)路由器,現(xiàn)在輸出顯示只有10臺(tái),參數(shù)生效了。
4.5 更改TTL開(kāi)始值
首先給大家解釋一下什么是TTL。
TTL英文全稱(chēng):Time To Live,翻譯成中文就是生存時(shí)間,是網(wǎng)絡(luò)技術(shù)中比較常見(jiàn)的專(zhuān)業(yè)術(shù)語(yǔ)。
如果你使用過(guò)ping命令,那么TTL經(jīng)常會(huì)看到:
root@ecs-adf0-0003:~#pingwww.wljslmz.cn
執(zhí)行結(jié)果:

TTL,專(zhuān)業(yè)點(diǎn)解釋就是用于限制數(shù)據(jù)包在 Internet 傳輸系統(tǒng)中“存活”的時(shí)間,或者說(shuō)數(shù)據(jù)包在被丟棄之前在網(wǎng)絡(luò)中的時(shí)間限制。
如果你還是不明白,你就把TTL看作是跳數(shù)限制,目的是防止數(shù)據(jù)包在網(wǎng)絡(luò)中永遠(yuǎn)流通,最大 TTL 值為 255。
數(shù)據(jù)包的 TTL 字段由發(fā)送方設(shè)置,并由到達(dá)目的地的路徑上的每個(gè)路由器減少,路由器在轉(zhuǎn)發(fā) IP 數(shù)據(jù)包時(shí)將 TTL 值減一,當(dāng)數(shù)據(jù)包 TTL 值達(dá)到 0 時(shí),路由器將其丟棄并向始發(fā)主機(jī)發(fā)送回ICMP 消息。

這就是TTL的全部解釋了,如果還想更深入的了解TTL的底層原理,瑞哥可以后期專(zhuān)門(mén)出一篇文章進(jìn)行解釋。
默認(rèn)情況下,traceroute 將從第一個(gè) TTL 開(kāi)始,如果想要更改這個(gè)值,我們可以使用-f
參數(shù)實(shí)現(xiàn):
traceroute-f8www.wljslmz.cn
執(zhí)行結(jié)果:

可以看到我們這里是從第8個(gè)TTL開(kāi)始的。
4.6 禁用主機(jī)名到 IP 地址的映射
我們?cè)趫?zhí)行traceroute www.wljslmz.cn
命令時(shí),注意箭頭所指的位置,會(huì)有域名的出現(xiàn):

現(xiàn)在是因?yàn)橛蛎容^少,假如你跟蹤的服務(wù)器中間路由器涉及到的域名比較多,那么是不便于排查問(wèn)題的,所以我們需要去除主機(jī)名到 IP 地址的映射,可以使用-n
參數(shù):
traceroute-nwww.wljslmz.cn
執(zhí)行結(jié)果:

可以看到已經(jīng)沒(méi)有域名了。
4.7 更改跟蹤路由目的端口
先問(wèn)大家可以問(wèn)題:traceroute www.wljslmz.cn
這條命令跟蹤的是什么端口?
答案是80端口,如果我們想更改這個(gè)目的端口,怎么辦?
可以使用-p
參數(shù),比如改成跟蹤其2222端口:
traceroute-p2222www.wljslmz.cn
執(zhí)行結(jié)果:

4.8 更改最大數(shù)據(jù)包大小
默認(rèn)情況下,最大數(shù)據(jù)包為60字節(jié),如下圖箭頭所示:

如果我們覺(jué)得跟蹤的路由器數(shù)量比較多,一看就不止60字節(jié),這個(gè)時(shí)候想調(diào)大,可以這樣操作:
traceroutewww.wljslmz.cn200
執(zhí)行結(jié)果:

可以看到直接在命令后加入數(shù)字即可。
我們嘗試執(zhí)行一下這條命令:
traceroutewww.wljslmz.cn1
猜一下執(zhí)行結(jié)果中,最大數(shù)據(jù)包大小是多少?
1?
當(dāng)然不是!

我們看到最終的大小是28字節(jié),也就是說(shuō)這條命令只能用來(lái)限制最大大小,而不是設(shè)置多大,包就被過(guò)濾了,28字節(jié)是跟蹤包的最小大小,你設(shè)置的值小于這個(gè)大小,那么不管用!

4.9 啟用ipv4跟蹤
traceroute-4www.wljslmz.cn
執(zhí)行結(jié)果:

4.10 啟用ipv6跟蹤
traceroute-6www.wljslmz.cn
執(zhí)行結(jié)果:

說(shuō)明我們的網(wǎng)站未支持ipv6.
4.11 使用ICMP ECHO
默認(rèn)情況下,traceroute 命令使用 UDP 端口進(jìn)行跟蹤路由,要使用 ICMP ECHO,可以結(jié)合參數(shù)-I
:
traceroute-Iwww.wljslmz.cn
執(zhí)行結(jié)果:

4.12 將traceroute信息保存到文件
這個(gè)跟traceroute命令本身沒(méi)有太大關(guān)系,有時(shí)候我們需要將traceroute的信息離線(xiàn)分析,這個(gè)時(shí)候就需要將traceroute返回信息持久化,我們可以使用以下命令:
traceroutewww.wljslmz.cn>wljslmz.txt
執(zhí)行結(jié)果:

我們通過(guò)命令more wljslmz.txt
來(lái)看下這個(gè)wljslmz.txt文件:

五、總結(jié)
traceroute 命令是一個(gè)有用且易于運(yùn)行的網(wǎng)絡(luò)診斷工具,本文給大家介紹了12個(gè)traceroute 命令示例,希望本文能夠?qū)δ褂胻raceroute 命令有所幫助,如果有問(wèn)題可以在下方評(píng)論區(qū)與我討論!
審核編輯 :李倩
-
Linux
+關(guān)注
關(guān)注
87文章
11427瀏覽量
212414 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9609瀏覽量
87040 -
Traceroute
+關(guān)注
關(guān)注
0文章
4瀏覽量
1687
原文標(biāo)題:老板讓我在Linux中使用traceroute排查服務(wù)器網(wǎng)絡(luò)問(wèn)題,幸好我收藏了這篇文章!
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
linux服務(wù)器和windows服務(wù)器
基于Linux驅(qū)動(dòng)程序源碼的網(wǎng)絡(luò)打印服務(wù)器設(shè)計(jì)
在Linux系統(tǒng)上搭建 Web 服務(wù)器
Linux服務(wù)器網(wǎng)卡驅(qū)動(dòng)安裝及問(wèn)題排除
教你linux搭建web服務(wù)器
基于Linux系統(tǒng)的FTP服務(wù)器的實(shí)現(xiàn)
排查Linux服務(wù)器性能問(wèn)題工具
如何在linux服務(wù)器中打開(kāi)端口
如何使用Checkmk監(jiān)控Linux服務(wù)器?

Linux服務(wù)器常見(jiàn)的網(wǎng)絡(luò)故障排查方法
怎么看服務(wù)器節(jié)點(diǎn)是直連還是中轉(zhuǎn)?
linux查看服務(wù)器配置
網(wǎng)絡(luò)診斷工具traceroute的使用

評(píng)論