Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用数据包捕获分析网络流量

使用 功能资源管理器 确认平台和版本对特定功能的支持。

查看 特定于平台的数据包捕获行为 部分,了解与您的平台相关的注意事项。

数据包捕获概述

数据包捕获是一种帮助您分析网络流量和排除网络问题的工具。数据包捕获工具捕获网络中传输的实时数据包,以进行监控和记录。

物理接口、reth 接口和隧道接口(如 gr、ip 和 lsq-/ls)支持数据包捕获。但是,安全隧道接口 (st0) 不支持数据包捕获。

数据包将以二进制数据的形式捕获,无需修改。您可以使用 Wireshark 或 tcpdump 等数据包分析器离线读取数据包信息。如果您需要快速捕获发往或源自路由引擎的数据包并进行在线分析,您可以使用 J-Web 数据包捕获诊断工具。

您可以使用 J-Web 配置编辑器或 CLI 配置编辑器来配置数据包捕获。

数据包捕获工具为监控和分析 IPv4 和 IPv6 流量提供了全面支持。

网络管理员和安全工程师使用数据包捕获来执行以下任务:

  • 监控网络流量并分析流量模式。

  • 识别网络问题并排除故障。

  • 检测网络中的安全漏洞,例如未经授权的入侵、间谍软件活动或 ping 扫描。

数据包捕获的工作方式与设备上的流量采样类似,不同之处在于它捕获整个数据包(包括第 2 层标头),并将内容以 libpcap 格式保存到文件中。数据包捕获也会捕获 IP 分段。

您不能同时在设备上启用数据包捕获和流量采样。与流量采样不同,数据包捕获没有跟踪操作。

您可以在设备上同时启用数据包捕获和 端口镜像

本节包含以下主题:

设备接口上的数据包捕获

T1、T3、E1、E3、串行、千兆以太网、ADSL、G.SHDSL、PPPoE 和 ISDN 接口支持数据包捕获。

要在 ISDN 接口上捕获数据包,请在拨号器接口上配置数据包捕获。要在 PPPoE 接口上捕获数据包,请在 PPPoE 逻辑接口上配置数据包捕获。

数据包捕获支持 PPP、Cisco HDLC、帧中继和其他 ATM 封装。数据包捕获还支持多链路 PPP (MLPPP)、端到端的多链路帧中继 (MLFR) 和多链路帧中继 UNI/NNI (MFR) 封装。

您可以捕获入站或出站方向上某个接口上流动的所有 IPv4 和 IPv6 数据包。但是,对于绕过流软件模块的流量(ARP、OSPF 和 PIM 等协议数据包),除非您在出站方向的接口上配置并应用了 防火墙过滤器 ,否则不会捕获路由引擎生成的数据包。

隧道接口仅支持出站方向的数据包捕获。

使用 J-Web 配置编辑器或 CLI 配置编辑器指定最大数据包大小、用于存储捕获数据包的文件名、最大文件大小、最大数据包捕获文件数以及文件权限。

对于在 T1、T3、E1、E3、串行接口和 ISDN 接口上出站(出口)方向上捕获的数据包,由于数据包丢弃优先级 (PLP) 位的原因,捕获的数据包大小可能比配置的最大数据包大小小 1 个字节。

要修改配置了数据包捕获的接口上的封装,必须禁用数据包捕获。

用于数据包捕获的防火墙过滤器

在设备上启用数据包捕获后,沿数据包捕获配置中指定方向(入站、出站或两者兼而有之)传输的所有数据包都将被捕获和存储。配置接口以捕获所有数据包可能会降低设备的性能。您可以使用防火墙过滤器控制在接口上捕获的数据包数,并指定各种条件来捕获特定流量的数据包。

如果需要捕获主机设备生成的数据包,还必须在接口上配置并应用相应的防火墙过滤器,因为接口采样不会捕获来自主机设备的数据包。

数据包捕获文件

当某个接口上启用数据包捕获时,包括第 2 层 标头在内的整个数据包将被捕获并存储在一个文件中。您可以指定要捕获的数据包的最大大小,最大为 10000 字节。数据包捕获会为每个物理接口创建一个文件。

文件创建和存储的方式如下。假设您将数据包捕获文件命名为 pcap-file。数据包捕获创建多个文件(每个物理接口一个),每个文件后缀为物理接口的名称;例如,对于千兆以太网接口 fe-0.0.1,使用 pcap-file.fe-0.0.1当名为 pcap-file.fe-0.0.1 的文件达到最大大小时,该文件将重命名为 pcap-file.fe-0.0.1.0。当名为 pcap-file.fe-0.0.1 的文件再次达到最大大小时,名为 pcap-file.fe-0.0.1.0 的文件将重命名为 pcap-file.fe-0.0.1.1,pcap-file.fe-0.0.1 将重命名为 pcap-file.fe-0.0.1.0。此过程一直持续到超过最大文件数并覆盖最旧的文件为止。pcap-file.fe-0.0.1 文件始终是最新的文件。

即使在接口上禁用数据包捕获,数据包捕获文件也不会移除。

数据包捕获文件分析

数据包捕获文件以 libpcap 格式存储在目录中 /var/tmp 。您可以为文件指定用户或管理员权限。

可以使用 tcpdump 或任何识别 libpcap 格式的数据包分析器离线打开和分析数据包捕获文件。您还可以使用 FTP 或会话控制协议 (SCP) 将数据包捕获文件传输到外部设备。

在打开文件进行分析或使用 FTP 或 SCP 将文件传输到外部设备之前,禁用数据包捕获。禁用数据包捕获可确保刷新内部文件缓冲区,并将所有捕获的数据包写入文件。

从操作模式捕获数据包

使用 功能资源管理器 确认平台和版本对特定功能的支持。

查看 特定于平台的数据包捕获行为 部分,了解与您的平台相关的注意事项。

数据路径调试或端到端调试可在数据包处理路径上的多个处理单元上提供跟踪和调试。数据包捕获是数据路径调试功能之一。您可以在操作模式下执行数据包捕获,同时将对生产系统的影响降至最低,而无需提交配置。

您可以使用过滤器来捕获数据包,以定义要捕获的数据包。数据包过滤器可以根据逻辑接口、协议、源 IP 地址前缀、源端口、目标 IP 地址前缀和目标端口过滤掉数据包。您可以修改数据包捕获输出的文件名、文件类型、文件大小和捕获大小。您还可以将过滤器扩展为两个过滤器,并交换过滤器的值。

要从操作模式捕获数据包,必须执行以下步骤:

  1. 在操作模式下,定义数据包过滤器,以便根据要求request packet-capture start使用CLI 命令。有关可用的数据包捕获过滤器选项,请参阅请求数据包捕获启动
  2. 捕获所需的数据包。
  3. 您可以使用 CLI 命令停止数据包捕获,也可以在 request packet-capture stop 收集请求数量的数据包后自动停止数据包捕获。
  4. 查看或分析捕获的数据包数据报告。

从操作模式捕获数据包的局限性包括:

  1. 配置模式数据包捕获和操作模式数据包捕获不能共存。

  2. 操作模式数据包捕获是一次性操作,系统不会存储此命令的历史记录。

  3. 您应该在低流量速率下使用操作模式数据包捕获。

示例:在设备上启用数据包捕获并配置防火墙过滤器

此示例说明如何启用数据包捕获和为数据包捕获配置防火墙过滤器,并将其应用到设备上的逻辑接口。您可以配置防火墙过滤器来限制或过滤要捕获的流量,分析网络流量以及排除网络问题。

要求

开始之前:

概述

在此示例中,您将每个文件中的最大数据包捕获大小设置为 500 字节。范围为 68 到 10000,默认值为 68 字节。将数据包捕获文件的目标文件名指定为 pcap-file。然后,将要捕获的最大文件数指定为 100。范围为 2 到 10,000,默认值为 10 个文件。将每个文件的最大大小设置为 1024 字节。范围从 1,024 到 104,857,600,默认值为 512,000 字节。

您可以设置名为 dest-all 的防火墙过滤器和名为 dest-term 的术语名称,以便从特定目标地址 192.168.1.1/32 捕获数据包。您可以定义匹配条件以接受采样的数据包。最后,将 dest-all 过滤器应用于接口 fe-0/0/1 上的所有传出数据包。

如果在环路接口上应用防火墙过滤器,它会影响进出路由引擎的所有流量。如果防火墙过滤器有操作 sample ,则对进出路由引擎的数据包进行采样。如果启用了数据包捕获,则在为输入和输出接口创建的文件中捕获进出路由引擎的数据包。

您指定所有用户都有权读取数据包捕获文件。

配置

过程

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后从配置模式进入。commit

分步程序

下面的示例要求您在各个配置层级中进行导航。有关操作说明,请参阅在 配置模式下使用 CLI 编辑器

要在设备上启用数据包捕获:

  1. 设置最大数据包捕获大小。

  2. 指定目标文件名。

  3. 指定要捕获的最大文件数。

  4. 指定每个文件的最大大小。

  5. 指定所有用户都有权读取文件。

  6. 配置用于数据包捕获的防火墙过滤器。

  7. 定义匹配条件及其操作。该术语 allow-all-else 用于确保 SRX 不会丢弃任何其他流量。

  8. 对接口应用防火墙过滤器以捕获传入和传出的数据包。

  9. 提交以激活数据包捕获。

  10. 停用数据包捕获以停止对象收集。

结果

在配置模式下,输入和run show forwarding-optionsrun show firewall filter dest-all命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。

如果完成设备配置,请从配置模式进入。commit

验证

确认配置工作正常。

验证数据包捕获配置的防火墙过滤器

目的

验证设备上是否已配置用于数据包捕获的防火墙过滤器。

行动

从配置模式,输入 和 run show forwarding-options run show firewall filter dest-all 命令。验证输出是否显示用于捕获发送至目标地址的数据包的预期文件配置。

目的

验证捕获的数据包是否存储在设备上的目录下 /var/tmp

行动

在操作模式下,输入命令 file list /var/tmp/

验证捕获的数据包

目的

验证数据包捕获文件是否存储在目录下 /var/tmp 以及是否可以离线分析数据包。

行动
  1. 禁用数据包捕获。

    使用 FTP,将数据包捕获文件(例如 126b.fe-0.0.1)传输到已安装数据包分析器工具的服务器(例如 tools-server)。

    1. 从配置模式,使用 FTP 连接到 tools-server

    2. 导航到设备上存储数据包捕获文件的目录。

    3. 将要分析的数据包捕获文件复制到服务器,例如 126b.fe-0.0.1

    4. 返回配置模式。

  2. 使用 tcpdump 或任何支持 libpcap 格式的数据包分析器打开服务器上的数据包捕获文件,然后查看输出。

示例:在接口上配置数据包捕获

此示例说明如何在接口上配置数据包捕获以分析流量。

要求

开始之前:

概述

在此示例中,您将创建一个名为 fe-0/0/1 的接口,然后将要在逻辑接口上启用数据包捕获的流量方向配置为入站和出站。

注意:

对于绕过流软件模块(ARP、OSPF 和 PIM 等协议数据包)的流量,除非您在输出方向上的接口上配置并应用了防火墙过滤器,否则不会捕获路由引擎生成的数据包。

配置

过程

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后从配置模式进入。commit

分步程序

下面的示例要求您在各个配置层级中进行导航。有关操作说明,请参阅在 配置模式下使用 CLI 编辑器

要在接口上配置数据包捕获:

  1. 创建接口。

  2. 配置流量方向。

  3. 如果完成设备配置,请提交配置。

验证

验证数据包捕获配置

目的

确认配置工作正常。

验证接口上是否已配置数据包捕获。

行动

从配置模式,输入命令 run show interfaces fe-0/0/1

禁用数据包捕获

在打开数据包捕获文件进行分析或将文件传输到外部设备之前,必须禁用数据包捕获。禁用数据包捕获可确保刷新内部文件缓冲区,并将所有捕获的数据包写入文件。

要禁用数据包捕获,请从配置模式输入:

如果完成设备配置,请从配置模式进入。commit

修改配置了数据包捕获的接口上的封装

在为数据包捕获配置的设备接口上修改封装之前,必须禁用数据包捕获并重命名最新的数据包捕获文件。否则,数据包捕获会将具有不同封装的数据包保存在同一数据包捕获文件中。包含不同封装数据包的数据包文件没有用,因为 tcpdump 等数据包分析器工具无法分析此类文件。

修改封装后,您可以安全地在设备上重新启用数据包捕获。

要更改配置了数据包捕获的接口上的封装:

  1. 禁用数据包捕获(请参阅禁用 数据包捕获)。
  2. 从配置模式进入。commit
  3. 命名要更改.chdsl其封装的最新数据包捕获文件,并带有扩展名。
    1. 在操作模式下,访问本地 UNIX shell。
    2. 导航到存储数据包捕获文件的目录。
    3. 重命名要更改封装的接口的最新数据包捕获文件;例如 fe.0.0.0
    4. 返回操作模式。
  4. 使用 J-Web 用户界面或 CLI 配置编辑器更改接口上的封装。
  5. 如果完成设备配置,请从配置模式进入。commit
  6. 重新启用数据包捕获(请参阅 示例:在设备上启用数据包捕获)。
  7. 如果完成设备配置,请从配置模式进入。commit

删除数据包捕获文件

从 /var/tmp 目录中删除数据包捕获文件只会暂时删除数据包捕获文件。下次提交数据包捕获配置更改时,或者作为数据包捕获文件轮换的一部分,将再次创建接口的数据包捕获文件。

要删除数据包捕获文件,请执行以下操作:

  1. 禁用数据包捕获(请参阅禁用 数据包捕获)。
  2. 删除接口的数据包捕获文件。
    1. 在操作模式下,访问本地 UNIX shell。
    2. 导航到存储数据包捕获文件的目录。
    3. 删除接口的数据包捕获文件;如 pcap-file.fe.0.0.0
    4. 返回操作模式。
  3. 重新启用数据包捕获(请参阅 示例:在设备上启用数据包捕获)。
  4. 如果完成设备配置,请从配置模式进入。commit

显示数据包标头

输入命令 monitor traffic 以显示通过网络接口传输的数据包标头,语法如下:

注意:

使用该 monitor traffic 命令可能会降低系统性能。建议使用过滤选项(如 countmatching),以最大程度地减少对系统数据包吞吐量的影响。

表 1 介绍 monitor traffic 了命令选项。

表 1:CLI 监控流量命令选项

选项

描述

absolute-sequence

(选答)显示绝对 TCP 序列号。

count number

(选答)显示指定数量的数据包标头。指定到 100,000的值0。达到此数字后,命令将退出并退出到命令提示符。

interface interface-name

(选答)显示指定接口上流量的数据包标头。如果未指定接口,则监控编号最低的接口。

layer2-headers

(选答)在每行上显示链路层数据包标头。

matching "expression"

(选答)显示与用引号 (“ ”) 括住的表达式匹配的数据包标头。 表 2表 4 列出了可在表达式中使用的匹配条件、逻辑运算符以及算术、二进制和关系运算符。

no-domain-names

(选答)抑制显示主机名的域名部分。

no-promiscuous

(选答) not 指定将受监控的接口置于混合模式。

在混合模式下,接口将读取到达它的每个数据包。在非混合模式下,接口仅读取向其寻址的数据包。

no-resolve

(选答)抑制显示主机名。

no-timestamp

(选答)抑制显示数据包标头时间戳。

print-ascii

(选答)以 ASCII 格式显示每个数据包标头。

print-hex

(选答)以十六进制格式显示每个数据包标头,链路层标头除外。

size bytes

(选答)显示指定每个数据包的字节数。如果数据包标头超过此大小,则显示的数据包标头将被截短。默认值为 96

brief

(选答)显示最小数据包标头信息。这是默认设置。

detail

(选答)以中等详细信息显示数据包标头信息。对于某些协议,您还必须使用该 size 选项来查看详细信息。

extensive

(选答)显示最广泛的数据包标头信息级别。对于某些协议,您还必须使用该 size 选项来查看详细信息。

若要退出命令 monitor traffic 并返回到命令提示符,请按 Ctrl-C。

要限制命令显示 monitor traffic 的数据包标头信息,请包括该 matching "expression" 选项。表达式由 表 2 中列出的一个或多个匹配条件组成,用引号 (“ ”) 括起来。您可以使用 表 3 中列出的逻辑运算符(按最高优先级到最低优先级排列)来组合匹配条件。

例如,要显示 TCP 或 UDP 数据包标头,请输入:

要比较以下类型的表达式,请使用 表 4 中列出的关系运算符(按最高到最低优先级列出):

  • 算术 - 使用 表 4 中列出的算术运算符的表达式。

  • 二进制 - 使用 表 4 中列出的二进制运算符的表达式。

  • 数据包数据访问器 — 使用以下语法的表达式:

    替换 protocol表 2 中的任何协议。替换 byte-offset 为从数据包标头开头开始的字节偏移量,以用于比较。可选 size 参数表示在数据包标头中检查的字节数—1、2 或 4 个字节。

    例如,以下命令显示所有组播流量:

表 2:CLI 监控流量匹配条件

匹配条件

描述

实体类型

host [address | hostname]

匹配包含指定地址或主机名的数据包标头。您可以将以下任何协议匹配条件前置,后跟空格,到 hostarpiprarp或任何方向匹配条件。

network address

将数据包标头与包含指定网络地址的源地址或目标地址进行匹配。

network address mask mask

匹配包含指定网络地址和子网掩码的数据包标头。

port [port-number | port-name]

匹配包含指定源或目标 TCP 或 UDP 端口号/端口名称的数据包标头。

方向  

destination

匹配包含指定目标的数据包标头。方向匹配条件可以前置到任何实体类型匹配条件,后跟空格。

source

匹配包含指定源的数据包标头。

source and destination

匹配包含指定源 and 目标的数据包标头。

source or destination

匹配包含指定源 or 目标的数据包标头。

数据包长度

less bytes

匹配长度小于或等于指定值(以字节为单位)的数据包。

greater bytes

匹配长度大于或等于指定值(以字节为单位)的数据包。

协议

arp

匹配所有 ARP 数据包。

ether

匹配所有以太网帧。

ether [broadcast | multicast]

匹配广播或组播以太网帧。此匹配条件可前置 source 到 或 destination

ether protocol [address | (\arp | \ip | \rarp)

匹配具有指定地址或协议类型的以太网帧。参数 arpiprarp 也是独立的匹配条件,因此在匹配条件中使用 ether protocol 时必须在它们前面加上反斜杠 (\)。

icmp

匹配所有 ICMP 数据包。

ip

匹配所有 IP 数据包。

ip [broadcast | multicast]

匹配广播或组播 IP 数据包。

ip protocol [address | (\icmp | igrp | \tcp | \udp)]

匹配具有指定地址或协议类型的 IP 数据包。参数 icmptcpudp 也是独立的匹配条件,因此在匹配条件中使用 ip protocol 时必须在它们前面加上反斜杠 (\)。

isis

匹配所有 IS-IS 路由消息。

rarp

匹配所有 RARP 数据包。

tcp

匹配所有 TCP 数据包。

udp

匹配所有 UDP 数据包。

表 3:CLI 监控流量 逻辑运算符

逻辑运算符

描述

!

逻辑“非”。如果第一个条件不匹配,则评估下一个条件。

&&

逻辑“与”。如果第一个条件匹配,评估下一个条件。如果第一个条件不匹配,则跳过下一个条件。

||

逻辑“或”。如果第一个条件匹配,则跳过下一个条件。如果第一个条件不匹配,则评估下一个条件。

()

对运算符进行分组以覆盖默认优先顺序。括号是特殊字符,每个括号字符前面必须加上反斜杠 (\)。

表 4:CLI 监控流量 算术、二进制和关系运算符

操作人员

描述

算数运算符

+

加法运算符。

减法运算符。

/

部门运算符。

二进制运算符

&

按位“与”。

*

按位“异或”。

|

按位“兼或”。

关系运算符

<=

如果第一个表达式小于或等于第二个,则会发生匹配。

>=

如果第一个表达式大于或等于第二个,则会发生匹配。

<

如果第一个表达式小于第二个表达式,则发生匹配。

>

如果第一个表达式大于第二个表达式,则会发生匹配。

=

如果第一个表达式等于第二个表达式,则发生匹配。

!=

如果第一个表达式不等于第二个表达式,则会发生匹配。

以下是命令 monitor traffic 输出的示例:

特定于平台的数据包捕获行为

使用 功能资源管理器 确认平台和版本对特定功能的支持。

使用下表查看平台的特定于平台的行为。

平台 差异

SRX 系列防火墙

  • SRX4600、SRX5400、SRX5600 和 SRX5800 系列防火墙仅支持在操作模式下捕获数据包。这些防火墙不支持 forwarding-options packet-capture 层次结构级别的 [edit] 配置。