Linux學習(十五)(故障排除(ICMP,Ping,Traceroute,網絡統計,數據包分析))

故障排除是任何 Linux 用戶或管理員的基本技能。這涉及識別和解決 Linux 系統中的問題。這些問題的范圍包括常見的系統錯誤、硬件或軟件問題、網絡連接問題以及系統資源的管理。Linux 中的故障排除過程通常涉及使用命令行工具、檢查系統和應用程序日志文件、了解系統進程,有時還涉及深入研究 Linux 內核。

有效故障排除的關鍵是了解 Linux 的工作原理并熟悉常見的命令行工具。此外,能夠解釋錯誤消息、使用 Linux 的內置調試工具以及了解常見問題癥狀可以加快解決時間。

# example of using a command-line tool for troubleshooting
top

該命令是一種常用的故障排除工具,可提供系統上運行的進程的動態實時視圖。它對于識別可能導致性能問題的資源密集型進程特別有用。top

🕵?♂??Linux故障排除就像偵探破案

核心思路:?像偵探一樣收集線索(日志)、分析證據(系統狀態)、鎖定嫌犯(問題根源)


🚨?案件調查步驟

1???現場勘查(查看系統狀態)

top                  # 查看實時"人流監控"(進程資源占用)
htop                 # 升級版監控(更直觀,支持鼠標操作)
 
  • 關鍵線索:CPU占用90%的"可疑分子"(異常進程)

  • 行動:按P按CPU排序,按k終止可疑進程

2???調取監控(查看日志)

journalctl -xe       # 查看系統"監控錄像"(最新日志)
tail -f /var/log/syslog  # 實時追蹤"案發現場"
 
  • 常見案發現場

    • /var/log/auth.log?→ 登錄安全記錄

    • /var/log/nginx/error.log?→ Web服務錯誤

3???排查物證(檢查硬件)

dmesg | grep -i error  # 檢查"物證報告"(硬件錯誤)
smartctl -a /dev/sda  # 檢測硬盤"健康狀態"

📌 作用:查看系統日志,找出可能的硬件錯誤

解析
  • dmesg 👉 顯示系統日志,包含開機信息、硬件檢測、驅動加載等內容。
  • | 👉 管道操作符,把 dmesg 的輸出傳給 grep 處理。
  • grep -i error 👉 搜索日志中**包含“error”(錯誤)**的行,-i 讓匹配不區分大小寫。
示例
dmesg | grep -i error

如果系統有錯誤,可能會輸出:

[  145.123456] ata1.00: failed command: READ FPDMA QUEUED
[  145.123789] blk_update_request: I/O error, dev sda, sector 123456
[  200.987654] EXT4-fs error (device sda1): ext4_find_entry:xxxx: reading directory #xxxxxxx offset xxxx

解釋

  • I/O error, dev sda 👉 硬盤讀寫錯誤。
  • EXT4-fs error 👉 磁盤文件系統出錯,可能有壞道。

? 結論:如果發現錯誤日志,說明硬件(尤其是硬盤)可能有問題,建議進一步檢測。

📌 作用:查詢硬盤的 S.M.A.R.T.(自我監測分析報告)信息,判斷硬盤是否健康

解析
  • smartctl 👉 一個檢測硬盤健康狀態的工具,屬于 smartmontools 軟件包。
  • -a 👉 顯示所有 S.M.A.R.T. 信息(包括溫度、壞道、壽命等)。
  • /dev/sda 👉 指定要檢測的硬盤(sda 是系統的第一塊硬盤)。
示例
smartctl -a /dev/sda

可能輸出:

ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE5  Reallocated_Sector_Ct   10    10    36    Pre-fail  Always   FAILING_NOW  1009  Power_On_Hours         30000  100   0     Old_age   Always   -           30000
194  Temperature_Celsius    35     50    0     Old_age   Always   -           35

解釋

  • Reallocated_Sector_Ct(重映射扇區數)👉 數值大于 0 說明硬盤有壞道,100 說明已經有 100 個壞塊。
  • Power_On_Hours(開機時間)👉 硬盤運行時間,30000 小時(≈3.4 年)。
  • Temperature_Celsius(溫度)👉 硬盤溫度,35℃(正常)。

? 結論

  • 如果 Reallocated_Sector_Ct 有值,說明硬盤有壞道,建議更換硬盤!
  • 如果 Power_On_Hours 太高(>40,000 小時),說明硬盤已經很老,容易出問題。
  • 如果溫度高于 50℃,可能需要改善散熱。

解釋

  • Reallocated_Sector_Ct(重映射扇區數)👉 數值大于 0 說明硬盤有壞道,100 說明已經有 100 個壞塊。
  • Power_On_Hours(開機時間)👉 硬盤運行時間,30000 小時(≈3.4 年)。
  • Temperature_Celsius(溫度)👉 硬盤溫度,35℃(正常)。

? 結論

  • 如果 Reallocated_Sector_Ct 有值,說明硬盤有壞道,建議更換硬盤!
  • 如果 Power_On_Hours 太高(>40,000 小時),說明硬盤已經很老,容易出問題。
  • 如果溫度高于 50℃,可能需要改善散熱。

總結

命令作用主要關注點
`dmesggrep -i error`查系統日志,檢查硬件錯誤
smartctl -a /dev/sda查詢硬盤健康狀況Reallocated_Sector_CtPower_On_HoursTemperature_Celsius

💡 如果 dmesg 發現 I/O 錯誤,或者 smartctl 發現壞道,說明硬盤可能要壞了,需要盡快備份數據! 🚨


🔧?偵探工具箱(常用命令)

工具用途生活比喻
strace追蹤程序行為給嫌疑人戴定位器
nc/telnet測試網絡端口檢查電話線路是否暢通
df -h查看磁盤空間檢查倉庫是否爆滿
ping測試網絡連通性測試對講機信號
lsof查看文件占用情況查誰在占用保險箱

🌰?經典案件偵破

案件:網站突然無法訪問

  1. 初步勘查

    systemctl status nginx  # 發現服務異常停止
  2. 調取監控

    journalctl -u nginx --since "10 minutes ago"  # 發現端口沖突
     
  3. 鎖定嫌犯

    ss -tulnp | grep :80  # 發現Apache占用了80端口
     
  4. 解決問題

    sudo systemctl stop httpd  # 停用Apache
    sudo systemctl start nginx # 啟動Nginx
     

???偵探守則(注意事項)

  1. 保護現場:遇到問題先別重啟,保留現場證據

  2. 逐項排查:從簡單到復雜(先檢查網絡→服務→配置)

  3. 善用手冊man 命令?或?命令 --help?獲取線索

  4. 隔離測試:最小化重現環境,避免干擾


💡?破案技巧

  • 時間回溯

    sudo grep "ERROR" /var/log/* -r --since "2023-10-01"
  • 壓力測試

    stress --cpu 8 --timeout 60s  # 模擬高負載測試
  • 快照還原

    timeshift --restore  # 使用系統快照回到案發前
     

總結:?記住這個破案口訣:

一查狀態二看報錯,  
三驗網絡四測硬件,  
日志監控是金鑰匙,  
隔離驗證保平安。
 

掌握這些技能,你就能成為Linux世界的"福爾摩斯"! 🎩🔍

ICMP

Internet 控制消息協議 (ICMP) 是一種支持協議,主要由網絡設備用于將更新或錯誤信息傳達給其他設備。在 Linux 環境中排查網絡問題時,ICMP 是一個關鍵方面。它可用于發送錯誤消息,例如,指示請求的服務不可用或無法訪問主機或路由器。ICMP 還可用于中繼查詢消息。

在 Linux 系統中,與 ICMP 相關的常見命令行工具包括 和 ,兩者都用于診斷網絡狀態,通常是故障排除工作的一部分。pingtraceroute

# Use of ICMP via the ping command to send an echo request to a specific host
ping www.google.com

這個簡單而有效的工具在任何 Linux 網絡故障排除庫中都不應錯過。

好的,我用「快遞員送包裹」的比喻來解釋 ICMP 協議和相關工具,讓你像查快遞一樣排查網絡問題:


?ICMP 協議 = 快遞員之間的溝通紙條

想象你要寄快遞(發送數據包),但中途可能出問題:

  • 🚚 ?正常流程:快遞員(數據包)順利到達目的地
  • ? ?異常情況:地址寫錯、路斷了、對方拒收
    這時快遞員會用 ICMP 協議寫「紙條」通知你問題在哪!

?ICMP 的兩種核心功能

  1. ?報錯通知?(類似快遞退回單)
    • 例子:Destination Unreachable(地址不存在)
    • 場景:訪問的網站 IP 寫錯了,路由器返回這個錯誤
  2. ?網絡探測?(類似物流跟蹤)
    • 例子:Echo Request/Reply(回聲檢測)
    • 場景:用?ping?測試是否能到達目標服務器

?Linux 中的 ICMP 工具:快遞追蹤器

?1???ping:檢查包裹是否能送達
ping www.google.com  # 向谷歌服務器發送探測包

輸出示例👇

64 bytes from 172.217.160.68: icmp_seq=1 ttl=54 time=25.3 ms
64 bytes from 172.217.160.68: icmp_seq=2 ttl=54 time=26.1 ms

結果解讀

  • time=25.3 ms?→ 網絡延遲(越低越好)
  • ttl=54?→ 數據包經過的路由器跳數(初始值通常64或128)
  • 如果顯示?請求超時,說明網絡不通或對方屏蔽了 ICMP

適用場景

  • 快速測試網站/IP 是否能訪問
  • 檢查本地網絡是否正常(先?ping 路由器IP

?2???traceroute:跟蹤包裹的運輸路線
traceroute www.baidu.com  # 顯示數據包經過的所有路由器

輸出示例👇

 1  192.168.1.1 (192.168.1.1)  2.123 ms  1.987 ms  1.845 ms  2  10.10.10.1 (10.10.10.1)  10.234 ms  10.123 ms  9.876 ms  3  202.96.128.86 (電信骨干網)  25.678 ms  26.123 ms  25.987 ms  ...  

原理

  • 故意發送 TTL(存活時間)遞增的數據包
  • 每經過一個路由器,TTL 減1,當 TTL=0 時路由器返回 ICMP 超時消息
  • 通過這種方式「逼」路由器們暴露自己的 IP

適用場景

  • 定位網絡卡在哪一跳(比如第3跳延遲暴增)
  • 排查跨國網站訪問慢的問題

?ICMP 的常見錯誤類型

ICMP 錯誤類型比喻可能原因
Destination Unreachable快遞員說「地址不存在」目標 IP 錯誤/防火墻攔截
Time Exceeded快遞員說「包裹運輸超時」網絡環路或 TTL 設置過小
Redirect快遞員說「換條更快的路走」路由器優化路徑
Source Quench快遞員說「發慢點,我忙不過來了」網絡擁堵(現已很少使用)

?實際故障排查案例

?問題:電腦能上微信但打不開網頁

排查步驟

  1. ping 114.114.114.114?→ 測試是否能連國內 DNS
    • 如果通 → 說明網絡連接正常
    • 不通 → 檢查本地網絡或網線
  2. ping www.baidu.com?→ 測試域名解析
    • 如果通 → 瀏覽器問題或 HTTPS 證書錯誤
    • 不通 → DNS 設置錯誤(修改?/etc/resolv.conf

?ICMP 的局限性

  • ?可能被防火墻屏蔽:很多服務器關閉 ICMP 響應(防攻擊)
  • ?不代表端口可用:即使能?ping?通,不代表 80(HTTP)端口開放
    • 端口檢測需用?telnet 目標IP 80?或?nc -zv 目標IP 80

?其他相關工具

  • ?**mtr**:ping?+?traceroute?合體版,實時監控每跳的丟包率
    mtr www.github.com  # 動態顯示網絡路徑質量
  • ?**nmap**:檢測目標是否屏蔽 ICMP
    nmap -sn 192.168.1.1  # 用多種方式探測主機是否在線

總結
ICMP 就像網絡世界的「信使系統」,ping?是打電話問對方「在嗎?」,traceroute?是查通話經過哪些中轉站。掌握這些工具,你就能像偵探一樣順藤摸瓜找到網絡問題的源頭!

ping

Ping是在 Linux作系統上進行網絡故障排除時的關鍵工具。該命令允許您檢查主機與目標計算機(可以是另一臺計算機、服務器或網絡上的任何設備)之間的連接狀態。此診斷工具將 ICMP(互聯網控制消息協議)ECHO_REQUEST數據包發送到目標主機并偵聽ECHO_RESPONSE返回,從而深入了解連接的運行狀況和速度。ping

ping <target IP or hostname>

如果到達目標主機時遇到任何問題,可以識別此問題并提供反饋,使其成為排查網絡問題的重要組件。在許多情況下,它是 Linux 用戶在診斷網絡連接問題時首先使用的工具。ping

好的,用「打電話」和「回聲探測」的比喻來解釋?ping,保證你聽完就能掌握精髓:


?**ping?= 網絡世界的「電話測試儀」?**

想象你想確認朋友手機是否開機,你會:
1?? ?打電話?→ 如果朋友接了,說明線路正常
2?? ?聽嘟嘟聲?→ 如果響鈴后無人接聽,可能對方關機
3?? ?數響鈴時間?→ 判斷距離遠近(延遲高低)

ping?就是用 ICMP 協議做類似的事情,只不過探測對象是網絡設備!


?基礎用法:打一通網絡電話

ping www.baidu.com  # 給百度服務器打電話

輸出示例👇

PING www.a.shifen.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189: icmp_seq=1 ttl=54 time=28.3 ms
64 bytes from 14.119.104.189: icmp_seq=2 ttl=54 time=27.9 ms
^C  # 按 Ctrl+C 停止
--- 統計報告 ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 27.934/28.114/28.295/0.180 ms

關鍵信息解讀

  • ?**time=28.3 ms** → 延遲(越低網速越快,游戲玩家最關注這個)
  • ?**ttl=54** → 初始值通常 64(Linux)或 128(Windows),每經過一個路由器減1
    • 如果看到?ttl=112,說明經過了 128-112=16 個路由器
  • ?**0% packet loss** → 丟包率(>5% 可能影響視頻通話)

?常見場景與操作技巧

?場景1:快速測試網絡通不通
ping -c 4 114.114.114.114  # 只打4次電話就掛斷

輸出

--- 114.114.114.114 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss  # 全通說明網絡正常
?場景2:檢測網絡穩定性(持續監控)?
ping -i 0.5 www.qq.com  # 每0.5秒打一次電話

用途

  • 玩游戲時檢測網絡是否波動
  • 按?Ctrl + \?強制退出無限循環
?場景3:排查「能上微信但打不開網頁」?
ping 114.114.114.114     # 測試DNS服務器是否可達
ping www.baidu.com       # 測試域名解析是否正常

結論

  • 第一個通,第二個不通 → 可能是 DNS 問題(修改?/etc/resolv.conf
  • 兩個都不通 → 檢查路由器或光貓

?常見錯誤與應對措施

?錯誤1:未知的主機(DNS解析失敗)?
ping: www.xxx.com: 未知的名稱或服務

解決方案

  1. 換用 IP 測試:ping 8.8.8.8(Google DNS)
  2. 檢查 DNS 設置:cat /etc/resolv.conf
?錯誤2:請求超時(網絡不通或屏蔽)?
From 192.168.1.1 icmp_seq=1 Destination Host Unreachable

排查步驟

  1. ping 路由器IP(如 192.168.1.1) → 確認內網是否正常
  2. ping 8.8.8.8?→ 確認外網是否連通
  3. 目標服務器可能禁用了 ICMP(比如某些云主機)
?錯誤3:高延遲/高丟包
time=350 ms  # 延遲高于 200ms 就影響視頻會議
50% packet loss  # 丟包嚴重會導致卡頓

應對

  • 用?mtr 目標IP?檢查哪一跳路由器有問題
  • 聯系網絡運營商報修

?高級技巧(參數大全)?

參數命令示例作用
-cping -c 5 IP指定發送次數
-iping -i 0.1 IP加快探測頻率(默認1秒)
-sping -s 1000 IP加大數據包尺寸(測試大包傳輸)
-Wping -W 3 IP超時時間設為3秒(默認10秒)
-qping -q -c 10 IP只顯示統計結果(安靜模式)

?總結:ping 的三大核心作用

  1. ?網絡連通性測試?→ 確認設備是否在線
  2. ?延遲與穩定性監測?→ 評估網絡質量
  3. ?初步故障定位?→ 區分是內網問題還是外網問題

排查網絡問題的黃金口訣

一 ping 網關,二 ping DNS,三 ping 公網IP  
全都不通查網線,部分不通找路由!

路由跟蹤

Traceroute 是一種網絡診斷工具,在 Linux 系統中廣泛用于故障排除。它旨在顯示數據包從運行 traceroute 的系統到指定目標系統或網站的路徑。它用于識別路由問題、提供延遲測量,并在數據包通過 Internet 時弄清楚網絡結構。

沿路由的每次跳轉都會測試多次(默認值為 3,但可以更改),并顯示每個數據包的往返時間。如果某些數據包無法到達目的地,traceroute 可以幫助診斷故障發生的位置。

在 Linux 中跟蹤路由可以通過執行命令來實現,該命令允許您發現 Internet 協議數據包在到達目的地時遵循的路由。traceroute

$ traceroute www.example.com

我來用快遞送貨的例子幫你理解 traceroute 的工作原理:

假設你從北京寄快遞到上海的朋友家,但快遞中途要經過多個中轉站:

  1. 你寄出快遞時在包裹上標記"有效期=1天"

  2. 第一個中轉站(天津)收到后發現有效期只剩0天,就會:

    • 銷毀包裹

    • 給你發回一條短信:"包裹在天津超時了"

  3. 你記錄下天津站的響應時間(比如0.5ms)

  4. 接著你重新寄出包裹,標記"有效期=2天"

  5. 這次包裹能到達第二個中轉站(濟南),同樣會收到超時通知

  6. 重復這個過程直到包裹到達上海朋友家

📊 執行?traceroute www.example.com?的輸出示例:

復制

1  192.168.1.1 (路由器)  1.234 ms  1.456 ms  1.567 ms
2  61.128.192.1 (廣州電信)  5.678 ms  5.712 ms  5.801 ms
3  202.97.12.34 (骨干網節點)  12.345 ms  12.401 ms  12.512 ms
...
10  203.0.113.5 (目標服務器)  38.901 ms  39.012 ms  39.123 ms

🔑 關鍵點解析:

  • 每行代表一個網絡節點(路由器/服務器)

  • 三個時間值對應三次探測的往返延遲

  • 星號(*) 表示該次探測未得到響應

  • 延遲突增的位置往往暗示網絡瓶頸

💡 實用技巧:

  1. 用?-I?參數使用ICMP協議(類似ping)
    traceroute -I baidu.com

  2. 遇到星號時嘗試增加探測次數:
    traceroute -q 5 github.com

  3. 限制最大跳數(適合內網排查):
    traceroute -m 10 192.168.0.100

?? 注意:某些網絡設備會屏蔽traceroute探測,這時候會出現連續星號,并不一定代表網絡故障。

Netstat

Netstat 是 network statistics 的縮寫,是 Linux 系統中用于網絡故障排除和性能測量的內置命令行工具。它提供協議的統計信息、開放端口列表、路由表信息和其他重要的網絡詳細信息。管理員和開發人員使用 netstat 來檢查網絡問題并了解系統如何與其他系統通信。

由于它支持各種命令行選項,它的功能得到了擴展,這些選項可以單獨或組合使用來微調輸出。這些可能包括顯示數字地址而不是名稱 ()、持續監視 () 或發現特定協議上的連接 (, )。-n?-c?-t?-u

以下是 netstat 通常如何使用的簡短片段:

# List all connections with numerical values.
netstat -n

好的,用「電話總機控制臺」來比喻?netstat,讓你像查電話線路一樣掌握網絡連接狀態:


?**netstat?= 網絡連接的電話交換機面板**

想象你管理一個公司的電話系統,需要知道:

  1. ?哪些分機正在通話?→ 查看活動連接
  2. ?哪些分機等待來電?→ 查看監聽端口
  3. ?電話線路路由表?→ 查看網絡路由配置

netstat?就是這樣一個實時顯示所有「電話線路」(網絡連接)狀態的控制面板!


?常用場景速查手冊

?場景1:查看所有正在通話的線路(活動連接)?
netstat -natp  # 組合參數大法

參數解釋

  • -n:顯示數字地址(不解析域名)
  • -a:顯示所有連接(包括監聽中的)
  • -t:TCP協議
  • -p:顯示進程PID/名稱

輸出示例👇

Proto Recv-Q Send-Q Local Address    Foreign Address     State       PID/Program name  
tcp        0      0 192.168.1.100:22 110.242.68.3:56789   ESTABLISHED 1234/sshd: user  
tcp6       0      0 :::80            :::*                LISTEN      5678/nginx

關鍵列解讀

  • Local Address:本機IP和端口
  • Foreign Address:對方IP和端口
  • State:連接狀態(ESTABLISHED=通話中,LISTEN=待機中)
  • PID/Program:哪個程序在使用這個連接

?場景2:查誰在偷聽電話(監聽中的端口)?
netstat -tulnp  # 組合拳出擊

參數解釋

  • -t:TCP協議
  • -u:UDP協議
  • -l:僅顯示監聽中的端口
  • -p:顯示進程信息

輸出示例👇

Proto Recv-Q Send-Q Local Address   Foreign Address    State    PID/Program  
tcp        0      0 0.0.0.0:22      0.0.0.0:*          LISTEN   1234/sshd  
tcp6       0      0 :::80           :::*               LISTEN   5678/nginx  
udp        0      0 0.0.0.0:68      0.0.0.0:*                  7890/dhclient

典型應用

  • 確認Web服務器是否在監聽80端口
  • 檢查是否有可疑后門程序在監聽端口

?場景3:查電話線路統計(網絡流量統計)?
netstat -s  # 查看協議統計信息

輸出重點

Tcp:3245 active connections openings  12 failed connection attempts  892 segments retransmitted  Ip:25675 total packets received  0 invalid addresses  

用途

  • 診斷TCP重傳率過高(網絡質量差)
  • 檢查UDP丟包情況

?實用排查案例

?問題1:端口被占用導致服務啟動失敗

步驟

# 1. 查哪個進程占用了80端口
netstat -tulnp | grep :80# 2. 根據PID結束進程
kill -9 5678
?問題2:懷疑服務器被植入后門

步驟

netstat -natp | grep ESTAB  
# 重點檢查Foreign Address是否有陌生IP連接

?參數對照表(新手必存)?

參數作用常用組合
-n禁用域名解析(顯示IP)-nat?/?-nau
-a顯示所有連接-a
-t僅顯示TCP協議-tuln
-u僅顯示UDP協議-tuln
-l僅顯示監聽中的端口-tuln
-p顯示進程信息-p
-s統計各協議數據量-s
-r顯示路由表-r

?升級替代工具:ss?命令

特點:更快更現代(逐漸替代?netstat
常用命令

ss -tunlp  # 參數含義與netstat類似

?總結口訣

查連接用 netstat,參數組合別搞差  
-n 顯示純數字,-a 所有連接查  
-t TCP u是UDP,-l 監聽要記牢  
-p 顯示進程號,-s 統計頂呱呱  
遇到問題別慌張,先查端口后殺它!

數據包分析

在 Linux 系統管理和網絡故障排除領域,數據包分析是一項關鍵技能。它涉及使用工具和技術來捕獲和分析網絡流量。通過檢查通過網絡發送和接收的數據,系統和網絡管理員可以識別和排查性能不佳、連接問題和安全漏洞等問題。

tcpdump 和 Wireshark 等工具是實現此目的的常見實用程序。它們顯示數據包級別的詳細信息,以提供網絡活動的完整圖片。這些對于網絡診斷和調試與網絡協議相關的問題特別有用。

在 Linux 系統命令中使用 tcpdump 捕獲數據包的基本示例可能如下所示:

sudo tcpdump -i eth0

eth0?是 Linux 系統中 ?第一個以太網網絡接口的名稱,可以理解為你的電腦或服務器上的第一個物理網卡(或虛擬網卡)。
它的命名規則是:?**"eth"(Ethernet 的縮寫)+ 數字編號**,比如?eth0eth1?分別代表第一個、第二個以太網接口。


?通俗解釋

想象你的電腦有多個「網線插口」:

  • eth0?→ 第一個插口(比如連接路由器的網線)
  • eth1?→ 第二個插口(如果有額外的網卡)
  • wlan0?→ 無線網卡(Wi-Fi)
  • lo?→ 虛擬的「回環接口」(用于本機內部通信)

?命令中的用途

在?sudo tcpdump -i eth0 host 192.168.1.100?中:

  • -i eth0?表示 ?監聽(抓包)通過?eth0?接口的網絡流量
  • 如果不指定?-itcpdump?會默認監聽第一個非回環接口(通常是?eth0

?如何查看所有網絡接口?

ip link show  # 查看所有網絡接口的名稱和狀態

輸出類似👇:

1: lo: <LOOPBACK,UP> ...   # 回環接口(虛擬)
2: eth0: <BROADCAST,UP> ... # 第一個以太網接口(物理網卡)
3: wlan0: <BROADCAST,UP> ... # 無線網卡

?常見接口類型

接口名稱用途示例場景
eth0物理有線網卡連接路由器的網線
wlan0無線網卡連接 Wi-Fi
lo本地回環接口(虛擬)本機內部服務通信(如訪問 127.0.0.1)
docker0Docker 創建的虛擬接口容器網絡通信
tun0VPN 隧道接口連接 OpenVPN 時使用

?為什么需要指定?eth0

  • 如果服務器有多個網卡(比如?eth0?接內網,eth1?接外網),指定接口可以精準抓包
  • 避免抓取無關流量(比如?lo?回環接口的本地通信)

?擴展知識:現代 Linux 的接口命名

新版本 Linux 可能使用 ?基于固件/拓撲的命名規則?(如?enp0s3ens33),但原理與?eth0?相同。
可以通過以下命令查看:

ls /sys/class/net  # 列出所有網絡接口名稱

此命令捕獲并顯示通過網絡接口傳輸或接收的數據包。eth0

用物流中心監控系統來比喻數據包分析的工作原理:

場景:假設你管理一個大型國際物流中心,所有包裹都要經過分揀掃描儀

📦 核心工具解析

1.?tcpdump?- 實時包裹掃描儀

sudo tcpdump -i eth0 host 192.168.1.100
  • 功能:就像在傳送帶上安裝的X光掃描儀

  • 操作員視角

    • 看到所有經過eth0傳送帶的包裹(數據包)

    • 只關注發往/來自192.168.1.100貨架的包裹

    • 實時顯示包裹標簽信息(源/目的IP、端口等)

2.?Wireshark?- 包裹分析實驗室

tshark -r capture.pcap  # 命令行版分析工具
  • 功能:將掃描記錄帶回實驗室深度檢測

  • 技術員視角

    • 拆解包裹外層包裝(解碼協議頭)

    • 化驗包裹內容物(查看Payload數據)

    • 發現異常包裹(惡意流量分析)

🛠? 實戰案例演示

需求:排查網站訪問緩慢問題

步驟

  1. 啟動物流監控(開始抓包)

    sudo tcpdump -i eth0 port 80 -w web.pcap
  2. 復現問題(訪問目標網站)

  3. 停止抓包后分析:

    wireshark web.pcap  # 圖形化分析

關鍵分析點

  • 查找紅色標記的破損包裹(TCP重傳包)

  • 檢查包裹到達時間間隔(網絡延遲)

  • 識別異常運輸路線(錯誤路由)

📋 數據包標簽解讀示例

15:03:22.123456 IP 192.168.1.5.54321 > 203.0.113.10.80: Flags [P.], seq 1:100, ack 1, win 256, length 99
  • 時間戳:15點03分22秒

  • 包裹流向:從192.168.1.5的54321端口 -> 203.0.113.10的80端口

  • 包裹狀態:重要數據(PUSH標志)

  • 物流編號:包裹序列號1-100,已確認收到1號包裹

  • 包裹尺寸:99字節

🔧 實用技巧錦囊

  1. 精準過濾

    tcpdump 'tcp port 443 and (host 1.1.1.1 or host 8.8.8.8)'
    ?host 1.1.1.1:目標或來源是 1.1.1.1(Cloudflare 的 DNS 服務器)。
    ?host 8.8.8.8:目標或來源是 8.8.8.8(Google 的 DNS 服務器)。
    ?or:邏輯「或」,滿足其中一個 IP 即可。
    ?and:邏輯「與」,同時滿足 TCP 443 端口和 IP 條件。
    擴展:常見協議與端口對照
    端口	協議	用途
    443	TCP	HTTPS 加密網頁
    53	UDP/TCP	DNS 域名解析
    80	TCP	HTTP 明文網頁
    22	TCP	SSH 安全登錄
    ?示例輸出
    15:30:22.123 IP 192.168.1.100.54321 > 1.1.1.1.443: Flags [S], seq 123456, win 64240
    15:30:22.456 IP 1.1.1.1.443 > 192.168.1.100.54321: Flags [S.], seq 654321, ack 123457, win 65535 ?
    Flags [S]:TCP 握手的第一步(SYN)。?Flags [S.]:SYN-ACK 響應,表示服務端同意建立連接。
    
  2. 抓取內容(慎用):

    命令作用

    tcpdump -A -s0 port 21?就像在快遞分揀中心 ?拆開所有發往 21 號貨架(FTP 端口)的包裹,并直接查看里面的紙質文件內容
    由于 FTP 協議默認不加密,此命令可捕獲 ?用戶名、密碼、傳輸的文件名?等敏感信息。


    ?參數拆解

    參數作用類比解釋
    -A以 ASCII 格式顯示數據包內容把包裹里的文件轉成可讀的文字
    -s0抓取完整數據包(不截斷)拆開整個包裹,不遺漏任何內容
    port 21只監控 FTP 控制端口流量只檢查 21 號貨架的包裹

    ?典型輸出示例

    17:30:45.123 IP 192.168.1.100.54321 > 203.0.113.5.21: Flags [P.], seq 1:15, ack 1, win 502
    E..5..@.@.X...........5...P...e....5....USER alice<0d0a>  # ← 用戶名明文!
    17:30:45.456 IP 192.168.1.100.54321 > 203.0.113.5.21: Flags [P.], seq 15:29, ack 1, win 502
    E..5..@.@.X...........5...P...e....5....PASS p@ssw0rd<0d0a>  # ← 密碼明文!
    tcpdump -A -s0 port 21  # 顯示FTP明文內容
    
  3. 流量統計

    你提到的這條命令是使用?tshark(Wireshark 的命令行版本)對抓包文件進行流量統計分析的實用技巧。讓我們用物流數據分析的場景來類比解釋:


    🚚 命令解析

    tshark -r traffic.pcap -qz io,stat,60
    參數/語法技術含義現實比喻
    -r traffic.pcap指定讀取(read)的抓包文件調取「高速公路監控中心」某天的監控錄像帶
    -q安靜模式(quiet),不顯示實時抓包信息分析時不顯示監控實時畫面,只輸出統計報表
    -z啟動統計模塊(z代表"statistics")啟用「智能交通分析系統」
    io,stat統計模塊名稱:輸入輸出統計(Input/Output Statistics)統計每個時段的車輛流量和貨物運輸量
    60統計間隔(單位:秒)將監控錄像按每分鐘分段分析
  4. 分解說明:
  5. -r traffic.pcap
    ?? 相當于打開「物流中心過去24小時的監控錄像」(讀取已保存的抓包文件)

  6. -qz io,stat,60
    ?? 執行「自動化的運輸報表生成系統」,參數分解:

    • io,stat:統計輸入輸出流量(Input/Output Statistics)

    • 60:將監控錄像按60秒為單位分段分析


  7. 📊 典型輸出示例

    ===================================================================
    | Duration | Packets | Bytes |  bps  |   B/s   |   MB   |
    |   60.00  |  12456  |  98M  | 13107 | 1638.4  |  1.56  |
    |   60.00  |   8543  |  73M  |  9733 | 1216.6  |  1.16  |
    |   60.00  |  15234  | 124M  | 16512 | 2064.0  |  1.97  |
    ===================================================================

    📦 數據列解讀(物流中心版)

  8. Duration (時長)
    ?? 分析的時間窗口(每60秒一個統計周期)

  9. Packets (數據包數量)
    ?? 該時段經過傳送帶的包裹總數(1個包裹=1個數據包)

  10. Bytes (字節數)
    ?? 該時段運輸的貨物總重量(1字節=1克貨物)

  11. bps (bits per second)
    ?? 傳送帶實時負載率(比特/秒,1字節=8比特)

  12. B/s (Bytes per second)
    ?? 實際貨運吞吐量(字節/秒)

  13. MB (兆字節)
    ?? 該時段運輸的貨物總重量(換算為MB單位)


  14. 🔍 實戰應用場景

    案例:排查網絡帶寬異常
  15. 發現異常時段
    👉 觀察哪段時間的「bps」或「MB」列數值異常增高

  16. 定位問題類型

    • 突發高bps + 高Packets?→ 可能遭遇DDoS攻擊(海量小包)

    • 持續高MB + 正常Packets?→ 大文件傳輸/數據泄露

    • bps周期性波動?→ 正常業務流量(如整點備份)

  17. 結合原始數據

    # 定位到異常時間段后,提取該時段詳細通信記錄
    editcap -A "2023-08-01 14:30:00" -B "2023-08-01 14:31:00" traffic.pcap suspicious.pcap
    wireshark suspicious.pcap
  18. 變體3:TopN 會話排行

    tshark -r traffic.pcap -qz conv,tcp  # 統計TCP會話流量TOP榜

    💡 注意事項

  19. 權限問題:分析抓包文件時可能需要?sudo?權限

  20. 時間精度:統計粒度(60秒)可根據需要調整,建議:

    • 故障排查:5-10秒精細粒度

    • 趨勢分析:300-600秒大粒度

  21. 數據可視化:可將輸出導入Excel生成流量曲線圖

  22. (擴展思考:對比?iftop?和?nload?等實時流量監控工具,這個命令的優勢在于能對歷史數據進行回溯分析)


    ?? 擴展技巧

    變體1:實時流量監控

    tshark -i eth0 -qz io,stat,10  # 每10秒刷新一次實時統計
    變體2:協議分布統計

    tshark -r traffic.pcap -qz io,stat,60,http,tcp  # 單獨統計HTTP和TCP流量
    tshark -r traffic.pcap -qz io,stat,60  # 每分鐘流量統計

🚨 安全檢測示例

檢測DDOS攻擊

tcpdump -nn 'dst port 80' | awk '{print $3}' | sort | uniq -c | sort -nr
?抓取快遞包裹:tcpdump -nn 'dst port 80'
  • ?**-nn**:不解析域名和端口名稱(保持數字格式,類似快遞單只寫編號不寫名字)
  • ?**dst port 80**:只抓取目標端口是 80 的流量(HTTP 包裹)
  • ?輸出示例
    12:34:56.789 IP 192.168.1.100.54321 > 203.0.113.5.80: Flags [S], ...
統計包裹數量:uniq -c
  • ?**-c**:統計每個地址出現的次數
  • ?輸出
    1 198.51.100.10.80
    2 203.0.113.5.80
按數量倒序排列:sort -nr
  • ?**-n**:按數字排序(默認按字符排序會出錯,比如 10 < 2)
  • ?**-r**:逆序(從大到小)
  • ?最終輸出
    2 203.0.113.5.80
    1 198.51.100.10.80

?記憶口訣

一抓二提三排序,四統五排結果齊。
-nn 抓包禁解析,awk 提列看第三。
sort 整理做鋪墊,uniq -c 數出現。
sort -nr 倒排序,流量統計最清晰。

輸出示例:

3258 61.177.172.10
1245 183.251.61.102
987 122.114.27.214
 

顯示:IP 61.177.172.10在短時間內發送了3258個到80端口的請求

📚 學習路徑建議

  1. 先掌握基礎過濾器語法

  2. 從分析HTTP流量開始練習

  3. 逐步過渡到TCP流重組分析

  4. 最后挑戰TLS加密流量分析

(小貼士:Wireshark官網提供各種協議的示例抓包文件,是絕佳的學習資料)

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

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

相關文章

存儲過程和自定義函數在銀行信貸業務中的應用(oracle)

數據校驗和清洗 例如&#xff0c;檢查客戶的年齡是否在合理范圍內&#xff0c;貸款金額是否符合規定的上下限等。 對于不符合規則的數據&#xff0c;可以進行清洗和修正。比如&#xff0c;將空值替換為默認值&#xff0c;或者對錯誤的數據進行糾正。 CREATE OR REPLACE PROC…

指令微調 (Instruction Tuning) 與 Prompt 工程

引言 預訓練語言模型 (PLMs) 在通用語言能力方面展現出強大的潛力。然而&#xff0c;如何有效地引導 PLMs 遵循人類指令&#xff0c; 并輸出符合人類意圖的響應&#xff0c; 成為釋放 PLMs 價值的關鍵挑戰。 指令微調 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

【c++】反轉字符串

說明 將string類型的字符串本身反轉 用到庫&#xff1a;algorithm 示例代碼 #include <iostream> #include <string> #include <algorithm> using namespace std;int main() {string str "123";reverse(str.begin(), str.end());cout <<…

正則表達式(復習)

文章目錄 一、[]: 一個字符集合二、{}: 重復次數三、特殊符號四、(): 分組五、python代碼示例六、注意 正則表達式(regular expression)描述了一種字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個…

ARMV8的64位指令

一、介紹 ARMv8 體系結構最大的改變是增加了一個新的 64 位的指令集&#xff0c;這是早前 ARM 指令集 的有益補充和增強。它可以處理 64 位寬的寄存器和數據并且使用 64 位的指針來訪問內存。這 個新的指令集稱為 A64 指令集&#xff0c;運行在 AArch64 狀態。 ARMv8 兼容舊的…

線性代數之矩陣特征值與特征向量的數值求解方法

文章目錄 前言1. 冪迭代法&#xff08;Power Iteration&#xff09;冪法與反冪法求解矩陣特征值冪法求最大特征值編程實現補充說明 2. 逆冪迭代法&#xff08;Inverse Iteration&#xff09;移位反冪法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩陣理論推導編程…

VScode:運行程序停止后,頻繁出現終端進程被終止

VScode里面powershell被迫關閉 bug場景排查原因解決辦法 bug場景 系統&#xff1a;Windows IDE&#xff1a;Visual Studio Code 停止運行程序后&#xff0c;按向上箭頭想要執行上一步命令&#xff0c;忽然終端頁面強行關閉&#xff0c;并報錯如下&#xff1a; 終端進程 &quo…

[MERN] 使用 socket.io 實現即時通信功能

[MERN] 使用 socket.io 實現即時通信功能 效果實現如下&#xff1a; MERN-socket.io 實現即時聊天 Github 項目地址:https://github.com/GoldenaArcher/messenger-mern 項目使用了 MERN(MongoDB, Express, React, Node.js) socket.io 實現即時通信功能&#xff0c;并且使用了…

【菜鳥飛】Conda安裝部署與vscode的結合使用

介紹 Conda 是一個跨平臺的開源工具&#xff0c;用于管理軟件包和環境。最初由 Anaconda 公司開發&#xff0c;它的設計目標是支持數據科學和機器學習領域&#xff0c;但其功能不僅局限于此。 以下是 Conda 的核心特點&#xff1a; 包管理&#xff1a;安裝、更新、卸載各種庫…

《Android應用性能優化全解析:常見問題與解決方案》

目錄 一、UI卡頓/掉幀 二、內存泄漏&#xff08;Memory Leak&#xff09; 三、ANR&#xff08;Application Not Responding&#xff09; 四、列表滑動卡頓&#xff08;RecyclerView/ListView&#xff09; 五、冷啟動耗時過長 六、內存抖動&#xff08;Memory Churn&#x…

【MySQL是怎么運行的】0、名詞解釋

聚簇索引&#xff1a;聚簇索引和數據在一起&#xff0c;又名主鍵索引&#xff0c;是主鍵id構建的一顆B樹&#xff0c;非葉節點是主鍵id&#xff0c;葉子節點是真實數據。其他索引統稱二級索引&#xff0c;也稱為非聚簇索引。覆蓋索引&#xff1a;查找的數據就在索引樹上&#x…

深入解析 TCP 協議【真題】

傳輸控制協議&#xff08;TCP&#xff09;解析與題目解析 題目解析 關于傳輸控制協議&#xff08;TCP&#xff09;表述不正確的是&#xff1f; A. 主機尋址 B. 進程尋址 C. 流量控制 D. 差錯控制 TCP&#xff08;Transmission Control Protocol&#xff09;是面向連接、可靠傳…

單例模式的五種實現方式

1、餓漢式 ①實現&#xff1a;在類加載的時候就初始化實例 ②優點&#xff1a;線程安全 ③缺點&#xff1a;實例在類加載的時候創建&#xff0c;可能會浪費資源 //餓漢式 public class EagerSingleton{private EagerSingleton(){} //私有構造方法private static EagerSingle…

SwiftUI 讓視圖自適應高度的 6 種方法(四)

概覽 在 SwiftUI 的世界里&#xff0c;我們無數次都夢想著視圖可以自動根據布局上下文“因勢而變”?。大多數情況下&#xff0c;SwiftUI 會將每個視圖尺寸處理的井井有條&#xff0c;不過在某些時候我們還是得親力親為。 如上圖所示&#xff0c;無論頂部 TabView 容器里子視圖…

小程序SSL證書過期怎么辦?

SSL證書就像小程序的“安全鎖”&#xff0c;一旦過期&#xff0c;用戶訪問時會被提示“不安全”&#xff0c;輕則流失客戶&#xff0c;重則數據泄露&#xff01;作為企業負責人&#xff0c;如何快速解決證書過期問題&#xff1f;又該如何避免再次踩坑&#xff1f;這篇指南給你答…

ClickHouse優化技巧實戰指南:從原理到案例解析

目錄 ?ClickHouse優化核心思想?表結構設計優化?查詢性能優化技巧?數據寫入優化方案?系統配置調優實戰?高可用與集群優化?真實案例解析?總結與建議 1. ClickHouse優化核心思想 ClickHouse作為OLAP領域的明星引擎&#xff0c;其優化需遵循列式存儲特性&#xff0c;把握…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加列寬調整功能,示例Table14_02帶邊框和斑馬紋的固定表頭表格

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

服務自動被kill掉的原因和查看

服務在運行一段時間后被自動kill掉可能是由多種原因引起的,包括系統資源限制、進程管理策略、應用程序錯誤等。以下是一些常見的原因以及定位問題的過程: 常見原因 系統資源限制: 內存不足:如果服務消耗了過多的內存,系統可能會kill掉該進程以釋放內存資源。CPU使用過高:…

基礎算法——順序表

一、詢問學號 題?來源&#xff1a;洛? 題?鏈接&#xff1a;P3156 【深基15.例1】詢問學號 - 洛谷 難度系數&#xff1a;★ 1. 題目描述 2. 算法原理 直接? vector 或者數組模擬即可。 3. 參考代碼 #include <iostream> #include <vector>using namespace st…

Ubuntu用戶安裝cpolar內網穿透

前言 Cpolar作為一款體積小巧卻功能強大的內網穿透軟件&#xff0c;不僅能夠在多種環境和應用場景中發揮巨大作用&#xff0c;還能適應多種操作系統&#xff0c;應用最為廣泛的Windows、Mac OS系統自不必多說&#xff0c;稍顯小眾的Linux、樹莓派、群輝等也在起支持之列&#…