tshark 命令行抓包分析
tshark 是 Wireshark 的命令行版本,支持实时抓包、读取 pcap、显示过滤、字段提取和统计。适合在没有图形界面的服务器上分析网络问题。
常用能力:按接口/主机/端口抓包、BPF 捕获过滤、Wireshark 显示过滤、跟踪 TCP 流、TLS 握手分析和 IO 统计。
列出接口:
tshark -D
抓取指定接口:
tshark -i eth0 -f 'tcp port 443' -c 100
读取 pcap 并过滤:
tshark -r capture.pcap -Y 'http.request.method == "GET"'
只看关键字段:
tshark -r capture.pcap -T fields \
-e frame.time -e ip.src -e ip.dst \
-e tcp.srcport -e tcp.dstport -e http.host
跟踪 TCP 流:
tshark -r capture.pcap -q -z follow,tcp,ascii,0
统计会话:
tshark -r capture.pcap -q -z conv,tcp
tshark -r capture.pcap -q -z io,stat,1
分析 DNS:
tshark -r capture.pcap -Y dns -T fields -e dns.qry.name -e dns.a
-f 是捕获过滤(BPF),-Y 是显示过滤,语法不能混用。CAP_NET_RAW,容器内还要挂载网络命名空间。-c 或 -a duration 限制。tshark 解析开销大,优先用 tcpdump 抓包后再分析。