菜鸟科技网

Linux Wireshark抓包命令有哪些常用参数?

在Linux系统中使用Wireshark进行抓包是网络分析和故障排查的常用手段,其核心依赖于命令行工具tcpdump与Wireshark图形界面的配合,或直接通过Wireshark的命令行参数实现高效抓包,以下是详细操作指南及关键命令解析。

Linux Wireshark抓包命令有哪些常用参数?-图1
(图片来源网络,侵删)

基础抓包命令

直接使用Wireshark命令行抓包

Wireshark提供了tshark命令行工具,功能与图形界面一致,适合服务器环境或远程操作,基本语法为:

tshark [选项] -i 网卡名 -f 过滤表达式 -w 文件名.pcap
  • -i:指定监听网卡,可通过ip aifconfig查看网卡名称(如eth0ens33)。
  • -f:设置BPF过滤表达式,仅捕获符合条件的数据包(如tcp port 80过滤HTTP流量)。
  • -w:将抓包结果保存为.pcp文件,便于后续分析。

示例
监听eth0网卡,捕获目标IP为168.1.100的所有TCP流量并保存为capture.pcap

tshark -i eth0 -f "tcp and host 192.168.1.100" -w capture.pcap

使用tcpdump配合Wireshark分析

tcpdump是Linux原生抓包工具,轻量级且高效,抓包后可通过Wireshark打开文件进行深度分析,基本命令:

tcpdump [选项] -i 网卡名 -c 抓包数量 -s snaplen -w 文件名.pcap
  • -c:指定抓包数量,如-c 1000捕获1000个包后自动停止。
  • -s:设置抓包长度(snaplen),默认为65535字节,可缩短为-s 0捕获完整数据包。

示例
抓取ens33网卡上源或目标端口为22(SSH)的前500个包,保存为ssh_capture.pcap

Linux Wireshark抓包命令有哪些常用参数?-图2
(图片来源网络,侵删)
tcpdump -i ens33 -c 500 -s 0 "port 22" -w ssh_capture.pcap

抓包完成后,用Wireshark打开文件:

wireshark ssh_capture.pcap

高级过滤与实时分析

常用BPF过滤表达式

过滤条件 说明 示例
协议过滤 指定协议(tcp/udp/icmp等) tcpudpicmp
端口过滤 指定源/目标端口 port 80src port 53
IP地址过滤 指定源/目标IP host 192.168.1.1
网段过滤 指定网段 net 192.168.1.0/24
组合过滤 逻辑与(and)、或(or)、非(not) tcp and port 80 and not host 192.168.1.100

实时抓包并显示

若需实时查看抓包内容(不保存文件),可使用tcpdump-v(详细)或-vv(更详细)选项:

tcpdump -i eth0 -vv "tcp port 80" -A  # -A以ASCII显示数据包内容

常见问题与优化

  1. 权限问题:抓包需要root权限,普通用户需使用sudo执行命令。
  2. 网卡选择错误:若提示No such device,检查网卡名称是否正确(虚拟机网卡可能为ens33eth1等)。
  3. 性能优化:高流量场景下,可使用-Q(强制退出模式)或限制抓包长度(-s 96)减少资源占用。

相关问答FAQs

Q1: 如何在抓包时只捕获HTTP请求和响应的完整内容?
A1: 可结合BPF过滤和tshark-T fields参数提取HTTP层信息,例如捕获HTTP方法、URL和状态码:

tshark -i eth0 -f "tcp port 80" -T fields -e http.request.method -e http.request.uri -e http.response.code

若需保存完整数据包,直接使用-w选项保存后,在Wireshark中通过http协议过滤分析。

Q2: 抓包时出现“packet dropped”提示,如何解决?
A2: 该提示表明网络流量过大,导致缓冲区溢出,解决方案:

  • 使用更快的网卡或增加缓冲区大小(tcpdump -i eth0 -B 65536-B设置缓冲区单位为KB)。
  • 启用tcpdump-Q选项减少处理开销,或改用-j(将数据包直接写入文件而不解析)。
  • 若使用tshark,可添加-z io,stat,1每秒统计流量,避免实时显示消耗资源。
分享:
扫描分享到社交APP
上一篇
下一篇