ping 丟包或不通時(shí)本地檢測(cè)方法
當(dāng)客戶端訪問目標(biāo)服務(wù)器出現(xiàn) ping 丟包或 ping 不通時(shí),可以通過 tracert 或 mtr 等工具進(jìn)行鏈路測(cè)試來判斷問題來源。本文先介紹了進(jìn)行鏈路測(cè)試的相關(guān)工具,然后對(duì)測(cè)試結(jié)果分析及測(cè)試步驟進(jìn)行了說明。
traceroute 命令行工具
traceroute 是幾乎所有 Linux 發(fā)行版本預(yù)裝的網(wǎng)絡(luò)測(cè)試工具,用于跟蹤 Internet 協(xié)議(IP)數(shù)據(jù)包傳送到目標(biāo)地址時(shí)經(jīng)過的路徑。
traceroute 先發(fā)送具有小的最大存活時(shí)間值(Max_TTL)的 UDP 探測(cè)數(shù)據(jù)包,然后偵聽從網(wǎng)關(guān)開始的整個(gè)鏈路上的 ICMP TIME_EXCEEDED 響應(yīng)。探測(cè)從TTL=1 開始,TTL 值逐步增加,直至接收到ICMP PORT_UNREACHABLE 消息。ICMP PORT_UNREACHABLE 消息用于標(biāo)識(shí)目標(biāo)主機(jī)已經(jīng)被定位,或命令已經(jīng)達(dá)到允許跟蹤的最大 TTL 值。
traceroute 默認(rèn)發(fā)送 UDP 數(shù)據(jù)包進(jìn)行鏈路探測(cè)�?梢酝ㄟ^ -I 參數(shù)來指定發(fā)送 ICMP 數(shù)據(jù)包用于探測(cè)。
用法說明:
traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] Host [ PacketSize ]
示例輸出:
[root@centos ~]# traceroute -I 223.5.5.5 traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets 1 * * * 2 192.168.17.20 (192.168.17.20) 3.965 ms 4.252 ms 4.531 ms 3 111.1.20.41 (111.1.20.41) 6.109 ms 6.574 ms 6.996 ms 4 111.1.34.197 (111.1.34.197) 2.407 ms 2.451 ms 2.533 ms 5 211.138.114.25 (211.138.114.25) 1.321 ms 1.285 ms 1.304 ms 6 211.138.114.70 (211.138.114.70) 2.417 ms 211.138.114.66 (211.138.114.66) 1.857 ms 211.138.114.70 (211.138.114.70) 2.002 ms 7 42.120.244.194 (42.120.244.194) 2.570 ms 2.536 ms 42.120.244.186 (42.120.244.186) 1.585 ms 8 42.120.244.246 (42.120.244.246) 2.706 ms 2.666 ms 2.437 ms 9 * * * 10 public1.alidns.com (223.5.5.5) 2.817 ms 2.676 ms 2.401 ms
常見可選參數(shù)說明:
-d 使用Socket層級(jí)的排錯(cuò)功能。
-f 設(shè)置第一個(gè)檢測(cè)數(shù)據(jù)包的存活數(shù)值TTL的大小。
-F 設(shè)置不要分段標(biāo)識(shí)。
-g 設(shè)置來源路由網(wǎng)關(guān),最多可設(shè)置8個(gè)。
-i 使用指定的網(wǎng)卡送出數(shù)據(jù)包。用于主機(jī)有多個(gè)網(wǎng)卡時(shí)。
-I 使用ICMP數(shù)據(jù)包替代 UDP 數(shù)據(jù)包進(jìn)行探測(cè)。
-m 設(shè)置檢測(cè)數(shù)據(jù)包的最大存活數(shù)值TTL的大小。
-n 直接使用IP地址而非主機(jī)名稱(禁用 DNS 反查)。
-p 設(shè)置UDP傳輸協(xié)議的通信端口。
-r 忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。
-s 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。
-t 設(shè)置檢測(cè)數(shù)據(jù)包的TOS數(shù)值。
-v 詳細(xì)顯示指令的執(zhí)行過程。
-w 設(shè)置等待遠(yuǎn)端主機(jī)回包時(shí)間。
-x 開啟或關(guān)閉數(shù)據(jù)包的正確性檢驗(yàn)。
TRACERT (Trace Route) 是 Windows 自帶的網(wǎng)絡(luò)診斷命令行實(shí)用程序,用于跟蹤 Internet 協(xié)議 (IP) 數(shù)據(jù)包傳送到目標(biāo)地址時(shí)經(jīng)過的路徑。
TRACERT 通過向目標(biāo)地址發(fā)送 ICMP 數(shù)據(jù)包來確定到目標(biāo)地址的路由。在這些數(shù)據(jù)包中,TRACERT 使用了不同的 IP“生存期”(TTL) 值。由于要求沿途的路由器在轉(zhuǎn)發(fā)數(shù)據(jù)包前至少必須將 TTL 減少 1,因此 TTL 實(shí)際上相當(dāng)于一個(gè)躍點(diǎn)計(jì)數(shù)器 (hop counter)。當(dāng)某個(gè)數(shù)據(jù)包的 TTL 達(dá)到零 (0) 時(shí),相應(yīng)節(jié)點(diǎn)就會(huì)向源計(jì)算機(jī)發(fā)送一個(gè) ICMP“超時(shí)”的消息。
TRACERT 第一次發(fā)送 TTL 為 1 的數(shù)據(jù)包,并在每次后續(xù)傳輸時(shí)將 TTL 增加 1,直到目標(biāo)地址響應(yīng)或達(dá)到 TTL 的最大值。中間路由器發(fā)送回來的 ICMP“超時(shí)”消息中包含了相應(yīng)節(jié)點(diǎn)的信息。
用法說明:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
示例輸出:
C:\> tracert -d 223.5.5.5 通過最多 30 個(gè)躍點(diǎn)跟蹤到 223.5.5.5 的路由 1 * * * 請(qǐng)求超時(shí)。 2 9 ms 3 ms 12 ms 192.168.17.20 3 4 ms 9 ms 2 ms 111.1.20.41 4 9 ms 2 ms 1 ms 111.1.34.197 5 11 ms * * 211.140.0.57 6 3 ms 2 ms 2 ms 211.138.114.62 7 2 ms 2 ms 1 ms 42.120.244.190 8 32 ms 4 ms 3 ms 42.120.244.238 9 * * * 請(qǐng)求超時(shí)。 10 3 ms 2 ms 2 ms 223.5.5.5 跟蹤完成。
常見可選參數(shù)說明:
-d:指定不將地址解析為主機(jī)名(禁用 DNS 反解)。
-h:maximum_hops,指定搜索目標(biāo)地址時(shí)的最大躍點(diǎn)數(shù)。
-j: host-list,指定沿主機(jī)列表的松散源路由。
-w:timeout,由每個(gè)回復(fù)的 timeout 指定的等待毫秒數(shù)。
-R:跟蹤往返行程路徑(僅適用于 IPv6)。
-S:srcaddr,要使用的源地址(僅適用于 IPv6)。
-4:強(qiáng)制使用 IPv4。
-6:強(qiáng)制使用 IPv6。
target_host:目標(biāo)主機(jī)域名或 IP 地址。
WinMTR 是 mtr 工具在 Windows 環(huán)境下的圖形化實(shí)現(xiàn),但進(jìn)行了功能簡化,只支持 mtr部分參數(shù)的調(diào)整設(shè)置。WinMTR 默認(rèn)發(fā)送ICMP 數(shù)據(jù)包進(jìn)行探測(cè),無法切換。
WinMTR 可以從其官方網(wǎng)站下載獲取。
和 mtr 一樣,相比 tracert,WinMTR 能避免節(jié)點(diǎn)波動(dòng)對(duì)測(cè)試結(jié)果的影響,所以測(cè)試結(jié)果更正確。所以,在 WinMTR 可用的情況下,建議優(yōu)先使用WinMTR 進(jìn)行鏈路測(cè)試。
用法說明:
WinMTR 無需安裝,直接解壓運(yùn)行即可。操作方法非常簡單,說明如下:
如下圖所示,運(yùn)行程序后,在 Host 字段輸入目標(biāo)服務(wù)器域名或 IP(注意前面不要包含空格)。
點(diǎn)擊 Start 開始測(cè)試(開始測(cè)試后,相應(yīng)按鈕變成了 Stop)。
運(yùn)行一段時(shí)間后,點(diǎn)擊 Stop 停止測(cè)試。
其它選項(xiàng)說明:
Copy Text to clipboard:將測(cè)試結(jié)果以文本格式復(fù)制到粘貼板。
Copy HTML to clipboard:將測(cè)試結(jié)果以 HTML 格式復(fù)制到粘貼板。
Export TEXT:將測(cè)試結(jié)果以文本格式導(dǎo)出到指定文件。
Export HTML:將測(cè)試結(jié)果以 HTML 格式導(dǎo)出到指定文件。
Options:可選參數(shù),包括:
Interval(sec):每次探測(cè)的間隔(過期)時(shí)間。默認(rèn)為 1 秒。
Ping size(bytes): ping 探測(cè)所使用的數(shù)據(jù)包大小,默認(rèn)為 64 字節(jié)。、
Max hosts in LRU list: LRU 列表支持的最大主機(jī)數(shù),默認(rèn)值為 128。
Resolve names:通過反查 IP 以域名顯示相關(guān)節(jié)點(diǎn)。
返回結(jié)果說明:
默認(rèn)配置下,返回結(jié)果中各數(shù)據(jù)列的說明:
第一列(Hostname):節(jié)點(diǎn) IP 或域名。
第二列(Nr):節(jié)點(diǎn)編號(hào)。
第三列(Loss%):節(jié)點(diǎn)丟包率。
第四列(Sent):已發(fā)送的數(shù)據(jù)包數(shù)量。
第五列(Recv):已成功接收的數(shù)據(jù)包數(shù)量。
第六、七、八、九列(Best 、Avg、Worst、Last):分別是到相應(yīng)節(jié)點(diǎn)延遲的最小值、平均值、最大值和最后一次值。
第八列(StDev):標(biāo)準(zhǔn)偏差。越大說明相應(yīng)節(jié)點(diǎn)越不穩(wěn)定。