流量镜像
当您需要监控网络流量时,传统方式为登录实例抓包或在实例部署监控Agent,占用实例的系统资源,影响业务性能。VPC流量镜像提供旁路监控方案,在不影响业务流量的前提下,将符合筛选条件的出入指定弹性网卡的流量复制并转发到安全分析设备,实现实时检测。
流量镜像常见的使用场景:
安全场景:网络入侵检测
使用流量镜像获取特定流的全部数据包,通过自主研发或者第三方安全软件进行全面检查,实时捕获所有可能存在的安全漏洞和入侵威胁,更快速地检查和响应攻击。
审计场景:金融或政府
对于金融或安全性合规性比较高的业务场景,通过流量镜像透明地将实例流量镜像到统一审计平台进行分析,满足审计需求。
网络运维场景:网络问题定位
通过流量镜像来检查网络问题,运维人员可以直接查看传输的内容(例如:分析TCP的重传)来排查问题,无需登录ECS实例内部抓取报文。
工作原理
工作流程
流量镜像会话在指定的镜像源和镜像目的建立转发路径。启动镜像会话后,流量镜像将执行以下操作:
复制符合筛选条件的镜像源业务报文。
镜像源当前仅支持弹性网卡。
筛选条件中包含入方向规则和出方向规则,采用源网段、源端口、目的网段、目的端口和协议类型组成的五元组,按照优先级分别筛选弹性网卡实例接收/发出的流量。
使用标准的VXLAN报文格式封装后作为镜像报文。
VNI(VXLAN Network Identifier,VXLAN ID):分配给镜像会话的虚拟网络 ID,用于区分不同会话的镜像流量。创建镜像会话时,如未指定VNI,将由系统随机分配。
源 IP:镜像源的主IP地址。
源端口:由业务报文的五元组哈希值确定。
目的IP:镜像目的的主IP地址。
目的端口:默认使用4789端口,不支持修改。
将镜像报文转发至路由可达的镜像目的。如果镜像目的和镜像源不属于同一个VPC,您需要配置VPC互连,确保镜像源和镜像目的之间路由可达。
镜像目的当前支持弹性网卡、专有网络类型的私网CLB或网关型负载均衡终端节点GWLBe。
当前,支持将流量转发至网关型负载均衡终端节点GWLBe的地域,有华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北5(呼和浩特)、华南1(深圳)、新加坡、美国(硅谷)、美国(弗吉尼亚)。
从镜像源复制报文时不受安全组和网络ACL策略的限制,但镜像报文转发至镜像目的时,需确保在镜像目的所在的安全组和网络ACL中配置入方向规则,允许来自镜像源的UDP协议报文访问镜像目的的4789端口。
使用专有网络类型的私网CLB作为镜像目的时,需确保在4789端口配置UDP监听。而网关型负载均衡配置会监听所有端口的所有数据包。
匹配规则
同一个镜像源的同一个报文只能被镜像一次。
以镜像源的入方向流量为例:
当镜像源仅加入一个镜像会话时,与镜像会话关联的筛选条件的入方向规则匹配。每条规则有优先级,根据规则的五元组依次判断是否与流量匹配。匹配到首条规则后,执行指定的镜像策略。无法匹配时,不镜像对应的流量。
当镜像源加入多个镜像会话时,将按照镜像会话的优先级,依次与镜像会话关联的筛选条件的入方向规则匹配。当前镜像会话无法匹配时,将与下一优先级的镜像会话匹配,直到匹配到首条入方向规则,将执行指定的镜像策略。若所有镜像会话关联的入方向规则均无法匹配,则不镜像对应的流量。
镜像目的接收的报文长度
分片业务报文的镜像行为
当原始业务报文长度超过链路 MTU 时,会被切割为多个分片传输。
例如,业务报文长度为 2000 字节,而链路 MTU 为 1500 字节,报文将被切割为 1500、500 字节的两个分片。
在阿里云网络内,链路默认支持的MTU为 1500,但部分网络组件例如 VPN 网关等自身的MTU限制小于1500。
当镜像源绑定的 ECS 实例开启 TSO 或 UFO 功能时,分片业务报文的镜像行为可能会有所不同。如需镜像目的接收到所有分片业务报文的镜像报文,建议您关闭 TSO 和 UFO 功能(关闭后可能会对实例性能有影响)或使用 7 代及以上的 实例规格族。
您可以根据实例规格族主体中的数字来判断实例规格是否为7代,例如ecs.g7se.xlarge。
镜像报文截断:当被镜像的分片报文或完整业务报文的长度加上 VXLAN 头的长度(固定值50字节),大于能够完全转发的镜像报文长度时,系统会对镜像报文进行截断。
在华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北5(呼和浩特)、华南1(深圳)、新加坡、美国(硅谷)、美国(弗吉尼亚)地域,镜像目的收到的被镜像的报文长度受限于镜像目的 MTU。目前,阿里云的 8 代主售实例规格族支持 8500 MTU 的巨型帧。建议您为镜像目的开启巨型帧,避免镜像报文被截断。
其他地域,镜像目的收到的被镜像的报文长度受限于链路默认 MTU(1500字节)。
如果仅需要查看特定长度的镜像报文头,您可以设置镜像报文长度,系统将对镜像源业务报文中超过该值的部分进行截断,再转发到镜像目的。
使用限制
镜像源和镜像目的:同一个弹性网卡不能既作为镜像源又作为镜像目的。镜像源和镜像目的,不支持选择托管弹性网卡。
账号与地域:支持在同账号、同地域的单VPC或跨VPC下配置镜像源和镜像目的,暂不支持跨地域或跨账号的场景。
IP版本:支持镜像IPv4的网络流量,暂不支持IPv6。
带宽:流量镜像会占用实例的带宽,且不会作额外限速。当实例带宽达到最大容量时,会丢弃流量镜像报文,保障优先转发业务流量。
流量类型:不支持镜像网络ACL丢弃流量、安全组丢弃流量、流日志流量、ARP及DHCP流量。
创建/删除流量镜像
出入镜像源的业务流量,按照优先级,基于协议类型、IP版本、源网段、目的网段、源端口、目的端口匹配到筛选条件中的特定规则后,系统将对流量执行指定策略,镜像/不镜像对应的流量。镜像流量将被复制并转发到镜像目的。
优先级决定规则的生效顺序,取值范围为1~16777216。数字越小,优先级越高,同一个筛选条件的每条入方向规则或出方向规则优先级不能重复。
协议类型为TCP(6)/UDP(17)时,可以调整端口范围。取值范围为0~65535,设置格式为
起始端口/终止端口
。选择其他协议类型时,端口范围无法设置,默认为-1/-1,表示不限制端口。
控制台
初次使用时,请登录流量镜像开通页面,根据提示开通流量镜像功能。
创建流量镜像
创建筛选条件
如果已创建了符合镜像流量需求的筛选条件,您可以直接创建镜像会话。
前往专有网络控制台 - 筛选条件,在顶部菜单栏选择要创建流量镜像的地域。单击创建筛选条件。
配置入方向规则和出方向规则,确定哪些流量从镜像源复制并转发到镜像目的。当筛选条件中不包含任何规则时,不镜像任何流量。
创建筛选条件时,出入方向规则分别最多可配置10条,创建完成后,您可以添加/编辑/删除出入方向规则。
如需删除筛选条件,请确保筛选条件没有关联镜像会话。如有关联,需先变更镜像会话关联的筛选条件,再在目标筛选条件的操作列单击删除。
创建镜像会话
前往专有网络控制台 - 镜像会话,在顶部菜单栏选择要创建流量镜像的地域。单击创建镜像会话。
配置镜像会话:
指定VNI:分配给镜像会话的虚拟网络ID,用于区分不同会话的镜像流量,取值范围为0~16777215。如未指定VNI,将由系统随机分配。
配置优先级:当镜像源加入多个镜像会话时,将按照镜像会话的优先级来确定镜像到哪个目的。取值范围为1~32766。 数字越小,优先级越高。同一账号在同一个地域创建的镜像会话优先级不能重复。
如果仅需要查看特定长度的镜像报文头,您可以设置镜像报文长度,系统将对镜像源业务报文中超过该值的部分进行截断,再转发到镜像目的。
配置关联的筛选条件、镜像源、镜像目的。
启动镜像会话
创建完成后,在目标镜像会话的操作单击启动。
当镜像源有符合筛选条件的流量时,您可以在镜像目的执行
tcpdump -i 镜像目的对应的网卡名称 udp port 4789 -nne
,查看镜像目的接收的镜像报文。
变更流量镜像
在目标镜像会话的详情页,您可以变更镜像目的、筛选条件,添加或删除镜像源,或修改镜像会话的VNI、优先级与镜像报文长度。
停止/删除镜像会话
在目标镜像会话的操作单击停止/删除。
API
创建流量镜像
初次使用时,需调用OpenTrafficMirrorService开通流量镜像功能。
调用CreateTrafficMirrorFilter创建流量镜像筛选条件。
调用CreateTrafficMirrorFilterRules创建筛选条件的入方向或出方向规则。
调用CreateTrafficMirrorSession创建镜像会话。
调用UpdateTrafficMirrorSessionAttribute调整
Enabled
为true
,启动镜像会话。
变更流量镜像
调用AddSourcesToTrafficMirrorSession/RemoveSourcesFromTrafficMirrorSession为镜像会话增加/删除镜像源。
调用UpdateTrafficMirrorSessionAttribute修改镜像会话的配置或变更镜像目的、筛选条件。
修改/删除筛选条件
调用CreateTrafficMirrorFilterRules创建筛选条件的入方向或出方向规则。
调用DeleteTrafficMirrorFilterRules删除筛选条件的入方向或出方向规则。
调用DeleteTrafficMirrorFilter删除筛选条件。
停止/删除流量镜像
调用UpdateTrafficMirrorSessionAttribute调整
Enabled
为false
,停止镜像会话。调用DeleteTrafficMirrorSession删除镜像会话。
Terraform
本示例仅镜像进出镜像源的TCP流量,您应根据需镜像的流量配置筛选条件的出入方向规则。
Resources:alicloud_vpc_traffic_mirror_filter、alicloud_vpc_traffic_mirror_session
# 指定创建流量镜像的地域
provider "alicloud" {
region = "cn-hangzhou"
}
# 指定镜像源的ID
variable "traffic_mirror_source_id" {
default = "eni-hp3e******" # 修改为弹性网卡的实际ID
}
# 指定镜像目的的ID
variable "traffic_mirror_target_id" {
default = "eni-hp3h******" # 修改为弹性网卡的实际ID
}
# 创建筛选条件并配置出入方向规则:采集进出镜像源的所有TCP流量
resource "alicloud_vpc_traffic_mirror_filter" "example_vpc_traffic_mirror_filter" {
traffic_mirror_filter_name = "example_vpc_traffic_mirror_filter_name"
egress_rules {
priority = 1
protocol = "TCP"
action = "accept"
destination_cidr_block = "0.0.0.0/0"
destination_port_range = "-1/-1"
source_cidr_block = "0.0.0.0/0"
source_port_range = "-1/-1"
}
ingress_rules {
priority = 1
protocol = "TCP"
action = "accept"
destination_cidr_block = "0.0.0.0/0"
destination_port_range = "-1/-1"
source_cidr_block = "0.0.0.0/0"
source_port_range = "-1/-1"
}
}
# 创建流量镜像会话
resource "alicloud_vpc_traffic_mirror_session" "example_vpc_traffic_mirror_session" {
traffic_mirror_session_name = "example_vpc_traffic_mirror_session"
priority = 1 # 指定镜像会话的优先级,当镜像源加入多个镜像会话时,将按照镜像会话的优先级来确定镜像到哪个目的。取值范围为1~32766。 数字越小,优先级越高。同一账号在同一个地域创建的镜像会话优先级不能重复。
virtual_network_id = 10 # 指定镜像会话的VNI,用于区分不同会话的镜像流量,取值范围为0~16777215。如未指定VNI,将由系统随机分配。
traffic_mirror_filter_id = alicloud_vpc_traffic_mirror_filter.example_vpc_traffic_mirror_filter.id # 指定关联的筛选条件
traffic_mirror_source_ids = [var.traffic_mirror_source_id] # 指定流量镜像源
traffic_mirror_target_type = "NetworkInterface" # 指定流量镜像目的类型
traffic_mirror_target_id = var.traffic_mirror_target_id # 指定流量镜像目的
#packet_length = 1500 # 如果仅需要查看特定长度的镜像报文头,您可以设置镜像报文长度,系统将对镜像源业务报文中超过该值的部分进行截断,再转发到镜像目的。
}
流量镜像配置示例
将入方向TCP流量镜像到弹性网卡
将入方向TCP/UDP流量镜像到不同的镜像目的
将非VPC内部流量镜像到跨VPC的镜像目的
配置以下筛选条件,可以监控来自VPC外部的流量和流出VPC的流量。
例如,按照入方向规则的优先级,所有源IP在VPC CIDR地址段内的入方向流量就不采集,但会采集其他所有流量。
由于镜像目的与镜像源位于不同VPC,默认网络隔离。需要使用VPC对等连接并在两端VPC配置路由,确保镜像目的路由可达。
更多信息
计费说明
计费项
流量镜像费用 = 实例费 + 流量处理费
实例费 = 启动镜像会话的镜像源个数(个) × 镜像会话活跃时长(小时) × 实例费单价(元/个/小时)
流量处理费 = 镜像流量总量(GB) × 流量处理费单价(元/GB)
计费项 | 单价 |
实例费 | 0.1(元/个/小时) |
流量处理费 | 0.05(元/GB) |
计费规则
2026年03月31日前,免收流量处理费。
镜像源启动镜像会话后,每个启用了镜像会话的镜像源按小时付费,不足1小时按1小时计费。
单个镜像源创建了多个镜像会话,实例费仅收取一次。镜像会话活跃时长按照镜像源在每个镜像会话中累计的活跃时长计算。例如,镜像源在镜像会话1中活跃时长为5小时,在镜像会话2中活跃时长为4小时,计费时镜像会话活跃时长为9小时。
计费示例
例如,一个VPC中有5个弹性网卡实例启用了镜像会话,镜像会话的活跃时间为30天,每天24小时,镜像流量总量为20 GB。详细费用计算如下:
实例费 = 5 × 30 × 24 × 0.1 = 360 元
流量处理费 = 20 × 0.05 = 1 元
流量镜像总费用 = 360 + 1 = 361 元
欠费与充值
欠费和续费说明
支持的地域
公有云支持的地域
区域 | 支持流量镜像的地域 |
亚太-中国 | 华东1(杭州)、华东2(上海)、华东5 (南京-本地地域-关停中)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、中国香港、华东6(福州-本地地域-关停中) |
亚太-其他 | 日本(东京)、韩国(首尔)、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、泰国(曼谷)、菲律宾(马尼拉) |
欧洲与美洲 | 德国(法兰克福)、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚) |
中东 | 沙特(利雅得) |
金融云支持的地域
区域 | 支持流量镜像的地域 |
亚太 | 华北2 金融云(邀测)、华东1 金融云、华东2 金融云 |
政务云支持的地域
区域 | 支持流量镜像的地域 |
亚太 | 华北2 阿里政务云1 |
配额
配额名称 | 描述 | 默认限制 | 提升配额 |
trafficmirror_quota_source_num_per_session | 单个镜像会话支持加入的镜像源个数 | 10个 | |
vpc_quota_traffic_mirror_source_num_per_large_ecs_target | 镜像目的为弹性网卡,且弹性网卡绑定的是以下规格的ECS实例时,单个镜像目的支持的镜像源个数 | 200个 | |
vpc_quota_traffic_mirror_source_num_per_small_ecs_target | 镜像目的为弹性网卡,且弹性网卡绑定的不是以下规格的ECS实例,单个镜像目的支持的镜像源个数 | 20个 | |
vpc_quota_traffic_mirror_rules_num_per_filter | 单个筛选条件支持的筛选规则数 | 20个 | |
无 | 单账号单地域支持的最大镜像会话数 | 20000个 | 无法提升 |
单个镜像源支持创建的最大镜像会话数 | 3个 | ||
镜像目的为私网传统型负载均衡CLB时,单个镜像目的支持的镜像源个数 | 500个 | ||
镜像目的为网关型负载均衡终端节点GWLBe时,单个镜像目的支持的镜像源个数 | 500个 | ||
单账号单地域支持的最大筛选条件数 | 100个 | ||
单个筛选条件支持关联的镜像会话数 | 2000个 |