转债至

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. Spring简单与数据库连接

    1.导入需要的jar包 2.配置数据源,在applicationContext.xml文件中增加配置 方式1:直接使用bean方式 1 2 3 4 5 6 <bean id="data ...

  2. L170 Autism Linked to Zinc Deficiency in Childhood

    While the exact cause of autism is unknown, its development in children has been linked to various g ...

  3. 【HEVC学习与研究】29、解码第一个Coding Quadtree结构(1)

    ctu tree属性 http://blog.csdn.net/shaqoneal/article/details/26088817

  4. 求 LCA 的三种方法

    (YYL: LCA 有三种求法, 你们都知道么?) (众神犇: 这哪里来的傻叉...) 1. 树上倍增 对于求 LCA, 最朴素的方法是"让两个点一起往上爬, 直到相遇", &qu ...

  5. BZOJ2259 [Oibh]新型计算机 【傻逼最短路】

    Description Tim正在摆弄着他设计的"计算机",他认为这台计算机原理很独特,因此利用它可以解决许多难题. 但是,有一个难题他却解决不了,是这台计算机的输入问题.新型计算 ...

  6. BZOJ1257 CQOI2007 余数之和 【数分块】

    BZOJ1257 CQOI2007 余数之和 Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值 其中 ...

  7. IOS SEL (@selector) 原理及使用总结(一)

    SEL 类成员方法的指针 可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应 ...

  8. Scala的=>作用

    举例: var increase = (x: Int) => x + 1 increase(10) res0: Int = 11 类似于转化符号,=>指明这个函数把左边的东西(任何整数x) ...

  9. 《DSP using MATLAB》示例Example 6.12

    上代码: % x = -8:7 y = TwosComplement(x, 4) y = dec2bin(y, 4); disp(sprintf('%s', [y'; char(ones(1, 16) ...

  10. aes加密/解密(转载)

    这篇文章是转载的康奈尔大学ece5760课程里边的一个final project,讲的比较通俗易懂,所以转载过来.附件里边是工程文件,需要注意一点,在用modelsim仿真过程中会出现错误,提示非法引 ...