traceroute
命令嘗試跟蹤IP
數據包到某個Internet
主機的路由,方法是使用一個小ttl
(生存時間)啓動探測數據包,而後偵聽來自網關的ICMP
超時回覆,它以ttl
爲1
開始探測,並將其增長1
,直到得到ICMP port unreachable
或TCP reset
,這意味着咱們到達了host
,或達到了最大值(默認爲30
跳),在每一個ttl
設置處發送三個探測(默認),並打印一行,顯示ttl
、網關地址和每一個探測的往返時間,在請求時,地址後面能夠有附加信息,若是探測結果來自不一樣的網關,則會打印每一個響應系統的地址,若是在5.0
秒內(默認值)沒有響應,則會爲該探測器打印一個*
。html
traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate,...] [-i device] [-m max_ttl] [-p port] [-s src_addr] [-q nqueries] [-N squeries] [-t tos] [-l flow_label] [-w waittime] [-z sendwait] [-UL] [-D] [-P proto] [--sport=port] [-M method] [-O mod_options] [--mtu] [--back] host [packet_len]
-4, -6
: 顯式強制IPv4
或IPv6
跟蹤路由,默認狀況下,程序將嘗試解析給定的名稱,並自動選擇適當的協議,若是解析主機名同時返回IPv4
和IPv6
地址,則traceroute
將使用IPv4
。-I, --icmp
: 使用ICMP ECHO
進行探測。-T, --tcp
: 使用TCP SYN
進行探測。-d, --debug
: 啓用套接字級調試,若是內核支持的話。-F, --dont-fragment
: 不要對探測數據包進行分段,對於IPv4
它還會設置DF
位,該位告訴中間路由器也不要進行遠程分段。經過packet_len
命令參數更改探測數據包的大小,能夠手動獲取有關單個網絡躍點的MTU
的信息。從Linux
內核2.6.22
開始,非碎片化功能(例如-F
或--mtu
)才能正常工做,在該版本以前,IPv6
始終是零散的,IPv4
只能使用一次(從路由緩存中)發現的最終mtu
,它可能小於設備的實際mtu
。-f first_ttl, --first=first_ttl
: 指定要啓動的TTL
,默認爲1
。-g gate,..., --gateway=gate,...
: 告訴traceroute
向傳出數據包添加IP
源路由選項,該選項告訴網絡經過指定網關路由數據包(出於安全緣由,大多數路由器已禁用源路由),一般容許指定多個網關(以逗號分隔的列表)。對於IPv6
容許使用num
、addr
、addr
、...
的形式,其中num
是路由報頭類型(默認爲類型2
),注意,根據rfc 5095
,如今不同意使用0
型路由頭。-i device, --interface=device
: 指定traceroute
應該經過其發送數據包的接口,缺省狀況下,接口是根據路由表選擇的。-m max_ttl, --max-hops=max_ttl
: 指定traceroute
探測的最大跳數(最大生存時間值),默認值爲30
。-N squeries, --sim-queries=squeries
: 指定同時發送的探測報文數,同時發送多個探針能夠大大提升跟蹤路由的速度,默認值爲16
,注意某些路由器和主機可使用ICMP
速率限制,在這種狀況下,指定太大的數字可能會致使某些響應丟失。-n
: 在顯示IP
地址時不要嘗試將它們映射到主機名。-p port, --port=port
: 對於UDP
跟蹤,指定traceroute
將使用的目的端口號,目標端口號將隨每一個探針遞增,對於ICMP
跟蹤,指定初始ICMP
序列值(每一個探針也增長),對於TCP
和其餘協議,僅指定要鏈接的(恆定)目標端口,使用tcptraceroute
包裝程序時,-p
指定源端口。-t tos, --tos=tos
: 對於IPv4
,設置服務類型TOS
和優先級值,有用的值是16
低延遲和8
高吞吐量,要使用某些TOS
優先級值,必須是超級用戶,對於IPv6
,設置流量控制值。-l flow_label, --flowlabel=flow_label
: 對IPv6
數據包使用指定的flow_label
。 -w MAX,HERE,NEAR, --wait=MAX,HERE,NEAR
: 設置等待探測響應的時間,以秒爲單位,默認爲5.0
。-q nqueries, --queries=nqueries
: 設置每一個躍點的探測數據包數,默認值爲3
。-r
: 繞過常規路由表,並直接發送到鏈接的網絡上的主機,若是主機不在直接鏈接的網絡上,則返回錯誤,此選項可用於經過沒有路由的接口對本地主機執行ping
操做。-s src_addr, --source=src_addr
: 選擇一個備用源地址,請注意必須選擇一個接口的地址,默認狀況下使用傳出接口的地址。-z sendwait, --sendwait=sendwait
: 探測之間的最小時間間隔,默認值爲0
,若是該值大於10
,則以毫秒爲單位指定一個數字,不然爲秒數,也容許使用浮點值,當某些路由器對ICMP
消息使用速率限制時很是有用。-e, --extensions
: 顯示ICMP
擴展名,通用格式爲CLASS / TYPE
即後跟十六進制轉儲,所示的MPLS
多協議標籤交換數據已解析,格式爲MPLS:L=label,E=exp_use,S=stack_bottom,T=TTL (with any further objects separated by a slash ("/"))
。-A, --as-path-lookups
: 在路由註冊表中執行AS
路徑查找,並在相應地址後直接打印結果。-M name --module=name
: 使用指定的模塊(內置或外部)用於traceroute
操做,大多數方法都有其快捷方式,例如-I
表示-M icmp
等。-O OPTS,..., --options=OPTS,...
: 將特定於模塊的選項OPTS
用於traceroute
模塊,容許幾個OPTS
,以逗號分隔,例如若是OPTS
是help
,則打印幫助信息。--sport=num
: 將源端口號用於傳出數據包,表示爲-N 1
。--fwmark=num
: 爲傳出數據包設置防火牆標記。-U --udp
: 使用UDP
到特定端口進行路由,而不是每一個探針增長端口,默認端口爲53
。-UL
: 使用UDP LITE
進行路由,默認目標端口爲53
。-D --dccp
: 使用DCCP
請求進行路由,默認端口爲33434
。-P prot --protocol=prot
: 使用協議保護的原始數據包進行路由。--mtu
: 沿着被追蹤的路徑發現MTU
,表示爲-F-N 1
。--back
: 推斷後向路徑中的跳數,若是不一樣則打印。-V
: 輸出版本信息。--help
: 輸出幫助信息。使用traceroute
查看路由信息。linux
traceroute www.google.com
指定IPv4
查看路由信息。git
traceroute -4 www.google.com
指定要啓動的TTL
,默認爲1
。github
traceroute -f 3 www.google.com
不將IP
地址解析爲其域名。shell
traceroute -n www.google.com
設置每一個躍點的探測數,默認爲3
。緩存
traceroute -q 1 www.google.com
指定完整的數據包長度,默認是60
字節的數據包。安全
traceroute www.google.com 100
設置要使用的目標端口,默認爲33434
。網絡
traceroute -p 20292 www.google.com
https://github.com/WindrunnerMax/EveryDay
https://www.computerhope.com/unix/utracero.htm https://www.runoob.com/linux/linux-comm-traceroute.html https://www.geeksforgeeks.org/traceroute-command-in-linux-with-examples/