運維網絡排查工具介紹與使用

作為一名運維工程師,日常工作中最令人頭疼的莫過于各種網絡故障。在過去一年半的運維生涯中,我積累了豐富的網絡故障排查經驗,今天就來和大家分享一下如何運用抓包工具(Wireshark、tcpdump)和網絡排查工具(nc、lotop、telnet、ping、ss、nslookup)來解決實際問題。

一、項目背景:那些年,我們一起追過的網絡故障

在運維的日常任務中,網絡故障可謂五花八門:應用層報錯、鏈路延遲、丟包,甚至部分服務不可達。記得有一次,用戶反饋網站訪問異常,我通過抓包工具發現數據包在防火墻出口處被丟棄,而另一邊的 TCP 握手數據包顯示連接一直處于半開狀態。經過一番排查,最終確定問題出在防火墻策略更新后端口映射配置遺漏。從那以后,我便開始深入研究各類抓包和網絡診斷工具,并在實際工作中不斷總結經驗。

二、抓包工具的應用:Wireshark 與 tcpdump 的實戰

2.1 案例一:tcpdump 捕捉異常連接,揪出網絡丟包元兇

在一次故障排查中,某個業務服務器無法與后端數據庫建立穩定連接,我懷疑是網絡層丟包導致。于是,我在服務器上使用 tcpdump 進行抓包,命令如下:

[root@server ~]# tcpdump -i eth0 -nn -s 0 -w capture.pcap

其中,-i eth0 指定網卡接口,-nn 禁止將 IP 地址和端口號解析成域名和服務名,-s 0 抓取整個數據包,-w capture.pcap 將抓包結果保存到文件。

抓包完成后,我在 Wireshark 中打開 capture.pcap 文件,利用過濾器 tcp.port==3306(假設數據庫使用 3306 端口),發現明顯的 TCP 重傳和連接中斷情況。進一步檢查防火墻日志,果然有部分數據包被丟棄。

小結:利用 tcpdump 抓包后再結合 Wireshark 進行詳細分析,是定位網絡問題的高效方法。tcpdump 命令簡單靈活,可以快速捕獲網絡數據,而 Wireshark 的圖形化界面則能讓故障原因一目了然。

2.2 案例二:Wireshark 剖析 HTTP 異常,解決負載均衡配置問題

公司某業務接口返回異常,初步懷疑是中間網絡設備引起的數據包重組問題。我在業務服務器上直接抓包,用 Wireshark 分析 HTTP 協議報文,發現有少量 HTTP 請求重復發送,且響應時間異常高。經過深入分析,原來是上游負載均衡配置不當,導致部分請求重復轉發。調整配置后,問題順利解決。

小結:Wireshark 提供了強大的協議解析能力,能幫助我們直觀定位問題,并給出修改建議。

三、網絡排查工具的應用:多工具協同作戰,精準定位故障

在抓包之外,我們常用一些網絡排查工具來進一步確認問題,下面分別介紹 nc、lotop、telnet、ping、ss、nslookup 的基本用法和真實案例。

3.1 Netcat (nc):萬能網絡工具,測試端口連通性的利器

基本用法: Netcat 是一個萬能的網絡工具,可以用于測試端口連通性、傳輸文件等。常用參數:

  • -z:僅掃描指定端口,無數據傳輸

  • -v:顯示詳細輸出

案例:測試服務端口是否開放 有次排查中懷疑某服務端口不通,我使用如下命令:

[root@server ~]# nc -zv 192.168.1.100 8080
Connection to 192.168.1.100 8080 port [tcp/*] succeeded!

成功的提示讓我確認該服務端口是開放的,再進一步排查應用層問題。

3.2 Lotop:實時監控網絡流量,揪出異常流量元兇

基本用法: Lotop 是一款實時監控網絡流量的工具(類似 iftop、nethogs),可以直觀顯示各進程的流量情況。啟動后可實時監控網絡帶寬占用。

案例:排查異常流量 有次服務器突然網絡帶寬異常占滿,我使用 lotop 后發現某個進程持續占用大量流量,經調查是異常日志采集腳本循環上傳錯誤數據。及時停止進程后,網絡恢復正常。

[root@server ~]# lotop
-- 實時流量監控啟動 --
PID     Process         TX(KB/s)  RX(KB/s)
1234    log_uploader    1200      300
5678    nginx           50        80
...

3.3 Telnet:簡單直接的 TCP 連接測試工具

基本用法: Telnet 常用于測試 TCP 連接,簡單直接:

telnet 192.168.1.100 22

如果能成功連接,則端口開放。

案例:驗證遠程 SSH 可用性 在一次遠程維護中,我需要確認目標服務器 SSH 服務是否正常。執行如下命令:

[root@server ~]# telnet 192.168.1.105 22
Trying 192.168.1.105...
Connected to 192.168.1.105.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

顯示 SSH 協議版本后,說明服務正常。

3.4 Ping:檢測目標主機連通性,觀察延遲情況

基本用法: Ping 用于檢測目標主機是否連通,同時可觀察延遲情況:

ping -c 4 8.8.8.8

-c 指定發送次數。

案例:判斷網絡延遲 某次用戶反饋訪問外部服務延遲較高,我通過 ping 命令發現丟包率達 30%,經排查發現上游鏈路存在問題。此時我及時通知了網絡供應商。

[root@server ~]# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=25.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=30.1 ms
...

3.5 SS:高效顯示網絡連接信息,檢查異常連接狀態

基本用法: ss 工具用于顯示網絡連接信息,比 netstat 更高效。常用參數:

  • -t:顯示 TCP 連接

  • -u:顯示 UDP 連接

  • -l:僅顯示監聽狀態

  • -n:不解析服務名

案例:檢查異常的連接狀態 一次出現 TCP 連接堆積問題時,我使用如下命令查看當前連接狀態:

[root@server ~]# ss -tunl
Netid  State      Recv-Q Send-Q Local Address:Port         Peer Address:Port        
tcp    LISTEN     0      128    0.0.0.0:80                0.0.0.0:*           
tcp    LISTEN     0      100    0.0.0.0:22                0.0.0.0:*  
...

通過查看,我發現有大量異常連接堆積在某個端口上,經進一步確認是應用層沒有及時關閉連接,調整后問題解決。

3.6 Nslookup:DNS 查詢,測試域名解析是否正常

基本用法: Nslookup 用于 DNS 查詢,可以測試域名解析是否正常:

nslookup www.example.com

案例:域名解析錯誤 有次內部服務無法通過域名訪問,我通過 nslookup 檢查后發現 DNS 服務器返回的 IP 地址不正確。經過檢查 DNS 配置后,更正后問題得到解決。

[root@server ~]# nslookup www.example.com
Server:         192.168.1.2
Address:        192.168.1.2#53Non-authoritative answer:
Name:   www.example.com
Address: 93.184.216.34

四、故障排查中的問題與思考:經驗總結,讓運維更高效

在一年半的運維實踐中,最常遇到的難題往往是故障定位不準確。通過使用上述工具,我總結了幾點經驗:

  1. 多工具互補:抓包工具適合數據層細查,而 telnet、ping 等工具則快速驗證網絡連通性;ss 和 nc 可以進一步驗證端口和進程狀態。結合使用能更快定位問題。

  2. 日志與數據包同步:在排查過程中,總要和系統日志、應用日志相結合,確認是否存在策略更新、應用異常等因素。

  3. 學習與積累:每次故障處理后,我都會總結經驗,建立一份常見故障及處理方案的文檔,以便快速響應類似問題。這不僅提高了解決問題的效率,也讓我對網絡協議和各工具的使用有了更深的理解。

五、總結:掌握工具,提升團隊響應速度與解決能力

本文結合真實案例,從抓包工具(Wireshark、tcpdump)和網絡排查工具(nc、lotop、telnet、ping、ss、nslookup)的角度,分享了如何在日常運維工作中排查網絡問題。作為一名一年半經驗的運維工程師,親身經歷的案例讓我深刻體會到,熟練掌握這些工具不僅能幫助我們快速定位問題,還能提升整個團隊的響應速度和解決能力。

希望這篇文章能對大家在遇到網絡問題時提供一些思路和幫助,也歡迎大家留言討論更多實際案例和心得體會。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74668.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決vscode終端和本地終端python版本不一致的問題

🌿 問題描述 本地終端: vscode終端: 別被這個給騙了,繼續往下看: 難怪我導入一些包的時候老提示找不到,在本地終端就不會這樣,于是我嚴重懷疑vscode中的python版本和終端不一樣&#xff0c…

Sublime全局搜索快捷鍵Ctrl+Shift+F不能使用解決

問題描述: 在安裝好Sublime后,我們使用快捷鍵進行全局搜索,發現沒有反應,但是中文輸入變成了繁體。 解決方案: 如截圖,在關閉簡繁切換的快捷鍵或者換成其他的就行

海康HTTP監聽報警事件數據

http監聽接收報警事件數據 海康獲取設備報警事件數據兩種方式: 1、sdk 布防監聽報警事件數據,服務端布防。(前面文章有示例) 2、http監聽接收報警事件數據,設備直接推送。 http監聽接收報警事件數據,服務端可以使用n…

Python----計算機視覺處理(Opencv:圖像邊緣檢測:非極大值抑制,雙閾值篩選)

一、 高斯濾波 邊緣檢測本身屬于銳化操作,對噪點比較敏感,所以需要進行平滑處理。這里使用的是一個5*5的高斯 核對圖像進行消除噪聲。 二、計算圖像的梯度和方向 三、非極大值抑制 在得到每個邊緣的方向之后,其實把它們連起來邊緣檢測就算完了…

Maven工具學習使用(四)——倉庫

倉庫分類 對于Mavne來說,倉庫只分為兩類:本地倉庫和遠程倉庫。當Maven根據坐標查詢尋找構件的時候,它首先會查看本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫不存在此構件,或者需要查看是否有更新的構件版本,Maven就會去遠程倉庫查找,發現需要的構件之后…

Axure PR 9.0(發音:Ack-sure)原型圖工具入門教程:鏈接交互

文章目錄 引言Axure? RP 9I Axure RP9入門介紹元件庫對兩個元件進行連接頁面:導航視圖、概要母版交互II 鏈接交互從A頁面跳轉到B頁面返回之前的頁面see also引言 【 產品原型圖】核心價值和實際應用場景:可視化需求,統一團隊理解 https://blog.csdn.net/z929118967/articl…

docker遠程debug

1. 修改 Java 啟動命令 在 Docker 容器中啟動 Java 程序時,需要添加 JVM 調試參數,jdk8以上版本 java -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 -jar your-app.jar jdk8及以下版本: java -Xdebug -Xrunjdwp:tra…

K8S學習之基礎五十四:jenkins新建測試流水線

jenkins新建測試流水線 新建任務 node(testak) {stage(第1步:從gitee上下載源代碼) {git url: "https://gitee.com/akang007/jenkins-sample"script {build_tag sh(returnStdout: true, script: git rev-parse --short HEAD).trim()}}stage(第2步:基…

SylixOS 中 select 原理及使用分析

1、select接口簡介 1.1 select接口使用用例 select 是操作系統多路 I/O 復用技術實現的方式之一。 select 函數允許程序監視多個文件描述符,等待所監視的一個或者多個文件描述符變為“準備好”的狀態。所謂的”準備好“狀態是指:文件描述符不再是阻塞狀…

Spring WebFlux之ServerWebExchange

ServerWebExchange 是 Spring WebFlux 中的一個核心接口,用于表示服務器端處理的 HTTP 請求和響應。它封裝了請求和響應的所有信息,并提供了相應的方法來操作這些信息。ServerWebExchange 在響應式編程模型中扮演著關鍵角色,支持非阻塞、異步…

Flutter 常見錯誤和坑

1. 狀態管理問題 StatefulWidget 生命周期誤用 // 錯誤:在 build 方法中修改狀態 override Widget build(BuildContext context) {setState(() { counter; }); // 會導致無限重建循環return Text($counter); }// 正確:在事件處理中修改狀態 Widget bui…

C++智能指針萬字詳細講解(包含智能指針的模擬實現)

在筆試,面試中智能指針經常出現,如果你對智能指針的作用,原理,用法不了解,那么可以看看這篇博客講解,此外本博客還簡單模擬實現了各種指針,在本篇的最后還應對面試題對智能指針的知識點進行了拓…

【Go】Go語言結構體筆記

整體介紹 雖然 Go 語言不是傳統意義上的面向對象語言,但它提供了結構體(struct)來組織數據,并且可以為結構體綁定方法,從而達到面向對象的部分效果。 關鍵知識點包括: 結構體定義與實例化 定義結構體時使用…

Three.js 快速入門教程【十八】射線拾取模型——鼠標點擊屏幕選中模型或物體

系列文章目錄 Three.js 快速入門教程【一】開啟你的 3D Web 開發之旅 Three.js 快速入門教程【二】透視投影相機 Three.js 快速入門教程【三】渲染器 Three.js 快速入門教程【四】三維坐標系 Three.js 快速入門教程【五】動畫渲染循環 Three.js 快速入門教程【六】相機控件 Or…

Object.defineProperty()Proxy詳解(Vue23數據劫持實現)

底層原理👇🏿 總結一下,結構應該包括: 1. 方法的基本作用和參數。 2. 數據描述符和存取描述符的區別。 3. 屬性定義的內部處理流程。 4. 在Vue中的應用實例。 5. 常見錯誤和正確實踐。 每個部分都要結合搜索結果的信息&…

MySQL 進階語法:函數、約束、多表查詢、事務

目錄 一、MySQL 常用函數 1. 字符串函數 1.1 基本字符串操作 1.2 字符串截取與處理 1.3 字符串搜索與替換 2. 數值函數 2.1 基本數學運算 2.2 數學計算 2.3 隨機數與符號 3. 日期時間函數 3.1 獲取當前時間 3.2 日期時間計算 3.3 日期時間提取 3.4 日期時間格式化…

第 12 章(番外)| Solidity 安全前沿趨勢 × 審計生態 × 職業路徑規劃

🌐 第 12 章(番外)| Solidity 安全前沿趨勢 審計生態 職業路徑規劃 ——做得了審計,也接得了項目,走進 Web3 安全工程師的職業實戰地圖 ? 本章導讀 Solidity 安全,不只是代碼安全、業務安全、審計安全…

1、pytest基本用法

目錄 先給大家分享下學習資源 1. 安裝pytest 2. 編寫用例規則 3. 執行用例 最近在學習pytest的用法 并且用這套框架替換了原來的unittest, 同是測試框架 確實感覺到pytest更加便捷 這邊分享給大家我得學習心得 先給大家分享下學習資源 1 官方文檔 pytest 官方…

【sylar-webserver】5 協程調度模塊

文章目錄 設計思路三種協程的切換 協程調度模塊,需要把前面的線程模塊和協程模塊結合使用 ~ 設計思路 構造函數定義 線程池 基本信息。start(),創建線程池,每個線程創建都執行 run()。每個線程在 run() 里,查找任務隊列 m_tasks…

Go 語言規范學習(1)

文章目錄 IntroductionNotation示例(Go 語言的 if 語句): Source code representationCharacters例子:變量名可以是中文 Letters and digits Lexical elementsCommentsTokensSemicolons例子:查看程序所有的token Ident…