转债至

https://help.aliyun.com/knowledge_detail/40564.html?spm=5176.11065259.1996646101.searchclickresult.12324fafw7BN7M

如果源服务器访问目标服务器出现异常,而且参阅文档 ping 丢包或不通时链路测试说明 和 能 ping 通但端口不通时端口可用性探测说明 排查分析处理后,还是未能解决问题,则需要通过抓包获取最原始的交互数据做进一步排查分析。本文先介绍了常用的抓包工具,然后对抓包的操作步骤进行了简要说明。本文不涉及抓包数据的分析处理说明。

常用抓包工具介绍


根据操作系统类型的不同,常用抓包工具分别简要介绍如下:

Linux 环境下的抓包工具介绍

Linux 环境下,通常通过 tcpdump 来进行抓包和分析。它是几乎所有 Linux 发行版本预装的数据包抓取和分析工具。

tcpdump 工具的获取和安装可以参阅相应操作系统的官方文档,本文不再详述。

tcpdump 的用法如下:

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ --number ] [ -Q in|out|inout ]
[ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --immediate-mode ] [ --version ]
[ expression ]

常见参数说明(区分大小写):

  • -s 设置数据包抓取长度。如果置为0,则表示自动选择合适的长度来抓取数据包。
  • -w将抓包结果导出到文件,而不是在控制台进行分析和打印输出。
  • -i 指定需要监听的接口(网卡)。
  • -vvv 输出详细的数据交互信息。
  • expression 一个正则表达式,用作过滤报文的条件。主要包含如下几类:
    • 关于类型的关键字:包括 host(主机),net(网络),port(端口)。
    • 确定传输方向的关键字:包括 src(源),dst(目标),dst or src(源或目标),dst and src(源和目标)。
    • 使用协议的关键字:包括 icmp,ip,arp,rarp,tcp,udp等类型。

更多参数说明及用法,可以参阅 tcpdump 的 man 帮助。

常见用法和示例输出:

  1. 抓取指定网卡指定端口的交互数据

    • 操作指令

      tcpdump -s 0 -i eth0 port 22
    • 示例输出
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
      20:24:59.414951 IP 172.16.2.226.ssh > 42.120.74.107.43414: Flags [P.], seq 442372:442536, ack 53, win 141, length 164
      20:24:59.415002 IP 172.16.2.226.ssh > 42.120.74.107.43414: Flags [P.], seq 442536:442700, ack 53, win 141, length 164
      20:24:59.415052 IP 172.16.2.226.ssh > 42.120.74.107.43414: Flags [P.], seq 442700:442864, ack 53, win 141, length 164
      20:24:59.415103 IP 172.16.2.226.ssh > 42.120.74.107.43414: Flags [P.], seq 442864:443028, ack 53, win 141, length 164
  2. 抓取指定网卡发送给指定 IP 上指定端口的交互数据,并在控制台输出详细交互信息 
    • 操作指令

      tcpdump -s 0 -i eth1 -vvv port 22
    • 示例输出
      tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
      20:24:20.991006 IP (tos 0x10, ttl 64, id 22747, offset 0, flags [DF], proto TCP (6), length 316)
      172.16.2.226.ssh > 42.120.74.107.43414: Flags [P.], cksum 0x2504 (incorrect -> 0x270d), seq 133624:133900, ack 1, win 141, length 276
      20:24:20.991033 IP (tos 0x0, ttl 53, id 2348, offset 0, flags [DF], proto TCP (6), length 92)
      42.120.74.107.43414 > 172.16.2.226.ssh: Flags [P.], cksum 0x4759 (correct), seq 1:53, ack 129036, win 15472, length 52
      20:24:20.991130 IP (tos 0x10, ttl 64, id 22748, offset 0, flags [DF], proto TCP (6), length 540)
      172.16.2.226.ssh > 42.120.74.107.43414: Flags [P.], cksum 0x25e4 (incorrect -> 0x5e78), seq 133900:134400, ack 53, win 141, length 500
      20:24:20.991162 IP (tos 0x0, ttl 53, id 2349, offset 0, flags [DF], proto TCP (6), length 40)
      42.120.74.107.43414 > 172.16.2.226.ssh: Flags [.], cksum 0xf39e (correct), seq 53, ack 129812, win 15278, length 0
  3. 抓取发送至指定 IP 的 ping 交互数据,并在控制台输出详细交互信息 
    • 操作指令

      tcpdump -s 0 -i eth1 -vvv dst 223.5.5.5 and icmp
    • 示例输出
      tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
      20:26:00.368958 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
      172.16.2.226 > public1.alidns.com: ICMP echo request, id 55097, seq 341, length 64
      20:26:01.369996 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
      172.16.2.226 > public1.alidns.com: ICMP echo request, id 55097, seq 342, length 64
      20:26:02.371058 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
      172.16.2.226 > public1.alidns.com: ICMP echo request, id 55097, seq 343, length 64
      20:26:03.372181 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
      172.16.2.226 > public1.alidns.com: ICMP echo request, id 55097, seq 344, length 64
  4. 抓取系统内所有接口数据并保存到指定文件
    • 操作指令

      tcpdump -i any -s 0 -w test.cap
    • 示例输出
      tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes

Windows 环境下的抓包工具介绍

Windows 环境下,通常通过 Wireshark 来进行抓包和分析。它是 Windows下最流行的免费开源的数据包抓取和分析工具。

Wireshark 工具的获取和安装说明可以参阅其官方网站,本文不再详述。

Wireshark抓包步骤:

  1. 安装后打开软件。
  2. 选择菜单 捕获 > 选项,弹出如下图所示WireShark 捕获接口配置图
  3. 如上图所示,根据接口名称或对应的 IP 地址选定需要进行抓包的网卡,然后点击 开始 启动抓包。
  4. 一段时间后,选择菜单 捕获 > 停止,停止抓包。
  5. 选择菜单 文件 > 保存,将抓包结果保存到指定文件。

更多关于 Wireshark 工具的使用和数据分析方法可以参阅其官方文档,本文不再详述。

抓包操作步骤及工单提交须知


抓包应该在出现异常时,从源服务器和目标服务器同时并发操作,以便于对比分析。其操作步骤如下:

  1. 明确源服务器和目标服务器通过自身哪个网卡进行数据交互。
  2. 如果源服务器通过 NAT 共享方式访问公网,则访问ip.taobao.com 等网站,获取本地网络对应的公网 IP。
  3. 出现异常时,参阅前文说明,通过相关工具从源服务器对目标服务器地址的目标端口,进行抓包。或者进行完整抓包,然后保存抓包数据。
  4. 出现异常时,参阅前文说明,通过相关工具从目标服务器对源服务器地址进行抓包。或者进行完整抓包,然后保存抓包数据。
  5. 如果抓包数据可能很大,超出工单系统附件大小限制(当前为 2M)。则需要先将前述抓包结果打包压缩,再上传到第三方网盘并获取外链分享地址,或者通过 OSS 管理控制台上传文件获取访问地址(如果用户购买了阿里云对象存储OSS 服务)。

联系售后技术支持,反馈上述抓包数据获取地址,以便阿里云工程师做进一步排查分析。

网络异常时抓包操作说明tcpdump+Wireshark的更多相关文章

  1. Linux使用tcpdump命令抓包并使用wireshark分析

    Linux使用tcpdump命令抓包并使用wireshark分析 介绍 有时分析客户端和服务器网络交互的问题时,为了查找问题,需要分别在客户端和服务器上抓包,我们的客户端一般是windows上的,抓包 ...

  2. Android利用tcpdump抓包,用wireshark分析包。

    1.前言 主要介绍在android手机上如何利用tcpdump抓包,用wireshark分析包. android tcpdump官网: http://www.androidtcpdump.com/ t ...

  3. 用Wireshark对Android应用的网络流量进行抓包

    通过Wireshark.Charles.Burpsuite等工具分析网络流量的过程,又叫做抓包. 为何需要抓包 测试手机应用(如搜狗号码通.搜狗手机浏览器)的功能时,经常遇到与网络交互的场景,这时候我 ...

  4. Android 抓包并通过 Wireshark 分析

    分析 Android 中 app 的网络数据交互,需要在 Android 上抓包,常用工具为 tcpdump ,用 tcpdump 生成 Wireshark 识别的 pcap 文件,把 pcap 文件 ...

  5. linux抓包工具tcpdump基本使用

    tcpdump 是一款灵活.功能强大的抓包工具,能有效地帮助排查网络故障问题. tcpdump 是一个命令行实用工具,允许你抓取和分析经过系统的流量数据包.它通常被用作于网络故障分析工具以及安全工具. ...

  6. Wireshark数据抓包教程之Wireshark捕获数据

    Wireshark数据抓包教程之Wireshark捕获数据 Wireshark抓包方法 在使用Wireshark捕获以太网数据,可以捕获分析到自己的数据包,也可以去捕获同一局域网内,在知道对方IP地址 ...

  7. Linux下抓包工具tcpdump应用详解

      TCPDUMP简介 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一.sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的.对于网络管理人员来说 ...

  8. linux抓包命令-tcpdump命令详解

    最近调试支付接口的时候,遇到了一个奇怪的问题:我按照支付接口文档,对接支付通道,当消费业务正常后,调试查余和冲正的时候,支付通道的对接技术告诉我,系统没有我们支付系统的请求报文,数据库和日志中都没有, ...

  9. Wireshark数据抓包教程之Wireshark的基础知识

    Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...

随机推荐

  1. 【linux】VirtualBox-“please use a kernel appropriate for your cpu”

    This kernel requires the following features not present on the CPU:paeUnable to boot – please use a ...

  2. gdi+ 中发生一般性错误 wpf解决方法

    错误背景:原来在winform程序中写了一个窗口,在wpf应用程序中调用显示了这个窗口,有个头像功能,加载本地的一个图片文件,加载前进行了各种逻辑判断,效果如下: 而加载的关键代码如下面: pictu ...

  3. [IC]Lithograph(1)光刻技术分析与展望

    文章主体转载自: 1.zol摩尔定律全靠它 CPU光刻技术分析与展望 2.wiki:Extreme ultraviolet lithography 3.ITRS 2012 1. 光刻技术组成和关键点 ...

  4. learn go function callback

    package main // 参考文档: // https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.7.md im ...

  5. js之简易计算器

    <!DOCTYPE html PUBLIC "-//W3C//Dli XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Canvas 与 SVG 的区别

    这个说实话,我只用过canvas画过一些简单的图形,复杂的不懂,之所以列出来,是因为之前在面试中有被问到,在这里mark一下,后期深化. 以下的内容全部来自于w3school http://www.w ...

  7. SEO - H标签

    前言 这两天在做网站的SEO.虽然之前SEO的资料看过很多,但是因为正职是美工的缘故,SEO的具体实施参与的较少.现在的公司有点特殊,SEO团队基本不懂代码,所以需要参与的比较多.以下内容主要是通过自 ...

  8. jdbcTemplate的一些常用方法

    前言 最近的项目中由于只进行查询,所以使用了jdbcTemplate来直接操作sql进行持久层的操作,初次接触jdbcTemplate,从最开始的什么都不知道到现在基本方法都大致知道什么意思,特此记录 ...

  9. 理解 C# 项目 csproj 文件格式的本质和编译流程

    写了这么多个 C# 项目,是否对项目文件 csproj 有一些了解呢?Visual Studio 是怎么让 csproj 中的内容正确显示出来的呢?更深入的,我能够自己扩展 csproj 的功能吗? ...

  10. 使用 ExceptionDispatchInfo 捕捉并重新抛出异常

    当你跑起了一个异步线程,并用 await 异步等待时,有没有好奇为什么能够在主线程 catch 到异步线程的异常? 当你希望在代码中提前收集好异常,最后一并把收集到的异常抛出的时候,能不能做到就像在原 ...