接口文档说通了,浏览器却一直转圈,与其猜不如抓一次包。wireshark抓包分析并不神秘,先说前提:只抓自己的电脑流量或者自己有权管理的网络,用于学习和排查自己的问题。
第一步:选对网卡
打开软件后在欢迎页双击当前在用的网卡,无线环境选WLAN那一项。抓几秒钟包列表就会疯狂滚动,直接翻是翻不过来的,过滤器才是关键。想抓本机localhost的通信,Windows下装npcap时勾上loopback支持,会多出一个本地回环适配器可选。
两类过滤器先分清
顶部黄色输入栏是显示过滤器,对已抓到的包做筛选,用ip.addr、tcp.port这类语法;捕获过滤器在开始抓包前设置,只抓符合条件的包,语法是另一套,tcpdump风格。日常排查用显示过滤器就够,先抓再筛更灵活。
ip.addr == 192.168.1.8
tcp.port == 443 and ip.addr == 10.0.0.5
udp.port == 53
第一行只看和某台设备的通信;第二行组合条件,看指定地址的443流量,and可以换成or;第三行专门看DNS查询,域名到底解析成了哪个IP一眼可见。过滤栏变绿说明语法正确,变红就是写错了。
看懂几个经典场面
访问一个网站并过滤出它的地址,能看到经典的SYN、SYN、ACK三次握手;只有SYN没有回应,多半是端口不通或被拦截。TLS握手之后的加密内容看不到原文,这是正常的,别指望抓包看HTTPS正文。本机自己起个HTTP服务调试接口,抓lo口能看到明文请求头和参数。看两台设备完整的一次会话,右键选Follow里的TCP Stream最直观。
保存与收尾
排查完用File菜单的Save As存成pcapng文件,方便回头对照或发给别人看。抓包期间尽量完整复现一次出问题的操作,包里混进太多无关流量反而难分析。软件用新版本,旧版本的协议解析模块出过安全问题。
实际判断:先加过滤器再开始抓,比抓完再过滤轻松得多;生产环境和他人网络的抓包要走审批,这个边界别越。