netsh trace 是干什么的
netsh trace 是系统自带的抓包与网络跟踪工具:它在 ETW 层采集网络栈事件,产出一个 .etl 文件,可用 netsh trace convert 转成 Wireshark 能打开的抓包文件。相比装 Wireshark,它不需要额外软件、能在生产服务器上直接跑,但采集内容是网络栈视角,缺少部分链路层细节,且文件体积增长很快。
基本信息
| 适用平台 | Windows 7 / Server 2008 R2 及以上 |
|---|---|
| 开始采集 | netsh trace start capture=yes tracefile=文件.etl maxsize=512 |
| 停止采集 | netsh trace stop |
| 格式转换 | netsh trace convert 文件.etl(生成 .txt/.xml 或抓包文件) |
| 权限 | 需管理员,抓包属高权限操作 |
典型使用场景
- 疑难网络问题:应用报超时但日志看不到原因,抓一段流量比对
- 验证安全策略:确认某个端口是否真的有流量发出与返回
- 与厂商对证:把 etl 交给网络设备或软件厂商分析
- TLS 握手失败排查:看握手是否走到证书与算法协商阶段
- 间歇性问题复现:在问题临界点开始采集,把窗口开大一点覆盖现象
常用示例
常用示例
:: 开始采集(限制最大 512MB,避免写满磁盘)
netsh trace start capture=yes tracefile=D:\trace.etl maxsize=512
:: 按需限定范围:只抓指定 IPv4 地址的流量
netsh trace start capture=yes tracefile=D:\trace.etl ipv4.address=10.0.0.25 maxsize=512
:: 复现问题后立即停止
netsh trace stop
:: 转换后用 Wireshark 打开
netsh trace convert D:\trace.etl
:: 查看采集期间生成的摘要信息(报告文件与 etl 同目录)
dir D:\trace.* /o-d关键参数
| 参数 | 作用 | 建议 |
|---|---|---|
| capture=yes | 同时采集数据包 | 排查流量问题必加 |
| tracefile= | 输出 etl 路径 | 放非系统盘,避免挤占系统空间 |
| maxsize= | 最大文件大小(MB) | 务必设置,防止写满磁盘 |
| ipv4.address= | 限定采集的 IP | 缩小范围,文件更小更干净 |
| persistent=yes | 重启后仍保持采集 | 慎用,容易忘记停止 |
只抓关键复现时段的几分钟,比全天候采集有价值得多:文件小、信噪比高、分析快。开始采集前先把复现步骤准备好。
抓包文件可能包含明文凭据、Cookie、个人信息,属于敏感数据。存储要限定目录权限、传输要加密、用完及时删除,别长期堆在共享盘上。
忘记执行 netsh trace stop 会持续写盘,即使设了 maxsize 也可能把盘写满。养成习惯:采集脚本里加超时兜底,或者用 netsh trace stop 后再核对 etl 与报告文件是否都生成。