首頁 > 軟體

Linux常用網路工具:路由掃描之traceroute

2020-06-16 17:59:18

之前兩篇《Linux常用網路工具:fping主機掃描》和《Linux常用網路工具:hping高階主機掃描》都是關於主機掃描的,本篇介紹Linux下常用的路由掃描工具traceroute和mtr。

路由掃描主要是查詢本機到另一個主機經過的路由跳數及資料延遲情況。

traceroute基本使用

--------------------------------------------------------------------------------

路由掃描工具的原理都是存活時間(TTL)來實現的。每當封包經過一個路由器,其存活時間就會減1。當其存活時間是0時,主機便取消封包,並傳送一個ICMP TTL封包給原封包的發出者,路由掃描工具就通過這個回送的ICMP來獲得經過的每一跳路由的資訊。

Linux下的traceroute和Windows的tracert功能相似,所不同的是Windows的tracert傳送的是ICMP報文,Linux的traceroute傳送的是UDP封包。

由於traceroute使用UDP協定,所以其目標埠號預設為33433,一般應用程式都不會用到這個埠,所以目標主機會回送ICMP。

traceroute也支援傳送TCP和ICMP:

 -I  --icmp                  Use ICMP ECHO for tracerouting
 -T  --tcp                  Use TCP SYN for tracerouting
 -p port  --port=port


一般的Linux都會預設帶有traceroute工具,如果沒有可以yum安裝一下。

traceroute最簡單的基本用法是:traceroute hostname,範例:

# traceroute  192.168.0.99
traceroute to 192.168.0.99 (192.168.0.99), 30 hops max, 60 byte packets
 1  192.168.2.1 (192.168.2.1)  5.642 ms  5.901 ms  12.287 ms
 2  192.168.0.99 (192.168.0.99)  0.416 ms  1.193 ms  1.045 ms


traceroute會對每個節點測試三次,因此每一行會有三個時間,通過這個時間可以分析出哪一個路由節點延時最大。

traceroute使用技巧

--------------------------------------------------------------------------------

用traceroute一些網站時,可能無法到達最終節點,如:

這主要是因為有些伺服器把UDP封包遮蔽了,所以沒有返回ICMP。

對於有HTTP服務的主機,可以用引數設定traceroute使用TCP協定進行探測,就可以獲得最終節點:

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-06/118487.htm


IT145.com E-mail:sddin#qq.com