当前位置: 首页 > news >正文

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官网提供各种协议的示例抓包文件,是绝佳的学习资料)

相关文章:

Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))

故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…...

DeepIn Wps 字体缺失问题

系统缺失字体 Symbol 、Wingdings 、Wingdings2、Wingdings3、MT—extra 字体问题 问了下DeepSeek 在应用商店安装或者在windows 里面找 装了一个GB-18030 还是不行 在windows里面复制了缺失的字体 将字体复制到DeepIn 的字体目录&#xff08;Ubuntu 应该也是这个目录&am…...

(二分 数学推导 统计公平数对的数目)leetcode 2563

数学推导&#xff1a; lower < nums[i] nums[j] < upper且0 < i < j < n 则lower-nums[j]<nums[i]<upper-nums[j] 找到这个范围的nums[i]的个数就是我们要的值 所以枚举j 在0--&#xff08;j-1&#xff09;的范围内 找到第一个大于等于lower-nums[j]…...

临界比例法PID调整-附带pidtune工具和GA算法

代码已上传&#xff1a;计算机控制系统PID参数整定法资源-CSDN文库 1背景 为了模拟PID参数整定&#xff0c;把教材上的案例进行分析。 1题目 单位闭环传递函数&#xff0c;开环传函G(s)1/((s1)(s2)), Ts0.1s, PID调整器输出后&#xff0c;接零阶保持器ZOH。 2 代码 PID含积…...

LabVIEW基于双通道FFT共轭相乘的噪声抑制

对于双通道采集的含噪信号&#xff0c;通过FFT获取复数频谱后&#xff0c;对第二通道频谱取共轭并与第一通道频谱相乘&#xff0c;理论上可增强相关信号成分并抑制非相关噪声。此方法适用于通道间信号高度相关、噪声独立的场景&#xff08;如共模干扰抑制&#xff09;。以下为L…...

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”&#xff0c;一旦过期&#xff0c;用户访问时会被提示“不安全”&#xff0c;轻则流失客户&#xff0c;重则数据泄露&#xff01;作为企业负责人&#xff0c;如何快速解决证书过期问题&#xff1f;又该如何避免再次踩坑&#xff1f;这篇指南给你答…...

ELK日志分析实战

ELK日志分析实战&#xff1a;从异常流量定位提权攻击 摘要&#xff1a;本文通过模拟真实攻防场景&#xff0c;结合ELK技术栈&#xff08;ElasticsearchLogstashKibana&#xff09;&#xff0c;演示如何从海量服务器日志中快速定位异常流量并追踪提权攻击行为。包含完整的日志收…...

阿里云操作系统控制台实战评测:提升云资源管理与监控效率

文章目录 前言产品介绍操作系统控制台体验阿里云操作系统开通 帮助与总结建议 前言 随着云计算和虚拟化技术的发展&#xff0c;操作系统控制台作为运维管理的核心工具之一&#xff0c;在现代IT环境中发挥着越来越重要的作用。它提供了一种更加直观、高效的方式来管理操作系统&…...

Docker构建启动jar包

Docker构建启动jar包 1、首先是把java服务打包成jar包 mvn clean install -Dmaven.skip.testtrue package -Pprod这个命令的意思是&#xff0c;跳过测试&#xff0c;打包prod环境。 2、编写Dockerfile文件 # 拉取jdk8作为基础镜像 FROM registry.supos.ai/library/openjdk:…...

微信小程序使用的SSL证书在哪里申请?

在数字化时代&#xff0c;微信小程序已成为众多企业和个人开发者触达用户的重要平台。然而&#xff0c;随着网络安全威胁的日益严峻&#xff0c;确保小程序数据传输的安全性显得尤为重要。SSL证书&#xff0c;作为加密通信的基石&#xff0c;是保障小程序安全不可或缺的一环。 …...

基于langchain+llama2的本地私有大语言模型实战

Langchain功能 LangChian 作为一个大语言模型&#xff08;LLM, Large Language Model&#xff09;开发框架&#xff0c;是 LLM 应用架构的重要一环。借助 LangChain&#xff0c;我们可以创建各种应用程序&#xff0c;包括聊天机器人和智能问答工具。 AI模型&#xff1a;包含各…...

如何使用postman来测试接口

一、postman的介绍与下载 可参考&#xff1a; https://blog.csdn.net/freeking101/article/details/80774271 二、api获取网站 阿里云API应用市场 地址&#xff1a;云市场_镜像市场_软件商店_建站软件_服务器软件_API接口_应用市场 - 阿里云 三、具体测试过程 可模拟浏览…...

深入剖析B树、B+树与B*树:从二叉树到多叉树的演进

引言 在计算机科学中&#xff0c;树结构是数据存储和检索的核心工具之一。从二叉树到二叉排序树&#xff0c;再到平衡二叉树&#xff0c;我们已经看到了这些数据结构在高效处理数据方面的优势。然而&#xff0c;随着数据量的爆炸式增长&#xff0c;二叉树的局限性逐渐显现出来…...

《算法篇:三数之和问题的两种解法》

问题描述 给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 给定数组 nums [-1, 0,…...

【2025】基于springboot+uniapp的乡村旅游小程序系统统(源码、万字文档、图文修改、调试答疑)农家乐预约

乡村旅游小程序系统通过 Spring Boot 与 uniapp 技术栈的深度整合&#xff0c;为乡村旅游产业打造了一个功能全面、交互流畅、性能稳定的综合服务平台。系统根据不同角色&#xff08;管理员、商家、用户&#xff09;的业务需求&#xff0c;提供了针对性的功能模块&#xff0c;实…...

DeepSeek Kimi详细生成PPT的步骤

以下是使用 DeepSeek 和 Kimi 协作生成 PPT 的详细步骤&#xff0c;结合了两者的优势实现高效创作&#xff1a; 第一步&#xff1a;使用 DeepSeek 生成 PPT 大纲或内容 明确需求并输入提示词 在 DeepSeek 的对话界面中&#xff0c;输入具体指令&#xff0c;要求生成 PPT 大纲或…...

【Film】MM-StoryAgent:沉浸式叙事故事书视频生成,具有跨文本、图像和音频的多代理范式

MM-StoryAgent:沉浸式叙事故事书视频生成,具有跨文本、图像和音频的多代理范式 https://arxiv.org/abs/2503.05242 MM-StoryAgent: Immersive Narrated Storybook Video Generation with a Multi-Agent Paradigm across Text, Image and Audio The rapid advancement of larg…...

Tweak Power:全方位电脑系统优化的高效工具

在日常使用电脑时&#xff0c;系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行&#xff0c;许多人会选择系统优化工具。然而&#xff0c;国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时&#xff0c;…...

LVDS系列3:Xilinx的IOBUFDS原语

前面两节讲解了差分转单端的IBUFDS原语和单端转差分的OBUFDS原语&#xff0c;今天来讲一个同时带有两者功能的原语IOBUFDS&#xff1b; 前述的IBUFDS原语只能接收外部差分信号&#xff0c;此时连接管脚为input管脚&#xff0c;OBUFDS只能向外部输出差分信号&#xff0c;此时连接…...

Git和GitHub基础教学

文章目录 1. 前言2. 历史3. 下载安装Git3.1 下载Git3.2 安装Git3.3 验证安装是否成功 4. 配置Git5. Git基础使用5.1 通过Git Bash使用5.1.1 创建一个新的仓库。5.1.1.1 克隆别人的仓库5.1.1.2 自己创建一个本地仓库 5.1.2 管理存档 5.2 通过Visual Studio Code使用 6. Git完成远…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...