安卓设备在内网中访问指定目标地址出现异常的问题排查
前言
Android手机tcpdump抓包 本次使用设备为Android虚拟设备(已获取root权限)
正文
网络障碍排查
- 进入设备
adb shell
如果有多个设备则先查看设备列表并指定设备
adb devices
adb -s [设备名称] shell
- 复制tcpdump
find / -name "tcpdump" 2>/dev/null
我们发现 android已经内置了 tcpdump 目录在/system/xbin/tcpdump 如果没有安卓设备内没有搜到的话,就网上下载tcpdump复制到手机
cp /system/xbin/tcpdump /sdcard/tmp/tcpdump
- 提权tcpdump
chmod 777 /sdcard/tmp/tcpdump
如果可以直接使用tcpdump可跳过2-3步骤
- tcpdump命令简介
查看所有可以抓包的网络接口
tcpdump -D
抓包使用的网络接口
tcpdump -i [interface]
tcpdump -i any
限制 tcpdump 抓包的数量
tcpdump -c [num]
tcpdump -c 5
-n 选项显示 IP 地址 -nn 选项显示端口号
过滤host
tcpdump host ip
tcpdump -i any -c 5 -n -nn
-w /sdcard/capture.pcap 可将网络数据包保存到文件后 pull到pc上使用wireshark分析
# 常用命令
# 所有网卡,不看域名看ip,只查看5行
tcpdump -i any -c 5 -n -nn
# 所有网卡,看https请求,不限制行数
tcpdump -i any port 443 -n -nn
tcpdump各种信号类型含义
F : FIN - 结束; 结束会话
S : SYN - 同步; 表示开始会话请求
R : RST - 复位; 中断一个连接
P : PUSH - 推送; 数据包立即发送
A : ACK - 应答
正常一个http请求应该有 S-P-F,如果发出一个请求出现 [S.][.][.][.]…却不见[P.]和[F.]很可能就是网路不通了,然后再去相应目标地址抓包查看或查看防火墙配置等。
- 用进程名获取端口
netstat -anp | grep [packagename]
tcpdump -i any port [端口号] -n -nn
总结
很实用的Android设备网络故障分析方法,实际上出现问题的原因多还是些传统问题,如目标地址的网络防火墙,宿主机网络异常等。
|