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℃,可能需要改善散热。
总结
| 命令 | 作用 | 主要关注点 |
|---|---|---|
| `dmesg | grep -i error` | 查系统日志,检查硬件错误 |
smartctl -a /dev/sda | 查询硬盘健康状况 | Reallocated_Sector_Ct、Power_On_Hours、Temperature_Celsius |
💡 如果 dmesg 发现 I/O 错误,或者 smartctl 发现坏道,说明硬盘可能要坏了,需要尽快备份数据! 🚨
🔧 侦探工具箱(常用命令)
| 工具 | 用途 | 生活比喻 |
|---|---|---|
strace | 追踪程序行为 | 给嫌疑人戴定位器 |
nc/telnet | 测试网络端口 | 检查电话线路是否畅通 |
df -h | 查看磁盘空间 | 检查仓库是否爆满 |
ping | 测试网络连通性 | 测试对讲机信号 |
lsof | 查看文件占用情况 | 查谁在占用保险箱 |
🌰 经典案件侦破
案件:网站突然无法访问
-
初步勘查:
systemctl status nginx # 发现服务异常停止 -
调取监控:
journalctl -u nginx --since "10 minutes ago" # 发现端口冲突 -
锁定嫌犯:
ss -tulnp | grep :80 # 发现Apache占用了80端口 -
解决问题:
sudo systemctl stop httpd # 停用Apache sudo systemctl start nginx # 启动Nginx
⚠️ 侦探守则(注意事项)
-
保护现场:遇到问题先别重启,保留现场证据
-
逐项排查:从简单到复杂(先检查网络→服务→配置)
-
善用手册:
man 命令或命令 --help获取线索 -
隔离测试:最小化重现环境,避免干扰
💡 破案技巧
-
时间回溯:
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 的两种核心功能
- 报错通知(类似快递退回单)
- 例子:
Destination Unreachable(地址不存在) - 场景:访问的网站 IP 写错了,路由器返回这个错误
- 例子:
- 网络探测(类似物流跟踪)
- 例子:
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 | 快递员说「发慢点,我忙不过来了」 | 网络拥堵(现已很少使用) |
实际故障排查案例
问题:电脑能上微信但打不开网页
排查步骤:
ping 114.114.114.114→ 测试是否能连国内 DNS- 如果通 → 说明网络连接正常
- 不通 → 检查本地网络或网线
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**:检测目标是否屏蔽 ICMPnmap -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: 未知的名称或服务
解决方案:
- 换用 IP 测试:
ping 8.8.8.8(Google DNS) - 检查 DNS 设置:
cat /etc/resolv.conf
错误2:请求超时(网络不通或屏蔽)
From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
排查步骤:
ping 路由器IP(如 192.168.1.1) → 确认内网是否正常ping 8.8.8.8→ 确认外网是否连通- 目标服务器可能禁用了 ICMP(比如某些云主机)
错误3:高延迟/高丢包
time=350 ms # 延迟高于 200ms 就影响视频会议
50% packet loss # 丢包严重会导致卡顿
应对:
- 用
mtr 目标IP检查哪一跳路由器有问题 - 联系网络运营商报修
高级技巧(参数大全)
| 参数 | 命令示例 | 作用 |
|---|---|---|
-c | ping -c 5 IP | 指定发送次数 |
-i | ping -i 0.1 IP | 加快探测频率(默认1秒) |
-s | ping -s 1000 IP | 加大数据包尺寸(测试大包传输) |
-W | ping -W 3 IP | 超时时间设为3秒(默认10秒) |
-q | ping -q -c 10 IP | 只显示统计结果(安静模式) |
总结:ping 的三大核心作用
- 网络连通性测试 → 确认设备是否在线
- 延迟与稳定性监测 → 评估网络质量
- 初步故障定位 → 区分是内网问题还是外网问题
排查网络问题的黄金口诀:
一 ping 网关,二 ping DNS,三 ping 公网IP
全都不通查网线,部分不通找路由!
路由跟踪
Traceroute 是一种网络诊断工具,在 Linux 系统中广泛用于故障排除。它旨在显示数据包从运行 traceroute 的系统到指定目标系统或网站的路径。它用于识别路由问题、提供延迟测量,并在数据包通过 Internet 时弄清楚网络结构。
沿路由的每次跳转都会测试多次(默认值为 3,但可以更改),并显示每个数据包的往返时间。如果某些数据包无法到达目的地,traceroute 可以帮助诊断故障发生的位置。
在 Linux 中跟踪路由可以通过执行命令来实现,该命令允许您发现 Internet 协议数据包在到达目的地时遵循的路由。traceroute
$ traceroute www.example.com
我来用快递送货的例子帮你理解 traceroute 的工作原理:
假设你从北京寄快递到上海的朋友家,但快递中途要经过多个中转站:
-
你寄出快递时在包裹上标记"有效期=1天"
-
第一个中转站(天津)收到后发现有效期只剩0天,就会:
-
销毁包裹
-
给你发回一条短信:"包裹在天津超时了"
-
-
你记录下天津站的响应时间(比如0.5ms)
-
接着你重新寄出包裹,标记"有效期=2天"
-
这次包裹能到达第二个中转站(济南),同样会收到超时通知
-
重复这个过程直到包裹到达上海朋友家
📊 执行 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
🔑 关键点解析:
-
每行代表一个网络节点(路由器/服务器)
-
三个时间值对应三次探测的往返延迟
-
星号(*) 表示该次探测未得到响应
-
延迟突增的位置往往暗示网络瓶颈
💡 实用技巧:
-
用
-I参数使用ICMP协议(类似ping)
traceroute -I baidu.com -
遇到星号时尝试增加探测次数:
traceroute -q 5 github.com -
限制最大跳数(适合内网排查):
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 = 网络连接的电话交换机面板**
想象你管理一个公司的电话系统,需要知道:
- 哪些分机正在通话 → 查看活动连接
- 哪些分机等待来电 → 查看监听端口
- 电话线路路由表 → 查看网络路由配置
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 的缩写)+ 数字编号**,比如 eth0、eth1 分别代表第一个、第二个以太网接口。
通俗解释
想象你的电脑有多个「网线插口」:
eth0→ 第一个插口(比如连接路由器的网线)eth1→ 第二个插口(如果有额外的网卡)wlan0→ 无线网卡(Wi-Fi)lo→ 虚拟的「回环接口」(用于本机内部通信)
命令中的用途
在 sudo tcpdump -i eth0 host 192.168.1.100 中:
-i eth0表示 监听(抓包)通过eth0接口的网络流量- 如果不指定
-i,tcpdump会默认监听第一个非回环接口(通常是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) |
docker0 | Docker 创建的虚拟接口 | 容器网络通信 |
tun0 | VPN 隧道接口 | 连接 OpenVPN 时使用 |
为什么需要指定 eth0?
- 如果服务器有多个网卡(比如
eth0接内网,eth1接外网),指定接口可以精准抓包 - 避免抓取无关流量(比如
lo回环接口的本地通信)
扩展知识:现代 Linux 的接口命名
新版本 Linux 可能使用 基于固件/拓扑的命名规则(如 enp0s3、ens33),但原理与 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数据)
-
发现异常包裹(恶意流量分析)
-
🛠️ 实战案例演示
需求:排查网站访问缓慢问题
步骤:
-
启动物流监控(开始抓包)
sudo tcpdump -i eth0 port 80 -w web.pcap -
复现问题(访问目标网站)
-
停止抓包后分析:
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字节
🔧 实用技巧锦囊
-
精准过滤:
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 响应,表示服务端同意建立连接。 -
抓取内容(慎用):
命令作用
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明文内容 -
流量统计:
你提到的这条命令是使用
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统计间隔(单位:秒) 将监控录像按每分钟分段分析 -
分解说明:
-
-r traffic.pcap
➡️ 相当于打开「物流中心过去24小时的监控录像」(读取已保存的抓包文件) -
-qz io,stat,60
➡️ 执行「自动化的运输报表生成系统」,参数分解:-
io,stat:统计输入输出流量(Input/Output Statistics) -
60:将监控录像按60秒为单位分段分析
-
-
📊 典型输出示例
=================================================================== | 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 | ===================================================================
📦 数据列解读(物流中心版)
-
Duration (时长)
➡️ 分析的时间窗口(每60秒一个统计周期) -
Packets (数据包数量)
➡️ 该时段经过传送带的包裹总数(1个包裹=1个数据包) -
Bytes (字节数)
➡️ 该时段运输的货物总重量(1字节=1克货物) -
bps (bits per second)
➡️ 传送带实时负载率(比特/秒,1字节=8比特) -
B/s (Bytes per second)
➡️ 实际货运吞吐量(字节/秒) -
MB (兆字节)
➡️ 该时段运输的货物总重量(换算为MB单位) -
🔍 实战应用场景
案例:排查网络带宽异常
-
发现异常时段
👉 观察哪段时间的「bps」或「MB」列数值异常增高 -
定位问题类型:
-
突发高bps + 高Packets → 可能遭遇DDoS攻击(海量小包)
-
持续高MB + 正常Packets → 大文件传输/数据泄露
-
bps周期性波动 → 正常业务流量(如整点备份)
-
-
结合原始数据
# 定位到异常时间段后,提取该时段详细通信记录 editcap -A "2023-08-01 14:30:00" -B "2023-08-01 14:31:00" traffic.pcap suspicious.pcap wireshark suspicious.pcap -
变体3:TopN 会话排行
tshark -r traffic.pcap -qz conv,tcp # 统计TCP会话流量TOP榜
💡 注意事项
-
权限问题:分析抓包文件时可能需要
sudo权限 -
时间精度:统计粒度(60秒)可根据需要调整,建议:
-
故障排查:5-10秒精细粒度
-
趋势分析:300-600秒大粒度
-
-
数据可视化:可将输出导入Excel生成流量曲线图
-
(扩展思考:对比
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端口的请求
📚 学习路径建议
-
先掌握基础过滤器语法
-
从分析HTTP流量开始练习
-
逐步过渡到TCP流重组分析
-
最后挑战TLS加密流量分析
(小贴士:Wireshark官网提供各种协议的示例抓包文件,是绝佳的学习资料)
相关文章:
Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))
故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…...
【大模型】硅基流动对接DeepSeek使用详解
目录 一、前言 二、硅基流动介绍 2.1 硅基流动平台介绍 2.1.1 平台是做什么的 2.2 主要特点与功能 2.2.1 适用场景 三、硅基流动快速使用 3.1 账户注册 3.2 token获取 3.2.1 获取token技巧 四、Cherry-Studio对接DeepSeek 4.1 获取 Cherry-Studio 4.2 Cherry-Stud…...
UE5.5 Niagara 发射器粒子更新模块
Particle State (粒子状态)模块 Particle State 主要用于控制粒子的生存状态,包括死亡、消失、响应事件等。 Particle State Kill Particles When Lifetime Has Elapsed 当粒子的生命周期结束时,销毁这些粒子。 Lifetime &…...
机器学习(吴恩达)
一, 机器学习 机器学习定义: 计算机能够在没有明确的编程情况下学习 特征: 特征是描述样本的属性或变量,是模型用来学习和预测的基础。如: 房屋面积, 地理位置 标签: 监督学习中需要预测的目标变量,是模型的输出目标。如: 房屋价格 样本: 如: {面积100㎡…...
JavaWeb-servlet6中request和response的使用
HttpServletRequest HttpServletRequest 继承自 ServletRequest。客户端浏览器发出的请求被封装成为一个 HttpServletRequest对象。 对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统…...
Django与视图
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲视图 在web应用的MVC结构中,视图一般包含模板和表单,用来给浏览器生成响应。在实际处理过程当中,视图会根据请求的参数从数据源当中找到数据…...
RabbitMQ从入门到实战-2
文章目录 Java客户端快速入门WorkQueue(多消费)能者多劳配置 交换机fanout交换机案例 Direct交换机Topic交互机 声明队列和交互机(IDEA中)基于Bean声明队列和交换机基于注解声明(推) 消息转换器配置Json消息转换器 业务改造&#…...
【每日八股】计算机网络篇(四):HTTP
目录 HTTP 与 HTTPS 的区别?HTTPS 加密与认证的过程?ClientHelloServerHello客户端回应服务端回应 HTTPS 一定安全可靠吗?HTTPS 状态码的含义?HTTP 缓存有哪些实现方式?HTTP 1.0、HTTP 1.1、HTTP 2.0 和 HTTP 3.0 的区…...
Mac 配置 Maven JDK
不使用 Homebrew,创建指定版本 JDK 1、官网下载指定版本并安装……省略 2、vi ~/.zshrc 同时要检查 bash_profile 是否存在。 if [ -f ~/.bash_profile ] ; thensource ~/.bash_profile fiJAVA_HOME_11/Library/Java/JavaVirtualMachines/jdk-11.0.1…...
测试大语言模型在嵌入式设备部署的可能性-ollama本地部署测试
前言 当今各种大语言模型百花齐放,为了方便使用者更加自由的使用大模型,将大模型变成如同棒球棍一样每个人都能用,并且顺手方便的工具,本地私有化具有重要意义。 本次测试使用ollama完成模型下载,过程简单快捷。 1、进…...
Ubuntu通过Ollama部署deepseek和千问
一、准备文件 本地服务器是Ubuntu20.04,输入命令uname -a即可查看 部署方式有多样,点击Ollama访问官网 可复制命令直接粘贴下载,但是过程比较慢,所以我推荐下面这种方式 从githubReleases ollama/ollama GitHub上下载ollama的…...
责任链模式的C++实现示例
核心思想 责任链模式是一种行为设计模式,允许多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合。请求沿着处理链传递,直到某个对象处理它为止。 解决的问题 解耦请求发送者与处理者:请求的发送者无需知道具…...
微服务新手入门
一、微服务概念 微服务是一种软件架构风格,ta是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务 - 服务拆分 - 远程调用 - 服务治理 - 请求路由 - 身份认证 - 配置管理 - 服务保护 - 分布式事务 - 异步通信 - 消息可靠性 - 延迟消…...
第十一届蓝桥杯单片机国赛
什么?4T模拟赛和省赛做起来轻轻松松?不妨来挑战一下第十一届国赛,这一届的国赛居然没考超声波、串口通信!只要你正确地理解了题目的意思,规避出题人挖的坑,拿个国一轻轻松松。 附件:第十一届蓝桥…...
【eNSP实战】MSTP与VRRP配合使用
拓扑图 要求: PC1划分在vlan10;PC2划分在vlan20;主机IP和网关如图所示,这里不做展示LSW1配置vlan10的根交换机,vlan20的备根交换机;LSW2配置vlan20的根交换机,vlan10的备根交换机LSW1配置vlan…...
【每日学点HarmonyOS Next知识】tab拦截、组件方法做参数、自定义组件链式调用、多次观察者监听、横竖屏切换
1、HarmonyOS Tab组件里的tabBar点击如何拦截,根据情况判断是否允许切换tab? Tab组件里的tabBar点击如何拦截,根据情况判断是否允许切换tab 暂时没有tabBar点击拦截功能实现,可以使用TabsController自定义页签以及并在其中添加事…...
UVC摄像头命令推流,推到rv1126里面去
ffmpeg命令查询UVC设备 .\ffmpeg.exe -list_devices true -f dshow -i dummy 上图是查询UVC设备的效果图,画红框的部分是UVC设备的设备名称"USB2.0 PC CAMERA"和设备号 "device_pnp_\\?\usb#vid_1908&pid_2310&mi_00#8&39abfe5&0&a…...
2025年主流原型工具测评:墨刀、Axure、Figma、Sketch
2025年主流原型工具测评:墨刀、Axure、Figma、Sketch 要说2025年国内产品经理使用的主流原型设计工具,当然是墨刀、Axure、Figma和Sketch了,但是很多刚入行的产品经理不了解自己适合哪些工具,本文将从核心优势、局限短板、协作能…...
es-索引详解
在 Elasticsearch 中,**索引(Index)**是核心概念之一,类似于关系型数据库中的“表”。索引用于存储、组织和检索文档(Document)。以下是关于 Elasticsearch 索引的详细解析: 1. 索引的基本概念 …...
SAP接口方式之HTTP请求发布Restful服务
SAP restful http 接口集中管理发布(SICF) 项目上有很多restful接口的需求,其中涉及到多个外围系统,就想着如何通过只发布一个服务,而不用通过Webservice,也不通过RFC方式,让个外围系统传入不同的报文,来决…...
Spark-TTS:基于大模型的文本语音合成工具
GitHub:https://github.com/SparkAudio/Spark-TTS Spark-TTS是一个先进的文本到语音系统,它利用大型语言模型(LLM)的强大功能进行高度准确和自然的语音合成;旨在高效、灵活、强大地用于研究和生产用途。 一、介绍 Sp…...
Netty基础—3.基础网络协议一
大纲 1.网络基础的相关问题总结 2.七层模型和四层模型 3.物理层(网线 光缆 01电信号) 4.数据链路层(以太网协议 网卡mac地址) 5.网络层(IP协议 子网划分 路由器) 6.传输层(TCP和UDP协议 Socket 端口) 7.应用层(HTTP协议 SMTP协议) 8.浏览器请求一个域名会发生什…...
【mysql】centOS7安装mysql详细操作步骤!
【mysql】centOS7安装mysql详细操作步骤!—通过tar包方式 需要 root 权限,使用 root 用户进行命令操作。 1. 查看 CentOS 版本 cat /etc/redhat-release2. 安装rpm包,以8为例 打开 MySQL 官方 yum 仓库网站,获取与当前 CentOS …...
大白话 Vue 中的keep - alive组件,它的作用是什么?在什么场景下使用?
大白话 Vue 中的keep - alive组件,它的作用是什么?在什么场景下使用? 什么是 keep-alive 组件 在 Vue 里,keep-alive 是一个内置组件,它就像是一个“保存盒”,能把组件实例保存起来,而不是每次…...
当量子计算遇上互联网安全:挑战与革新之路
当量子计算遇上互联网安全:挑战与革新之路 量子计算,一个被誉为下一次科技革命的前沿技术,正在以惊人的速度发展。这项技术以其超越经典计算机的计算能力,为科学、医药和物流等领域带来了颠覆性变革。然而,对于互联网…...
Unity 封装一个依赖于MonoBehaviour的计时器(上) 基本功能
灵感来自下面这本书的协程部分,因此我就自己尝试写了一个 我的新书Unity3D游戏开发(第3版) | 雨松MOMO程序研究院 如果你不知道什么是协程:unity保姆级教程之协同程序_unity协同-CSDN博客 一句话概括:协程就是单线程的异步操作,其作用于Unity的主线程 1…...
使用Nodejs基于DeepSeek加chromadb实现RAG检索增强生成 本地知识库
定义 检索增强生成(RAG)的基本定义 检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种结合了信息检索技术与语言生成模型的人工智能技术。RAG通过从外部知识库中检索相关信息,并将其作为提示&…...
笔试刷题专题(一)
文章目录 最小花费爬楼梯(动态规划)题解代码 数组中两个字符串的最小距离(贪心(dp))题解代码 点击消除题解代码 最小花费爬楼梯(动态规划) 题目链接 题解 1. 状态表示࿱…...
LeetCode977有序数组的平方
思路①:先平方,后快排,输出(基准元素,左小右大) 时间复杂度:O(nlogn) 思路②:双指针左右开弓,首先原数组已经是按照非递减顺序排序,那…...
React.js 基础与进阶教程
React.js 基础与进阶教程 React.js 是由 Facebook 开发的流行前端 JavaScript 库,专为构建用户界面(UI)设计,尤其适用于单页面应用(SPA)。它采用组件化开发模式,使 UI 结构更加清晰、可维护性更…...
