首页 >弹性容器实例 >运维 >使用tcpdump抓包分析网络问题

使用tcpdump抓包分析网络问题

本文介绍如何开启tcpdump,以便在容器出现网络异常时,抓取网络报文,分析定位问题。

背景信息

容器出现网络异常时,您可能需要抓取网络报文来分析定位问题,但实际操作时可能会碰到以下问题:

  • 抓包需要使用exec进入容器,但网络异常时,容器不一定处于运行状态,您可能无法使用exec进入容器。

  • 抓包需要使用tcpdump工具,但容器的rootfs内可能没有预装tcpdump工具。

为解决上述问题,ECI支持一键开启tcpdump功能。该功能的逻辑如下:

tcpdump

使用限制

  • Job优化型实例不支持使用tcpdump。

  • 以下地域暂不支持tcpdump:华北6(乌兰察布)、华南2(河源)、华南3(广州)、华东5(南京)、菲律宾(马尼拉)、韩国(首尔)、泰国(曼谷)。

操作步骤

您可以通过弹性容器实例控制台或者OpenAPI来使用tcpdump功能。

控制台

  1. 登录弹性容器实例控制台

  2. 为ECI实例开启tcpdump。

    1. 单击目标实例ID,打开实例详情页面。

    2. 单击运维页签,然后选择Tcpdump页签。

    3. 根据需要设置参数,单击开启

      参数说明如下:

      参数

      描述

      源端

      可设置要抓包的源端IP地址或IP网段,以及对应端口。

      目的端

      可设置要抓包的目的端IP地址或IP网段,以及对应端口。

      网卡

      选择要抓包的网卡。默认为eth0。

      包长度

      设置数据包抓取长度。默认为65535字节。

      包数量

      设置数据包抓取的目标个数。

      持续时长

      设置抓取数据包的时长。单位为秒。

      网络协议

      选择网络协议。支持TCP、UDP和ICMPv4。

      开启tcpdump后,系统将开始抓包,并生成一个对应的运维任务,任务的状态为运行中

      tcpdump-1
  3. 根据需要对目标ECI实例进行调试,然后关闭tcpdump。

    关闭tcpdump后,系统将停止抓包,并生成相应的数据包文件,存储到OSS中。关闭方式如下:

    关闭方式

    说明

    手动关闭

    在目标实例的Tcpdump页签下,单击关闭

    自动关闭

    如果在开启tcpdump时,设置了包长度、包数量、持续时长等参数限制数据包大小、抓取时间等,则系统将在满足某一限制条件时,自动关闭tcpdump。

  4. 单击运维任务对应结果列中的下载,下载数据包文件到本地。

    tcpdump-2
    说明

    如果下载没有反应,请检查浏览器的网站权限设置。更多信息,请参见常见问题

OpenAPI

  1. 调用CreateInstanceOpsTask,为ECI实例开启tcpdump。

    开启tcpdump时,需设置以下参数:

    • ContainerGroupId:指定目标ECI实例。

    • OpsType:设为tcpdump

    • OpsValue:设为{"Enable":true}

      说明

      OpsValue为tcpdump类型的运维任务的参数集合,格式是JSON格式的字符串,您可以根据需要设置源端地址、目的端地址、网卡、数据包相关参数。更多关于OpsValue的配置,请参见CreateInstanceOpsTask

  2. 根据需要对目标ECI实例进行调试,然后关闭tcpdump。

    关闭tcpdump后,系统将停止抓包,并生成相应的数据包文件,存储到OSS中。关闭方式如下:

    关闭方式

    说明

    手动关闭

    调用CreateInstanceOpsTask关闭tcpdump,需设置以下参数:

    • ContainerGroupId:指定目标ECI实例。

    • OpsType:设为tcpdump

    • OpsValue:设为{"Enable":false}

    自动关闭

    如果在开启tcpdump时,OpsValue中设置了Snaplen、Duration、PacketNum、FileSize等参数限制数据包大小、抓取时间等,则系统将在满足某一限制条件时,自动关闭tcpdump。

  3. 下载数据包文件。

    1. 调用DescribeInstanceOpsRecords,从返回信息的ResultContent中获取数据包文件保存地址。

      数据包文件保存在OSS中,地址示例:http://eci-ops-files-cn-beijing.oss-cn-beijing.aliyuncs.com/pcaps/1609****/eci-2ze6n7kqdici********-eth0-****.pcap?Expires=****&OSSAccessKeyId=****&Signature=****&security-token=****

    2. 访问数据包文件保存地址,下载数据包文件到本地。

常见问题

开启tcpdump抓取网络数据包后,在控制台下载数据包文件没有反应,怎么办?

如果下载没有反应,请检查浏览器的网站权限设置。例如Chrome浏览器可以参考以下方式开启权限:

  1. 打开弹性容器实例控制台,单击浏览器地址栏前面的浏览器图标图标,选择网站设置浏览器设置1

  2. 将配置项不安全内容改为允许浏览器设置2

阿里云首页 弹性容器实例 相关技术圈