虚拟机流量镜像介绍

1. 背景

流量镜像提供流量采集服务,可将指定采集范围的流量按不同过滤条件过滤,并复制转发至私有网络 VPC 下的 VM 上,适用于安全审计、风险监测、故障排查、业务分析等场景。

1.1 工作流程

流量镜像关键组成为采集源和接收端,具体工作流程如下图所示。

采集源:VPC 中指定弹性网卡,可按所属网络、采集范围、采集类型和流量过滤等规则条件进行过滤。

接收端:采集流量将被复制转发至接收 IP 中。

1efd28b4643f87a73b5ea2615cad61ce.png

1.2 使用场景

安全审计

在系统运行过程中,由于系统软件处理异常、网络设备硬件故障、计算机病毒或用户不正常使用等原因,造成网络流量异常或产生错误报文。通过流量镜像可以分析网络报文,定位故障产生的原因。

入侵检测

为保证网络系统资源机密性、完整性和可用性,可以使用流量镜像功能将流量复制转发到云服务器集群上,进行实时分析。

业务分析

使用流量镜像功能对业务流量进行镜像,可以清晰可视企业内部业务流量模型。

2. 方案设计

2.1 基本概念

流量采集

采集的源是某个虚机的网卡

采集类型

根据业务类型选择采集流量方向,支持“全部流量”、“出流量”和“入流量”。

流量过滤

不过滤:采集配置的全部流量。

五元组:采集满足五元组条件的流量。选择“五元组”后,需设置“协议”、“源网段”、“目的网段”、“源端口”和“目的端口”。

流量接收

通常要求采集流量的 IP 与流量接收 IP 在同一个 VPC 内,我们的设计可以允许跨VPC不跨地域

流量接收端可以为虚机添加弹性网卡,专门来接收和处理镜像的流量

2.2 方案选择

流量镜像需要依次经过采集、过滤、接收三个阶段的处理。

  1. 对于采集来说,可以在采集端计算节点使用ovs自带的mirror功能,对采集端port添加mirror相关配置来实现。

  2. 对于接收来说,需要有办法在接收端计算节点识别出镜像的流量,下发流表规则来转发给接收端port。由于镜像流量一定是从采集端port发出或接收的,所以在接收端可以通过采集端port的IP或MAC地址来识别这些流量。考虑port IP有可能有多个而且可能经常会变更,所以通过采集端port的MAC地址来匹配比较合适。

    另外由于镜像流量的目的MAC不是接收端虚机网卡的MAC,接收端虚机需要打开网卡的混杂模式才能正常接收到镜像流量。

    打开混杂模式:
    ifconfig eth0 promisc
    关闭混杂模式:
    ifconfig eth0 -promisc
  3. 对于过滤来说,前期可以采用不过滤的方式来实现,后期增加五元组过滤的功能。过滤方式有两种可供选择:

  • 分布式:在采集端计算节点上使用流表进行流量过滤。

  • 集中式:使用网关在采集和接收之间进行流量过滤。

分布式

集中式


优点

流量路径简单。采集端虚机->采集端计算节点->接收端计算节点->接收端虚机

代码开发的工作量较小

配置管理方便。网关统一管理过滤规则,方便管理和故障排查

网关上有全量虚机的FDB信息,可以方便地进行镜像流量的转发

缺点

配置管理复杂。如过滤规则变更,可能涉及多个计算节点上的流表配置变更

流量路径增加一个网关处理的环节。采集端虚机->采集端计算节点->网关->接收端计算节点->接收端虚机

代码开发的工作量较大

综合考虑优缺点,采用集中式的流量过滤。

网关如何识别镜像流量,有两种方式:

  • 给镜像流量打标签:在采集端计算节点上通过流表给镜像流量的tos打标签,来帮助网关区分镜像流量和普通流量

    2f62251a1f76cfecca05f8b1b990f7d8.png

  • 使用UDP特殊端口号:当前计算节点和网关之间的vxlan包都是使用UDP 4789端口,可以考虑镜像流量使用UDP 4790端口加以区分

    给镜像流量打标签

    使用UDP 4790端口


    优点

    代码开发的工作量较小

    网关可以直接通过UDP端口号区分收到的包是普通流量还是镜像流量,不需要解析包的内容,方便处理

    缺点

    网关需要解析包的内容来区分收到的包是普通流量还是镜像流量,处理流程较为复杂

    代码开发的工作量较大

    综合考虑优缺点,采用UDP  4800端口来标识镜像流量

2.3 使用限制

一个采集端虚机port只能属于一个流量镜像实例,即一条流量不能镜像给多个虚机。

一个接收端虚机port可以属于多个流量镜像实例,即多条流量可以镜像给一个虚机。

2.4 流程设计

f3676bac6cac520a6cca2ebaba1ca309.png

2.5 方案验证

在网关侧功能没有完成开发之前,可以验证计算节点直接转发镜像流量。

采集端

创建目的port为4790的vxlan port和ovs mirror规则进行流量采集,注意创建mirror规则使用“add bridge br-int”把新建的mirror加入bridge中,不能使用“set bridge br-int”,不然会覆盖bridge上原有的mirror。

 
 
ovs-vsctl add-port br-int vxlan11 -- set interface vxlan11 type=vxlan \
options:local_ip=10.120.64.238 options:remote_ip=10.220.164.238 options:key=100 \
options:dst_port=4790


ovs-vsctl -- --id=@qvo6fc32225-a8 get port qvo6fc32225-a8 \
-- --id=@vxlan11 get port vxlan11 \
-- --id=@m create mirror name=m0 select-src-port=@qvo6fc32225-a8 select-dst-port=@qvo6fc32225-a8 output-port=@vxlan11 \
-- add bridge br-int mirrors=@m

接收端

创建目的port为4790的vxlan port用来接收镜像流量,在ovs添加流表规则,从此vxlan port收到的流量全部交给table 63处理,table 63中匹配采集端虚机的MAC地址,把镜像流量导流到目标虚机网卡。由于一个采集端虚机port只能属于一个流量镜像实例,所以根据采集端虚机的MAC地址可以唯一地确定接收端虚机port。

从外部ping采集端虚机的IP,并在接收端虚机内抓包,验证可以收到镜像流量。

 
 
ovs-vsctl add-port br-int vxlan11 -- set interface vxlan11 type=vxlan \
options:local_ip=10.120.164.238 options:remote_ip=10.220.64.238 options:key=100 \
options:dst_port=4790


br-int:
ovs-ofctl add-flow br-int -Oopenflow13 "table=0,priority=200,in_port=vxlan11 actions=resubmit(,63)"
ovs-ofctl add-flow br-int -Oopenflow13 "table=63,priority=1,dl_src=fa:16:3e:71:ab:62 actions=output:tap4bd35a8c-a5"
ovs-ofctl add-flow br-int -Oopenflow13 "table=63,priority=1,dl_dst=fa:16:3e:71:ab:62 actions=output:tap4bd35a8c-a5"
ovs-ofctl add-flow br-int -Oopenflow13 "table=63,priority=0 actions=drop"

3. 总结

虚拟机流量镜像实现了流量复制和转发的功能,帮助用户更好地监控和分析虚机的流量,提升网络安全性,排除入侵风险。具有使用方便的特点,用户可以根据自己的实际需求对流量进行分析,而不只是局限于云平台提供的监控数据。

此功能在利用了NAT网关原有功能的基础上扩展了NAT网关的功能。相对于公有云厂商的流量镜像功能来说,可以实现同地域跨vpc之间的流量镜像,扩展了此功能的使用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值