前言
在云计算生产环境中,Linux 云主机通常没有图形界面,我们无法使用 Wireshark 的图形界面。此时,掌握命令行抓包工具(如tshark/tcpdump)和离线包分析技能,是云计算架构师排查网络故障的必备生存技能。本文记录了我使用tshark(Wireshark 自带的命令行工具,玩法与 Linux 下的tcpdump一致)的实操过程。
一、 命令行环境准备与抓包
由于tshark在 Windows PowerShell 下直接运行会报错(安全策略限制),需使用.\前缀。
查看网卡编号:
.\tshark -D记住你上网的网卡编号(如 WLAN 为5,以太网为9)。
命令行抓包并保存:
.\tshark -i 5 -w test.pcap参数解读:-i指定网卡,-w写入文件。运行后按Ctrl+C停止抓包。
二、 离线包分析实战
拿到test.pcap文件后,我们不用打开 Wireshark 图形界面,直接在命令行进行分析。
查看文件体检报告:
.\capinfos test.pcap可以快速得知包数量、文件大小、平均带宽等核心指标。
读取文件并过滤:
.\tshark -r test.pcap -Y "dns"-r读取文件,-Y使用显示过滤器(语法与图形界面完全一致)。这里会精准打印出 DNS 查询记录,能清晰看到 CDN 的 CNAME 解析链条。
抓取 TCP 握手包:
.\tshark -r test.pcap -Y "tcp.port == 443" -c 10过滤 443 端口,-c 10表示只显示前 10 个匹配包。可以完美还原 TCP 三次握手过程(SYN、SYN+ACK、ACK)及 TLS 参数协商。
三、 踩坑复盘(避坑指南)
坑1:PowerShell 无法运行 tshark。报错
无法将“tshark”项识别为 cmdlet...。解决:在命令前加上
.\,如.\tshark -D。
坑2:
-c参数导致的过滤空屏。使用tshark -r test.pcap -Y "dns" -c 10时可能没有输出。解决:读取文件时,
-c 10表示只读取文件的前 10 个包,如果前 10 个包里没有 DNS,就会直接退出。建议去掉-c直接过滤,或者使用| head限制输出行数。四、 云架构师视角:云端排障标准动作
在云服务器上,你无法装图形界面,标准排障流程如下:
云端抓包:在 Linux 云主机执行
tcpdump -i eth0 -w /tmp/problem.pcap。拉回本地:使用
scp或 SFTP 将.pcap文件下载到本地。分析排障:使用本地 Wireshark 图形界面(看时间序列图、专家信息)或
tshark命令行进行深度分析。