Назад | Перейти на главную страницу

Утечка памяти в flow_fanout flow_capture. И странный ip в выводе flow_capture

В моем ящике freebsd:

#uname -rimp
9.1-STABLE amd64 amd64 GENERIC

flow_tools:

> 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

Я не могу понять: зачем все это здесь?

У меня нет никаких конфигураций по поводу ips типа 190.149.4.1 и 186.85.212.1 и любых других.

Также flow_fanout и flow_capture съедают все больше и больше памяти. В прошлый раз, прежде чем я перезапустил этих демонов, было около 3 Гб памяти.

Помогите пожалуйста с этим странным ips в логах. Я неправильно сконфигурировал? Или это известная ошибка?

UPD: Мои вопросы о логах 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. Похоже на ошибку или неправильную конфигурацию. Но я не знаю, как это исправить.

Несколько лет назад было жалобы на утечки памяти под BSD в 0.68, но я не знаю, были ли они исправлены с тех пор.

Я заметил, что вы используете тег -E с очень большим числом. Если вы попробуете использовать что-то гораздо меньшее (скажем, -E1M), и объем памяти останется под контролем, я буду склонен винить в этом использование памяти.

Я не уверен, что вы задаете в своем другом вопросе. Может быть, это просто совпадение со всеми сеансами, для которых одна конечная точка - 127.0.0.1?

Изменить: я думаю, что понимаю, что вы сейчас говорите. Если бы это был NetFlow v9, я бы сказал, что это вероятная ошибка шаблона (которая может привести к считыванию неправильных байтов из структуры), но я не встречал этого для NetFlow v5. Я полагаю, есть четыре возможности:

  1. flow_capture неверно сообщает о том, что получает
  2. flow_fanout каким-то образом искажает потоки, которые он передает
  3. ваш экспортер NetFlow в первую очередь неверно сообщает о трафике
  4. в вашей сети есть какое-то (вредоносное?) приложение, открывающее сеансы на случайные IP-адреса.

Я бы использовал утилиту захвата пакетов, такую ​​как Wireshark, чтобы проверить записи NetFlow и убедиться, что они правильно ретранслируются flow_fanout и правильно сообщаются в командной строке. Однако у меня никогда не было такой проблемы с flow_fanout, поэтому я бы лично посмотрел на №3. Есть ряд бесплатных экспортеров, которые вы можете загрузить, чтобы работать вместе и сравнивать с тем, что выходит из вашего текущего экспортера.