上周帮同事查一个Web接口超时问题,他打开Wireshark点了开始,界面一片空白——明明浏览器里请求都发出去了,过滤器也设了http,就是没半条数据。这不是个例,很多运维、开发甚至安全同学第一次上手协议分析器,常卡在“为什么抓不到包”这一步。
网卡没选对,等于没开录
最常踩的坑:默认选了“Loopback”或“VMware Network Adapter”,结果真流量全从物理网卡走。打开软件第一件事,看右下角网卡列表——哪个接口正在传数据?Windows下可以任务管理器→性能→以太网看实时速率;Linux下跑 ip -s link 看 RX/TX 增长。有流量增长的那个,才是你该点的网卡。
混杂模式关了,漏掉隔壁的包
有些网卡驱动或虚拟环境(比如WSL2桥接模式)默认禁用混杂模式,导致只能收到发给本机的包,收不到同网段其他设备的广播/多播/转发流量。Wireshark里点捕获选项→勾选“Enable promiscuous mode”;Tshark命令行加 -p 参数:
tshark -i eth0 -p -f "port 80"注意:部分WiFi适配器不支持混杂模式,换有线试试。
防火墙悄悄拦了镜像流量
公司内网常通过交换机端口镜像把流量引到分析机,但Windows Defender或第三方安全软件会把镜像来的“非本机目的IP”的包直接丢弃。临时关闭防火墙验证一下:
netsh advfirewall set allprofiles state off如果立马能抓到,说明是它干的——后续可在高级防火墙里新建入站规则,允许任意IP、任意端口的UDP/TCP流量(仅限测试环境)。
HTTPS加密了,但你还在过滤 http
现代网站基本全站HTTPS,用 http 过滤器当然空空如也。想看明文内容,得配合浏览器导出SSLKEYLOGFILE,再在Wireshark中设置:编辑→首选项→Protocols→TLS→(Pre)-Master-Secret log filename。或者更直接——先用 tcp port 443 抓包,确认三次握手和数据传输是否存在,再判断是协议层问题还是应用层加密问题。
USB网卡或旧型号网卡驱动太老
某次在一台老戴尔台式机上,Wireshark始终显示“Capture error: The NPF driver isn't running”。重装WinPcap不行,换Npcap也不行。最后发现BIOS里“Legacy USB Support”被关了——打开后重启,驱动终于加载成功。类似情况还有雷电扩展坞上的USB网卡,需确认是否被系统识别为“Remote NDIS”类设备,这类设备Wireshark原生支持差,建议换PCIe千兆网卡实测。
别忘了时间同步这个隐形杀手
排查分布式系统调用延迟时,发现A服务日志说“请求耗时800ms”,B服务日志却显示“收到时间比发出时间还早”。一查两台机器时间差了2秒——Wireshark里的时间戳是本地系统时间,若服务器没跑NTP,抓出来的RTT计算全作废。上线前顺手敲一句:
sudo ntpdate -s time.windows.com或配置systemd-timesyncd,省得后面绕弯子。