问题描述
在App Service for Linux环境中,不能与Windows环境一样,可以使用网络中的排查工具来抓取网络包。
那么,在Linux(非Container)环境中,如何抓取网络包呢?
问题解答
抓取网络包最核心的工具就是TCPDUMP,所以在App Service Linux的环境中,解决办法就两步:一,安装tcpdup,二,执行tcpdump命令
详细的操作步骤如下:
1) SSH进入应用所运行的容器中
SSH Application Contianer URL: https://<Your App Service Name>.scm.chinacloudsites.cn/webssh/host
特别提醒,一定是 SSH for Instance, 不是Kudu。
2)安装tcpdump
使用apk工具安装,使用如下命令:
apk update
apk add tcpdump
3)开始抓包
抓包指令: tcpdump -i any host <ip address> and tcp port <3306> -n -v -s 0 -w /home/appnetworktrace0827.pcap
🧪 指令参数详解
参数 | 说明 |
---|---|
tcpdump |
Linux 下的网络抓包工具,用于捕获网络接口上的数据包。 |
-i any |
表示监听所有网络接口(包括 eth0、lo 等),适用于容器或多网卡环境。 |
host <ip address> |
只抓取与该 IP 地址相关的通信数据包。这个 IP 是你 MySQL 数据库的地址。 |
and tcp port 3306 |
进一步过滤,只抓取 TCP 协议下端口为 3306(MySQL 默认端口)的数据包。 |
-n |
禁止 DNS 解析,加快抓包速度并避免干扰。 |
-v |
输出更详细的信息(verbose 模式)。 |
-s 0 |
设置抓包的快照长度为最大(0 表示抓取完整数据包),确保不会截断 TLS 握手内容。 |
-w /home/appnetworktrace0827.pcap |
将抓取的数据包保存为 pcap 文件,便于后续使用 Wireshark 等工具分析。 |
命令执行效果图:
4)Ctrl + C 停止
5)通过 Kudu newui 下载网络包
New UI : https://<Your App Service Name>.scm.chinacloudsites.cn/newui/
点击 File Manager ,进入Home目录,找到第三步中生成的文件,点击文件名左边第二个图标,进行下载。
以上步骤的动图版如下:
参考资料
Collecting a Network Trace on Linux Web Apps : https://azureossd.github.io/2023/12/05/Collecting-a-Network-Trace-on-Linux-Web-Apps/