linux查看网络包命令
linux查看网络包命令详细介绍
在 Linux 中查看网络包(抓包)的常用命令主要有 tcpdump 和 tshark(Wireshark 的命令行版本),以下是具体用法和示例:
一、tcpdump(最常用抓包工具)
基本语法
bash
tcpdump 选项 过滤条件
常用选项
| 选项 | 说明 |
|---|---|
-i <接口> |
指定抓包的网络接口(如 eth0、wlan0、any 表示所有接口)。 |
-n |
不解析域名(加快抓包速度,避免 DNS 解析延迟)。 |
-v |
显示详细信息(-vv 更详细)。 |
-s 0 |
抓取完整数据包(默认只抓前 68 字节)。 |
-w <文件> |
将抓包结果保存到文件(后续可用 tcpdump -r 或 Wireshark 打开)。 |
-r <文件> |
读取已保存的抓包文件并分析。 |
过滤条件(核心功能)
- 按接口抓包
bashtcpdump eth0 - 按协议过滤(如 TCP、UDP、ICMP)
bashtcpdump eth0 tcptcpdump eth0 udp
tcpdump eth0 icmp
- 按端口过滤
bashtcpdump eth0 porttcpdump eth0
tcpdump eth0 src port
tcpdump eth0 dst port
- 按 IP 地址过滤
bashtcpdump eth0 .1.1tcpdump eth0 src .1.1
tcpdump eth0 dst .1.1
- 组合条件(使用逻辑运算符:
and/&&,or/||,not/!)
bashtcpdump eth0tcpdump eth0
- 保存到文件并分析
bashtcpdump eth0 capture.pcaptcpdump capture.pcap
二、tshark(Wireshark 命令行版本,功能更强大)
需先安装 Wireshark(包含 tshark):
bash
wiresharkdnf wireshark
基本语法
bash
tshark 选项 显示过滤器
常用选项
| 选项 | 说明 |
|---|---|
-i <接口> |
指定抓包接口。 |
-Y <表达式> |
使用 Wireshark 显示过滤器(比 tcpdump 更灵活,如 http.host == "example.com")。 |
-T fields |
自定义输出字段(配合 -e 指定具体字段,如 -e ip.src -e tcp.port)。 |
-w <文件> |
保存为 pcap 文件。 |
示例
- 按 HTTP 域名过滤
bashtshark eth0 example.com\"" - 提取特定字段(如源 IP、目标端口)
bashtshark eth0 fields ip.src tcp.dstport - 保存为 pcap 文件
bashtshark eth0 capture.pcap
三、其他相关工具(辅助查看网络状态)
- iftop:实时显示网络流量(按进程 / IP 统计带宽),需安装:
bashiftopdnf iftop
iftop eth0
- netstat:查看网络连接、端口状态等(非抓包,而是统计信息):
bash
注意事项
- 权限:抓包需要管理员权限,需用
sudo执行。 - 接口名称:通过
ip addr或ifconfig查看当前接口名称(如eth0、enp3s0、wlan0等)。 - 性能影响:长时间抓包可能占用大量磁盘空间,建议配合过滤条件缩小范围。
根据需求选择工具:
- 简单抓包分析:用
tcpdump。 - 复杂过滤或自定义输出:用
tshark。 - 实时流量监控:用
iftop。