【Container App】在容器中抓取网络包的方法

Just_Esme

关注

阅读 36

07-30 12:00

问题描述

在上两篇博文中,我们介绍了Azure Container App容器应用中来测试与外部接口的连通性。通过curl 和 nc 命令发送请求以及长ping端口。 

  1. 【Container App】如何测试它是否可以正常发出请求? 
  2. 【Container App】如何长Ping一个目标主机和端口? 

但是,如果遇见必须抓取网络包的情况下,我们有什么好办法呢?

 

本文就将分享一种Container App中安装tcpdump后,抓取网络包,并且通过storage account获取到网络包文件。

 

问题解答

话不多说,直接展示操作步骤。

第一步:安装了tcpdump

PS: 本次实验中,使用 tdnf install tcpdump 进行安装。因不同的linux基础镜像需要的安装命令有差别,可根据情况自主选择安装方式

 

第二步:执行 tcpdump 开启抓取网络包

Tips: 

  • 在抓取之前,可以通过 tcpdump -D 列出所有的网卡
  • 然后使用tcpdump -i eth0 监测是否有流量经过 eth0 网卡,如果无,根据上一步列表中切换网卡名
  • 使用dst host 和 port来过滤网络包,以避免抓取的流量包过大

示例命令:

# List all the NIC( network interface card)
tcpdump -D

# Check the real traffic
tcpdump -i eth0


# filter by dst host & port
tcpdump -i eth0 dst host <your host> and port 443 -w port-443-$RANDOM.cap

# filter by dst port
tcpdump -i eth0 dst port 443 -w port-443-$RANDOM.cap

#all traffic
tcpdump -i eth0 -w port-443-$RANDOM.cap

注意:在抓取中复现问题后或抓取到满足要求的时间段后,通过 Ctrl + C 停止抓包命令!


第三步:使用 crul 调用 Storage Account PUT请求上传网络包

命令模板:

 curl -X PUT -k -T <file name> -H "x-ms-blob-type: BlockBlob" "https://[storage_account_name].blob.core.chinacloudapi.cn/[container_name]/[blob_name]?[sas_token]"

Tips:

  • <file name> : 第二步中保存的网络包文件名,本例中的文件名是:port-443-22290.cap
  • [storage_account_name], [container_name],[blob_name],[sas_token]:均是需要从Azure Storage account中获取, blob_name 为上传后的文件名。


实验成功!

 

## 获取Storage Account SAS URL截图


 

参考资料

使用共享访问签名 (SAS) 授予对 Azure 存储资源的受限访问权限 : https://docs.azure.cn/zh-cn/storage/common/storage-sas-overview?toc=%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json

 

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!



精彩评论(0)

0 0 举报