Linux 中使用 traceroute 命令跟蹤目標(biāo)地址
traceroute 類似于 ping 命令,但是提供了更詳細(xì)的信息輸出,它跟蹤從原點(diǎn)到目標(biāo)系統(tǒng)的路由。當(dāng)你連接到某個(gè)遠(yuǎn)程系統(tǒng)時(shí),數(shù)據(jù)會(huì)經(jīng)過幾個(gè)中間節(jié)點(diǎn)(比如你的路由器,ISP路由等等)的傳輸。
traceroute 一般為系統(tǒng)管理員或者網(wǎng)絡(luò)管理員用于對(duì)網(wǎng)絡(luò)進(jìn)行故障排除。
在 Linux 中安裝 traceroute
在大多數(shù) Linux 發(fā)行版中,traceroute 都沒有被預(yù)安裝,所以需要我們手動(dòng)安裝。
如果你用的是 Ubuntu,可以使用如下命令安裝:
如果你用的是 Fedora,可以使用如下命令:
下面,我們介紹幾個(gè)使用 traceroute 的例子。
使用 traceroute 命令
我們先來介紹一個(gè)最基本的例子,使用 traceroute 命令跟蹤一個(gè)主機(jī)名,它將顯示到達(dá)目的地所需的路由器列表(帶IP):
如上圖所示,它需要7個(gè)路由器才能到達(dá)目的地,默認(rèn)情況下,它向每個(gè)路由器發(fā)送3個(gè)包,并返回響應(yīng)所需的時(shí)間。
下面我們來看看其他幾個(gè)例子。
1、配置等待時(shí)間
traceroute 中的默認(rèn)等待時(shí)間為3秒,要修改這個(gè)時(shí)間,可以使用 -w 選項(xiàng)。比如,我們將等待時(shí)間改為 1 秒:
2、更改收發(fā)包的數(shù)量
默認(rèn)情況下,traceroute 為一個(gè)躍點(diǎn)(hop)發(fā)送3個(gè)包,如果想更改此行為,可使用 -q 選項(xiàng)。
比如,我們我們將其改為4個(gè)數(shù)據(jù)包:
3、指定最大躍點(diǎn)數(shù)
在traceroute中,單個(gè)查詢的默認(rèn)最大跳數(shù)為30,可以擴(kuò)展到255。使用 -m 選項(xiàng):
4、指定 TTL
默認(rèn)情況下,traceroute 將以第一個(gè) TTL 開始,但您可以使用 -f 選項(xiàng)更改此行為。
如下例子,我們從第5個(gè)TTL開始跟蹤 google:
?
5、添加備用源IP地址
使用-s 選項(xiàng)添加備用 IP 地址:
??
6、跟蹤時(shí)禁用主機(jī)名映射到IP地址
如果出于某種原因希望在跟蹤時(shí)禁用主機(jī)名映射,可以使用 -n 選項(xiàng):
?
7、通過網(wǎng)關(guān)路由包
可以在要跟蹤路由的域時(shí),使用 -g 選項(xiàng)指定網(wǎng)關(guān)地址。
比如,我們添加 192.168.1.7 作為網(wǎng)關(guān)地址:
8、更改目標(biāo)端口
可以使用 -p 來指定要跟蹤的目標(biāo)端口:
9、設(shè)置最大數(shù)據(jù)包長度
默認(rèn)情況下,traceroute 跟蹤的數(shù)據(jù)包長度為 60 字節(jié)(bytes),可以在目標(biāo)地址后跟一個(gè)數(shù)字(即包大小)來修改:
10、禁用探測(cè)數(shù)據(jù)包碎片(probe packet fragmentation)
如果你不想允許探測(cè)數(shù)據(jù)包碎片化,有一種簡(jiǎn)單的方法來實(shí)現(xiàn)這個(gè)目的,使用 -F 選項(xiàng):
如果你想要了解 traceroute 是如何工作的,可以參考另一篇指南,這個(gè)指南解釋了 traceroute 的工作原理,地址如下: