我正在尝试制定一个解决方案来捕获云中的流量,但目前想法已经用尽。我们需要从云中的服务器捕获流量并将其发送到 NTA 的传感器(传感器可以放置在云中)。云不提供任何捕获和发送流量的方法(如 ERSPAN)。目前没有可以满足这一目的的虚拟设备。我们无法购买 vTAP(预算问题),所以我只依赖开源。
我正在寻找一些可以捕获和发送来自 Linux(类似 Debian)机器的流量的代理。我找到的只有 Stenographer(来自 Google),它可以捕获并写入磁盘。问题是我仍然需要发送它。传感器可以接受通过 GRE 隧道传入的流量。
另一种选择是使用虚拟路由器(如 Open vSwitch),但我觉得它会带来比实际解决的更多麻烦(管理问题,多个团队参与管理)。
如果您能提出任何建议,我将不胜感激。
答案1
我发现 Linux 实际上可以充当 ERSPAN 源(例如取自此处):
ip link add dev myerspan type erspan seq key 30 \
local 192.168.1.4 remote 192.168.1.1 erspan_ver 1 erspan 12
tc qdisc add dev eth1 handle ffff: ingress
tc filter add dev eth1 handle ffff: ingress matchall \
skip_hw action mirred egress mirror dev myerspan
设置路由器是一种选择,但 Open-vSwitch 听起来有点大材小用——您已经可以使用以下方法将标准 Linux VM 变成路由器:无需任何附加软件,让它在例如一个独立的“VPC”(如果我没有记错的话)和互联网之间转发流量。缺点是你仍然必须使用完全相同的数据包捕获方法(tcpdump 和类似方法),尽管它仍然比服务器内代理有优势,即如果有人获得对服务器的 root 访问权限,它就无法被绕过。
我还打算建议使用tcpdump
可能随处安装的“原始”数据包捕获工具,但它也有缺点,即它只能输出“pcap”格式的流 - 您可以通过 SSH 传输它,但它不能提供 GRE/ERSPAN 作为输出。
创建一个基于 libpcap 的工具并通过 GRE/ERSPAN 发送所有捕获的流量并不困难,但在阅读了 Stenographer 的 README 并考虑了 Real 服务器显然承载的数 Gbps 流量后,决定不这样做。