![Netflow 到 syslog 转换器](https://linux22.com/image/798869/Netflow%20%E5%88%B0%20syslog%20%E8%BD%AC%E6%8D%A2%E5%99%A8.png)
有什么方法可以将 netflow v9 转换为 syslog?
哪种方式最适合实现以下想法?
程序:
路由器发送UDP结构如下:
templateId=259:id=259,fields=11 字段 id=8(ipv4 源地址),offset=0,len=4 字段 id=225(natInsideGlobalAddress),offset=4,len=4 字段 id=12(ipv4 目标地址),offset=8,len=4 字段 id=226(natOutsideGlobalAddress),offset=12,len=4 字段 id=7(传输源端口),offset=16,len=2 字段 id=227(postNAPTSourceTransportPort),offset=18,len=2 字段 id=11(传输目标端口),offset=20,len=2 字段 id=228(postNAPTDestinationTransportPort),offset=22,len=2 字段 id=234(ingressVRFID),offset=24,len=4 字段 id=4(ip 协议),offset=28,len=1 字段 id=230 (natEvent),偏移量=29,长度=1
每个 UDP 数据包内都有一个文件(是的,每个 UDP 数据包内都有一个文件),还有一些重要字段,如时间戳和计数(数据包内的流集数量)
每个流程集内部都有 ID、长度,以及流程序列(使用上面显示的模板)。
总体思路是有一个二进制文件(性能是必须的,所以可能是 C 二进制文件,多线程),它监听 UDP 流量并发送输出系统日志到将负责将它们写入磁盘的服务器。(如果有办法读取写入的日志,则 netflow 转换器本身可以完成磁盘写入)。
关于如何实现这一目标您有什么想法吗?
谢谢。
马克
答案1
如果我理解正确的话,您希望监视与特定模板匹配的会话的 NetFlow 流,然后发送包含详细信息的预先设定的系统日志事件?我不知道有任何工具可以做到这一点,但我知道有两种可能性:
自己写一个。最大的瓶颈是 NetFlow 解析,但使用开源 NetFlow 库,如流量将会有很大帮助。它将处理所有版本信息,并提供方便的数据结构来形成您的系统日志消息。从性能角度来看,这将是您的最佳选择,因为它不会执行任何其他任务。
购买具有警报功能的现成 NetFlow 收集器。设置的具体细节因产品而异,但一般来说,您将设置严格的过滤器并将阈值设置得非常低,以便您每次会话都会收到警报(通常是系统日志事件)。产品其余部分的开销可能会降低速度,商业产品会有成本,但部署起来可能更容易。(完全披露:我在一家销售 NetFlow 收集器的公司工作)