使用流量镜像监控网络流量

 流量镜像示例配置场景(官网):Traffic Mirroring example configuration scenarios - Amazon Virtual Private Cloud

以下是流量镜像的关键概念:

源(Source)— 要监控的网络接口。

过滤器(Filter)— 定义被镜像的流量的一组规则。

目标(Target)— 镜像流量的目的地。

会话(Session)— 建立源、过滤器和目标之间的关系。

镜像流量封装在 VXLAN 数据包中,然后路由到镜像目标。流量镜像目标的安全组必须允许来自流量镜像源的 VXLAN 流量(UDP 端口 4789)。具有流量镜像源的子网的路由表必须具有将镜像流量发送到流量镜像目标的路由。在镜像目标上运行的监控软件必须能够处理封装的 VXLAN 数据包。

封装后的镜像流量通过使用VPC路由表路由到流量镜像目标。确保您的路由表配置为将镜像流量发送到流量镜像目标。

由于入站安全组规则或入站网络ACL规则,在流量镜像源处被丢弃的入站流量不会被镜像。

镜像的出站流量不受流量镜像源的出站安全组规则的约束。

一、创建流量目标

可根据需要选择需要监控的目标类型,可选择:Network interfaces、Network Load Balancer、Gateway Load Balancer endpoints。这里我们选择网络接口(Network interfaces)选择目标网络接口 ID

二、创建流量镜像过滤器

流量镜像筛选条件是一组入站和出站规则,用于确定从流量镜像源复制哪些流量并将其发送到流量镜像目标。您还可以选择镜像某些网络服务流量,包括 Amazon DNS。添加网络服务流量时,将镜像与该网络服务相关的所有流量(入站和出站)。

我们从最低值到最高值评估流量镜像筛选规则。与流量匹配的第一条规则确定是否镜像流量。如果不添加任何规则,则不会镜像任何流量。

这里我们只编写出站规则,我们需要监控的是出站的流量,根据需要编写CIDR块

三、创建流量镜像会话

VXLAN ID — 您可以分配给流量镜像会话的虚拟网络ID。如果您不指定一个值,我们会分配一个随机值,该值在账户中的所有会话中是唯一的。

源IP地址 — 源网络接口的主IP地址。

源端口 — 对于ICMP、TCP和UDP流量,端口由原始L2数据包的5元组哈希确定。对于其他流量,端口由原始L2数据包的3元组哈希确定。

目的IP地址 — 设备、网关负载均衡器端点或网络负载均衡器(当设备部署在其后时)的主IP地址。

目的端口 — 端口是4789,这是VXLAN的众所周知的端口。

 在镜像源选项中选择我们想要监控的网络接口ID;在镜像目标选项中选择我们创建的流量镜像目标;在其他设置中,会话编号可以自定义,只要在其规定范围内即可;VNI是VXLAN ID,我们填100。数据包长度留空;筛选条件选择创建的流量筛选器

四、使用命令监控流量

目标服务器

使用 tcpdump 工具来捕获网络流量,并将捕获的数据保存到一个文件中。该命令会捕获 eth0 接口上的 5 个数据包,保存到名为 baseline.pcap 的文件中,并且不进行主机名和服务名称的解析,提供非常详细的输出信息。

tcpdump: 一个网络数据包捕获工具,用于监控和分析网络流量。
-nni eth0: 选项解释如下:
-n: 不将 IP 地址转换为主机名(不进行 DNS 查询)。
-n: 不将端口号转换为服务名称。
-i eth0: 指定接口为 eth0,在该接口上捕获流量。
-vvv: 提高输出的详细程度(更详细的信息)。
-c 5: 指定捕获 5 个数据包后停止。

# 这条命令用于更改命令提示符(Prompt)的显示样式,终端的提示符会变成 [Target Server] $ 

export PS1="[Target Server] $ "

sudo tcpdump -nni eth0 -vvv -c 5 -w baseline.pcap

 使用以下命令捕获网络接口eth0 的 UDP 数据包。该命令会监控并捕获通过 eth0 接口的所有目标端口是 4789 的 UDP 数据包,并显示详细的包内容。这通常用于分析特定的服务或应用程序的网络流量,例如 VXLAN(虚拟扩展局域网),VXLAN 通常使用 UDP 端口 4789。

tcpdump: 网络数据包捕获工具,用于监控和分析网络流量。

-nni eth0:

-n: 不将 IP 地址转换为主机名(不进行 DNS 查询)。

-n: 不将端口号转换为服务名称。

-i eth0: 指定网络接口 eth0,表示在这个接口上捕获流量。

-vvv: 输出非常详细的信息,包括每个数据包的详细协议数据。

udp: 过滤 UDP 协议的数据包。

dst port 4789: 进一步过滤,捕获目标端口为 4789 的 UDP 数据包。

sudo tcpdump -nni eth0 -vvv udp dst port 4789

源服务器

将ICMP流量发送到两个目的地,这些流量应该镜像到目标服务器

# # 这条命令用于更改命令提示符(Prompt)的显示样式,终端的提示符会变成 [Target Server] $ 

export PS1="[Source Server] $ "

ping 1.1.1.1 -c 2

ping 8.8.8.8 -c 2

我们看目标服务器是否有流量监控信息

目标服务器运行以下命令在目标服务器上创建一个虚拟接口,并允许从不同VXLAN VNI分离流量,如果镜像目标正在接收来自多个镜像会话的流量。

ip link add vni100: 使用 ip link 工具添加一个新的网络接口,接口名称为 vni100。

type vxlan: 指定接口类型为 VXLAN。

id 100: VXLAN 网络标识符(VNI),这里设置为 100。VNI 是 VXLAN 中用来隔离不同虚拟网络的标识符。

dstport 4789: 指定 VXLAN 的 UDP 目标端口为 4789,这是 VXLAN 通常使用的默认端口。

local 10.0.0.20: 指定本地 IP 地址为 10.0.0.20,这意味着 VXLAN 封装的外层源地址将是这个 IP。

dev eth0: 指定使用的物理网络接口为 eth0,即 VXLAN 数据包通过该接口传输。

这条命令创建了一个 VXLAN 网络接口 vni100,用于封装和解封 VXLAN 数据包,允许在三层网络上创建虚拟的二层网络。

sudo ip link add vni100 type vxlan id 100 dstport 4789 local 10.0.0.20 dev eth0

sudo ip link set vni100 up

目标服务器运行以下命令启动持续的捕获,再次使用新的虚拟接口 "vni100",并且增加选项 X 来显示数据包内容。

-nn:

-n: 不将 IP 地址转换为主机名(禁用 DNS 查询)。

-n: 不将端口号转换为服务名称。

-X: 显示每个数据包的内容(包括以十六进制和 ASCII 格式显示数据包的负载),提供完整的包数据内容。

-i vni100: 指定捕获数据包的接口为 vni100,这是之前创建的 VXLAN 接口。

sudo tcpdump -nnXi vni100

源服务器运行以下命令,发送数据包到目的地

ping 1.1.1.1 -c 1

ping 1.1.1.1 -p C0DE -c 1

查看目标服务器的监控信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值