把网线上跑的包看个明白:tcpdump 开源抓包,Linux 排障少不了

应用报错说连不上服务,可日志里看不出到底发出去没有、回来的又是什么。tcpdump 是 Linux 上最经典的命令行抓包工具,按你给的条件把经过网卡的原始数据包捕获下来,配合过滤表达式精准只看关心的流量。无论是排查连不通、协议异常还是确认请求是否真的发出,它都是排障第一线的放大镜。
它解决什么问题
应用说请求失败,却分不清是没发出还是对方没回。
怀疑某个服务在偷偷往外联,没有证据只能猜。
抓包工具太重不会用,只想快速看一眼某端口流量。
核心能力
| 能力 | 具体能做到什么 |
|---|---|
| 精准过滤 | 用表达式按端口、主机、协议筛包,噪音立马少 |
| 原始捕获 | 拿到链路层原始报文,细节不丢失 |
| 写文件 | 可存成 pcap 文件,拿去用图形工具细看 |
| 轻量无界面 | 纯命令行,服务器无桌面也能直接用 |
| 协议识别 | 能解析常见协议的字段,方便快速判断 |
| 开源免费 | BSD 授权,几乎是所有 Linux 发行版的标配 |

它守在网卡出口入口,把你设定的“符合条件的包”原样留下
tcpdump 工作在抓包层面,能截获经过指定接口的每个报文,再按你写的表达式决定保留哪些。比如只看发往某端口的 TCP、或只关心某台主机的往来。它输出的是报文头与摘要,足以判断“连接是否建立、握手是否完成、有没有重传”。需要进一步解码应用层内容时,把抓到的 pcap 交给 Wireshark 即可。对排障来说,先确认包到底在不在线上,往往就解决了一半问题。
抓包可能触及经过网络的通信内容,请只在你拥有管理权或已获授权的系统上执行,不要捕获你无权查看的流量。在繁忙接口无过滤抓包会迅速产生海量数据,记得加过滤条件并限制数量。本工具用于合法的网络排障与自有系统诊断。

同类工具怎么选
| 工具 | 授权 | 差别在哪 |
|---|---|---|
| Wireshark | 开源免费 | 图形化深度解码之王,但服务器无桌面时不如命令行方便。 |
| tshark | 开源免费 | Wireshark 的命令行版,解析能力强,学习曲线略陡。 |
| ngrep | 开源免费 | 像 grep 一样按内容匹配报文,抓特定字符串很顺手。 |
谁适合用
- 排查服务连不通的运维
- 需要确认流量真实走向的安全人员
- 学习网络协议原理的开发者
怎么开始
- 在 Linux 上用包管理器安装 tcpdump,抓包通常需相应权限。
- 指定接口,例如 tcpdump -i eth0,先看整体流量。
- 加过滤表达式缩小范围,如按主机或端口筛选。
- 用 -w 把结果存成 pcap 文件,便于后续分析。
- 结合输出判断连接、重传或异常,定位问题环节。
常见问题
没有图形界面能用吗?
能,它本来就是命令行工具,服务器环境正合适。
抓到的包能图形分析吗?
可以,存成 pcap 后用 Wireshark 打开即可逐层解码。
会看到别人的通信吗?
仅在共享广播域内可能,请只在授权网络使用,勿捕获无权查看的流量。
输出太多看不过来?
加过滤表达式并限制抓包数量,或先写文件再慢慢分析。
授权与合规
tcpdump 以 BSD-3-Clause 开源协议发布,源码公开,可自由使用与修改。 官网:www.tcpdump.org。
继续找同类资源
这条属于「软件工具」栏目,同栏目还有更多可直接使用的免费资源,可以在 软件工具全部资源 里按需翻阅。
相关资源
同栏目下这几条也常被一起翻到:
↓ 获取资源
点击按钮直接前往资源页面。