Traffic Mirroring
用于将一个ENI上的流量拷贝到另一处应用,用于:
这些安全和监控的应用可以部署在单独的EC2实例上,也可以部署在NLB/GWLB
后的一个集群上, 使用UDP协议监听。
例如部署在单独的EC2上:
或者部署在NLB后面:
Traffic Mirroring
支持过滤,只提取出所关注的流量
Traffic Mirroring
简化了操作,不用往EC2上再安装额外的agent
多说无益,动手玩一下
流程如下:
创建两台EC2, 一台作为source, 一台作为target。两者能互相通讯
创建Mirror Target
定义Traffic Filter
创建Mirror Session
创建两台EC2, 满足以下条件:
traffic mirroring
。这里选择了t3.large
Transit Gateway
或Peering打通source_instance
和target_instance
, source_instance
将把流量镜像到target_instance
target_instance
的UDP 4789端口要允许source_instance
访问:进入VPC页面,创建mirror target
:
这里我们要选择target-instance
的ENI作为Mirror target,从EC2页面里找到id:
选择这个ENI作为target:
点击创建。
点击Create mirror filter
:
我们不关注SSH流量,所以把SSH流量进行过滤:
点击创建。
点击Create traffic mirror session
:
我们需要source_instance
的ENI作为流量镜像的源,从EC2页面中找到这个ENI id:
Mirror source
选择这个id,Mirror target
在上一步已创建:
Filter在上一步也已创建,选择这个filter:
最后点击创建。
此时两台EC2已经搭建好Traffic Mirroring
, 我们分别SSH登录上去
在target instance
,执行tcpdump,监控流量:
sudo tcpdump -i eth0 port not 22
在source instance
, 执行一些访问网络的命名:
curl google.com
curl baidu.com
...
此时在target instance
,能实时观测到镜像过来的流量:
在这个页面只能看到有限的信息,不够爽。如果想看到包详细的信息,可以将其保存为pcap格式:
sudo tcpdump -i eth0 port not 22 -w session1.pcap
收集完成后拉到本地,使用wireshark来分析:
此时我们看到,所有http请求的详细信息都被记录下来