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 数据包捕获诊断工具。

注:

数据包捕获工具不支持 IPv6 数据包捕获。

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

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

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

  • 识别并排查网络问题。

  • 检测网络中的安全漏洞,例如未经授权的入侵、间谍软件活动或 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 数据包。但是,在绕过流量软件模块的信息流(ARP、OSPF 和 PIM 等协议数据包)上,除非您在出站方向的接口上配置并应用 了防火墙过滤器 ,否则不会捕获路由引擎生成的数据包。

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

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

注:

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

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

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

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

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

数据包捕获文件

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

文件创建和存储按以下方式进行。假设您将数据包捕获文件 pcap-file命名为 。数据包捕获创建多个文件(每个物理接口一个),并为每个文件添加物理接口名称后缀;例如, pcap-file.fe-0.0.1 对于 千兆以太网接口 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.1pcap-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 地址前缀和目标端口过滤掉数据包。您可以修改数据包捕获输出的文件名、文件类型、文件大小和捕获大小。还可以将筛选器扩展为两个筛选器,并交换筛选器的值。

SRX4600、SRX5400、SRX5600 和 SRX5800 都支持从操作模式捕获数据包。

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

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

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

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

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

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

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

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

要求

准备工作:

概述

在此示例中,您将每个文件中的最大数据包捕获大小设置为 500 字节。范围为 68 到 1500,默认值为 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)的数据包。您可以定义匹配条件以接受采样数据包。最后,将目标所有过滤器应用于接口 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 命令s确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。

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

验证

确认配置工作正常。

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

目的

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

操作

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

目的

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

操作

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

验证捕获的数据包

目的

验证数据包捕获文件是否存储在目录下 /var/tmp ,并且可以脱机分析数据包。

操作
  1. 禁用数据包捕获。

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

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

    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 外壳。
    2. 导航到存储数据包捕获文件的目录。
    3. 重命名要更改封装的接口的最新数据包捕获文件; fe.0.0.0例如.
    4. 返回操作模式。
  4. 使用 J-Web 用户界面或 CLI 配置编辑器更改界面上的封装。
  5. 如果完成设备配置,请从配置模式输入 commit
  6. 重新启用数据包捕获(请参阅 示例:在设备上启用数据包捕获)。
  7. 如果完成设备配置,请从配置模式输入 commit

删除数据包捕获文件

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

要删除数据包捕获文件:

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

显示数据包标头

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

注:

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

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

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

选项

Description

absolute-sequence

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

count number

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

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 监控流量匹配条件

匹配条件

Description

实体类型

host [address | hostname]

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

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]

匹配广播或组播以太网帧。此匹配条件可以前面加上 sourcedestination

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 监控流量逻辑运算符

逻辑运算符

Description

!

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

&&

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

||

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

()

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

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

操作人员

Description

算术运算符

+

加法运算符。

减法运算符。

/

除法运算符。

二元运算符

&

按位“与”。

*

按位“异或”。

|

按位“兼或”。

关系运算符

<=

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

>=

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

<

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

>

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

=

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

!=

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

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