转债至

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. Python的介绍及Pycharm软件的安装

    一.Python介绍 1.  Python是一种解释性.面向对象.动态数据类型的高级程序设计语言. Python语言创始人是吉多.范罗苏姆:起源与1989年 2.  缺点:运行速度慢(由于是解释性语言 ...

  2. BeautifulSoup的安装和使用

    Python用做数据处理还是相当不错的,如果你想要做爬虫,python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...

  3. C# 超级狗 二次开发 读写数据 激活验证 存储数据库连接字符串

    本文主要讲解如果使用C#语言来对超级狗进行二次开发,如果仅仅是做个激活的功能,可以参照另一篇博客,地址:http://www.cnblogs.com/dathlin/p/8487842.html 如果 ...

  4. 老男孩Linux运维期中架构

  5. android代码常识

    查看当前android代码版本号:build/core/version_defaults.mk---->查找platform_version android源码在线阅读网址 http://and ...

  6. UICollectionView功能使用

    UICollectionView在2012年被提出,已经不是什么新技术了,在此只是做一下简单的实现. 集合视图:UICollectionViewUICollectionView和UITableView ...

  7. BZOJ2005 NOI2010 能量采集 【莫比乌斯反演】

    BZOJ2005 NOI2010 能量采集 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些 ...

  8. 20179223《Linux内核原理与分析》第十周学习笔记

    课本第17.19和20章内容学习 关于设备驱动和设备管理,Linux主要有四种内核成分 设备类型:在所有Unix系统中为了统一普通设备的操作所采用的分类. 模块:Linux内核中用于按需加载和卸载目标 ...

  9. 《DSP using MATLAB》示例Example 8.9

  10. 【angularJS】定义模块angular.module

    模块定义了一个应用程序.控制器通常属于一个模块. JavaScript 中应避免使用全局函数.因为他们很容易被其他脚本文件覆盖. AngularJS 模块让所有函数的作用域在该模块下,避免了该问题. ...