mtr特點:能測試出主機到每一個路由間的連通性。
以下重點介紹traceroute指令。
這些程式是利用IP資料包的存活時間(TTL)值來實作其功能的。
當一台計算機發送IP資料包時,會為資料包設定存活時間(TTL)值。每當資料包經過一個路由器,其存活時間值就會減 1。當存活時間減到 0 時,路由器将不再轉發資料包,而是發送一個 ICMP TTL 資料包給最初發出資料包的計算機。
Traceroute 程式首先向目标主機發出 TTL 為 1 的資料包,發送資料包的計算機與目标主機之間的路徑中的第一個路由器,在轉發資料包時将資料包的 TTL 減 1,它發現 TTL 被減為了 0,于是向最初發出資料包的計算機發送一個 ICMP TTL 資料包,Traceroute 程式以此獲得了與目标主機之間的路徑上的第一個路由器的IP位址。後面 traceroute 程式依次向目标主機發送 TTL 為 2、3、4 … 的資料包,逐個探測出來與目标主機之間的路徑上每一個路由器的 IP 位址。
預設條件下,traceroute 首先發出 TTL = 1 的UDP 資料包,第一個路由器将 TTL 減 1 得 0 後就不再繼續轉發此資料包,而是傳回一個 ICMP 逾時封包,traceroute 從逾時封包中即可提取出資料包所經過的第一個網關的 IP 位址。然後又發送了一個 TTL = 2 的 UDP 資料包,由此可獲得第二個網關的 IP 位址。依次遞增 TTL 便獲得了沿途所有網關的 IP 位址。
并不是所有網關都會如實傳回 ICMP 逾時封包。處于安全性考慮,大多數防火牆以及啟用了防火牆功能的路由器預設配置為不傳回各種 ICMP 封包,其餘路由器或交換機也可能被管理者主動修改配置變為不傳回 ICMP 封包。是以 Traceroute 程式不一定能拿到所有的沿途網關位址。是以,當某個 TTL 值的資料包得不到響應時,并不能停止這一追蹤過程,程式仍然會把 TTL 遞增而發出下一個資料包。這個過程将一直持續到資料包發送到目标主機,或者達到預設或用參數指定的追蹤限制(maximum_hops)才結束追蹤。
依據上述原理,利用了 UDP 資料包的 Traceroute 程式在資料包到達真正的目的主機時,就可能因為該主機沒有提供 UDP 服務而簡單将資料包抛棄,并不傳回任何資訊。為了解決這個問題,Traceroute 故意使用了一個大于 30000 的端口号,因 UDP 協定規定端口号必須小于 30000 ,是以目标主機收到資料包後唯一能做的事就是傳回一個 “端口不可達” 的 ICMP 封包,于是主叫方就将端口不可達封包當作跟蹤結束的标志。
一、預設使用的是UDP協定(30000以上的端口)
二、使用TCP協定 -T -p
三、使用ICMP協定介紹 -I
如測試www.3dns.com.cn經過的路由跳數
預設跳30跳,也可以改變預設設定。
看起來不是很直覺,我們可以加入-n參數。
加入-I發送ICMP的包,跟上面一樣,發送三個包,可以看到每個包的延遲時間。
發送TCP的包
或者可以使用mtr指令進行監控(沒有安裝,可以使用yum install mtr)
如輸入mtr www.3dns.com.cn顯示如下頁面,而且是實時資料更新變動。

按q退出,或者ctrl+c
目的:1、批量主機存活掃描 (如fping指令) 2、針對主機服務掃描
作用:1、能更友善快捷擷取網絡中主機的存活狀态。
2、更加細緻、智能擷取主機服務偵查情況。
典型指令:nmap ncat(傳說中的瑞士軍刀)
具體相關nmap指令的使用我會單獨寫一篇部落格。