![flow_fanout flow_capture 中发生内存泄漏。flow_capture 输出中出现奇怪的 IP](https://linux22.com/image/608762/flow_fanout%20flow_capture%20%E4%B8%AD%E5%8F%91%E7%94%9F%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E3%80%82flow_capture%20%E8%BE%93%E5%87%BA%E4%B8%AD%E5%87%BA%E7%8E%B0%E5%A5%87%E6%80%AA%E7%9A%84%20IP.png)
在我的 freebsd 盒子上:
#uname -rimp
9.1-STABLE amd64 amd64 GENERIC
流程工具:
> pkg_info -x flow
Information for flow-tools-0.68_7:
Comment:
Suite of tools and library to work with netflow data
Description:
Tools to capture, replicate, print, filter, send and other works
on Cisco's NetFlow Export.
WWW: http://www.splintered.net/sw/flow-tools/
收集器是 ng_flow,启动于
/usr/sbin/ngctl mkpeer ipfw: netflow 30 iface0
/usr/sbin/ngctl name ipfw:30 netflow
/usr/sbin/ngctl msg netflow: setdlt {iface=0 dlt=12}
/usr/sbin/ngctl msg netflow: setifindex {iface=0 index=5}
/usr/sbin/ngctl msg netflow: settimeouts {inactive=15 active=150}
/usr/sbin/ngctl mkpeer netflow: ksocket export inet/dgram/udp
/usr/sbin/ngctl msg netflow:export connect inet/127.0.0.1:9995
以及 ipfw 规则:
02750 59239017674 33111253913522 ngtee 30 ip from any to any via em0
使用 flow_fanout 为 flow_capture 导出。
# ps axww | grep flow
15106 ?? Ss 2:50,08 /usr/local/bin/flow-fanout -p /var/run/flow-capture/flow-fanout.pid 127.0.0.1/0.0.0.0/9995 127.0.0.1/127.0.0.1/9556
16367 ?? Ss 11:28,63 /usr/local/bin/flow-capture -n 95 -N 3 -z 5 -S 5 -E270G -w /var/netflow -p /var/run/flow-capture/flow-capture.pid 127.0.0.1/0.0.0.0/9556
由于我不知道的原因,日志中报告了 flow_capture :
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=103.247.29.1 d_ver=5 pkts=1 flows=30 lost=0 reset=0 filter_drops=0
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=116.115.58.13 d_ver=5 pkts=1 flows=30 lost=0 reset=0 filter_drops=0
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=186.85.188.1 d_ver=5 pkts=1 flows=30 lost=0 reset=0 filter_drops=0
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=186.84.72.1 d_ver=5 pkts=2 flows=60 lost=480 reset=0 filter_drops=0
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=186.85.212.1 d_ver=5 pkts=1 flows=30 lost=0 reset=0 filter_drops=0
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=190.149.28.1 d_ver=5 pkts=2 flows=60 lost=0 reset=0 filter_drops=0
Mar 27 10:20:00 rubin flow-capture[16367]: STAT: now=1364358000 startup=1364227269 src_ip=127.0.0.1 dst_ip=190.149.4.1 d_ver=5 pkts=1 flows=30 lost=0 reset=0 filter_drops=0
....
Mar 27 10:25:00 rubin flow-capture[16367]: STAT: now=1364358300 startup=1364227269 src_ip=127.0.0.1 dst_ip=0.0.0.0 d_ver=5 pkts=8253374 flows=246879659 lost=71012 reset=0 filter_drops=0
....
Mar 27 10:25:28 rubin flow-fanout[15106]: ftpdu_seq_check(): src_ip=127.0.0.1 dst_ip=0.0.0.0 d_version=5 expecting=895162410 received=895162440 lost=30
我不明白:为什么所有这些都在这里?
我没有关于 190.149.4.1 和 186.85.212.1 等 IP 的任何配置。
此外,flow_fanout 和 flow_capture 都消耗越来越多的内存。上次我重新启动这些守护进程之前,内存消耗量约为 3Gb。
请帮我解决日志中这个奇怪的 IP。我配置错误了吗?还是这是一个已知的错误?
更新:我关于 flow_capture 日志的问题措辞不当。再试一次:
在我的其他具有类似 flow_capture 配置的服务器上,我在日志中看到每 15 分钟只有一条记录:
Mar 28 08:55:00 flow-capture[45410]: STAT: now=1364439300 startup=1356501324 src_ip=127.0.0.1 dst_ip=127.0.0.1 d_ver=5 pkts=41948436 flows=1256544938 lost=0 reset=0 filter_drops=0
查看dst_ip=127.0.0.1。
当我使用相同的配置返回到我的第一台服务器时,我在日志中看到
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=65.121.97.1 d_ver=5 pkts=1 flows=30 lost=0 reset=0 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=255.127.0.0 d_ver=5 pkts=1458 flows=43711 lost=21989 reset=1395 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=109.112.100.32 d_ver=5 pkts=446 flows=13380 lost=15933 reset=401 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=12.79.228.1 d_ver=5 pkts=4 flows=120 lost=0 reset=3 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=105.110.100.44 d_ver=5 pkts=465 flows=13950 lost=16443 reset=411 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=8.0.0.0 d_ver=5 pkts=88 flows=2611 lost=210 reset=85 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=82.111.119.115 d_ver=5 pkts=449 flows=13412 lost=11044 reset=409 filter_drops=0
Mar 28 09:05:00 rubin flow-capture[16367]: STAT: now=1364439900 startup=1364227269 src_ip=127.0.0.1 dst_ip=0.0.0.0 d_ver=5 pkts=14965070 flows=447566910 lost=130355 reset=0 filter_drops=0
查看所有这些 dst_ip,例如 8.0.0.0。它看起来像是错误或配置错误。但我不知道如何修复它。
答案1
几年前BSD 0.68 版本内存泄漏问题,但我不知道从那时起这些问题是否已经得到修复。
我确实注意到您使用的 -E 标签的数字非常大。如果您尝试使用更小的数字(例如 -E1M),并且内存占用量仍然可控,我倾向于将内存使用问题归咎于此。
我不确定你在另一个问题中问的是什么。它可能只是匹配所有端点为 127.0.0.1 的会话吗?
编辑:我想我现在明白你的意思了。如果是 NetFlow v9,我会说可能存在模板错误(这可能导致从结构中读取错误的字节),但我还没有遇到过 NetFlow v5 的情况。我认为有四种可能性:
- flow_capture 错误地报告了它收到的内容
- flow_fanout 以某种方式破坏了它所中继的流量
- 你的 NetFlow 导出器首先错误地报告了流量
- 您的网络上存在某种(恶意?)应用程序向随机 IP 地址打开会话。
我会使用 Wireshark 之类的数据包捕获实用程序来检查 NetFlow 记录,并确保它们被 flow_fanout 正确中继并在命令行上正确报告。不过,我从未遇到过 flow_fanout 这样的问题,所以我个人会考虑 #3。您可以下载许多免费的流量导出器来同时运行,并与当前导出器的输出进行比较。