traceroute命令

traceroute命令

traceroute命令嘗試跟蹤IP數據包到某個Internet主機的路由,方法是使用一個小ttl(生存時間)啓動探測數據包,而後偵聽來自網關的ICMP超時回覆,它以ttl1開始探測,並將其增長1,直到得到ICMP port unreachableTCP 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: 顯式強制IPv4IPv6跟蹤路由,默認狀況下,程序將嘗試解析給定的名稱,並自動選擇適當的協議,若是解析主機名同時返回IPv4IPv6地址,則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容許使用numaddraddr...的形式,其中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,以逗號分隔,例如若是OPTShelp,則打印幫助信息。
  • --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,默認爲1github

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/
相關文章
相關標籤/搜索