ng_netflow для UTM5

Технические вопросы по UTM 5.0
orachimary
Сообщения: 41
Зарегистрирован: Ср ноя 12, 2008 13:12

ng_netflow для UTM5

Сообщение orachimary »

Господа поделитесь конфигом или подскажите как написать. Мне нужно собирать статистику в формате netflow с FreeBSD роутера. С правилами никак определиться не могу. Нужно чтобы считалось и входящий. и исходящий трафик. На сервере 2-е сетевые карты, одна на провайдера смотрит, другая в сеть. И еще нужно чтобы нетфлоу экспортировался на два сервера. Заранее большое спасибо

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

man ng_netflow имеет два примера. На этом форуме в разделе документации есть про нетграф, там рассмотрен сложный вариант учета через Ipfw. Выбирайте.
На два получателя - это или две ноды netflow, или ng_tee и два ng_ksocket, или samplicate.
Все примеры лучше разрисовать в виде графов. Так становится понятнее.

orachimary
Сообщения: 41
Зарегистрирован: Ср ноя 12, 2008 13:12

Сообщение orachimary »

Если не сложно, можешь поделиться конфигом. Очень буду признателен.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Код: Выделить всё

mkpeer ipfw: netflow 1 iface0
name ipfw:1 netflow
connect ipfw: netflow: 2 out0
mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/10.10.0.1:9996
msg netflow: setdlt {iface=0 dlt=12}
msg netflow: setifindex {iface=0 index=1001}
msg netflow: settimeouts {inactive=1 active=1}
Все отчеты сливаются на 10.10.0.1:9996, там стоит samplicate который разливает по нужным получателям.
Трафик по сути считается правилами
00001 netgraph 1 ip from any to any via fxp0
00001 netgraph 1 ip from any to any via em0

orachimary
Сообщения: 41
Зарегистрирован: Ср ноя 12, 2008 13:12

Сообщение orachimary »

Написал такую штуку. Скажите это правильно? Трафик будет считаться корректно? или нужно для каждого интерфейса сделать???
Напомню что две сетевухи имеются. На одной висит провайдер. С ним поднято бгп. А на второй сетевухе висят сети. В выводе описана та сетевуха на которой висят сети:

Код: Выделить всё

#!/bin/sh

kldload ng_netflow
kldload ng_ether
kldload ng_tee
kldload ng_one2many

ngctl -f- <<-SEQ
               mkpeer rl0&#58; tee lower left
               connect rl0&#58; rl0&#58;lower upper right
               mkpeer rl0&#58;lower one2many left2right many0
               connect rl0&#58;lower.left2right rl0&#58;lower many1 right2left
               name rl0&#58;lower.right2left o2m
               mkpeer o2m&#58; netflow one iface0
               name o2m&#58;one netflow
               mkpeer netflow&#58; ksocket export inet/dgram/udp
               msg netflow&#58;export connect inet/192.168.2.184&#58;4444

kaa76
Сообщения: 15
Зарегистрирован: Ср окт 18, 2006 23:42

Сообщение kaa76 »

такой вот скриптик, нужно только в одном месте поменять имя интерфейса и его порядковый номер по ifconfig -l, начиная с 1, ну и куда слать..
так снимается netflow на одном интерфейсе для входящего и исходящего трафика, в данном случае это wan-интерфейс, на который трафик со стороны своей сети попал после прохождения firewall'а.
работает уже не первый год, чуть больше 800мбит трафика проходит без проблем.

Код: Выделить всё

#!/bin/sh
. /etc/rc.subr


flow_if="vlan12"
flow_if_idx="4"
# man ng_netflow / time in seconds
active_timeout="60"
inactive_timeout="15"

name="ngnetflow"
rcvar=`set_rcvar`
start_cmd="ngnetflow_start"
stop_cmd="ngnetflow_stop"
load_rc_config $name
eval "$&#123;rcvar&#125;=\$&#123;$&#123;rcvar&#125;&#58;-'NO'&#125;"
ng_export=$&#123;ngnetflow_export&#58;-"192.168.100.6&#58;9996"&#125;

ngnetflow_start&#40;&#41; &#123;
  echo "Setup ng_netflow"
  /usr/sbin/ngctl -f- <<-SEQ
  mkpeer $&#123;flow_if&#125;&#58; split lower mixed
  name $&#123;flow_if&#125;&#58;lower $&#123;flow_if&#125;_splitlow

  mkpeer $&#123;flow_if&#125;_splitlow&#58; netflow out iface1
  name $&#123;flow_if&#125;_splitlow&#58;out netflow

  mkpeer netflow&#58; split out1 in
  name netflow&#58;out1 splitup

  connect splitup&#58; $&#123;flow_if&#125;&#58; mixed upper
  connect splitup&#58; netflow&#58; out iface0


  connect $&#123;flow_if&#125;_splitlow&#58; netflow&#58; in out0

  msg netflow&#58; setifindex &#123; iface=1 index=$&#123;flow_if_idx&#125; &#125;
  msg netflow&#58; setifindex &#123; iface=0 index=$&#123;flow_if_idx&#125; &#125;
  msg netflow&#58; settimeouts &#123; inactive = $&#123;inactive_timeout&#125; active = $&#123;active_timeout&#125; &#125;


  mkpeer netflow&#58; ksocket export inet/dgram/udp
#  msg netflow&#58;export  bind inet/$&#123;ng_export&#125;
  msg netflow&#58;export connect inet/$&#123;ng_export&#125;

SEQ
&#125;

ngnetflow_stop&#40;&#41; &#123;
  /usr/sbin/ngctl -f- <<-SEQ
    shutdown netflow&#58;
SEQ
&#125;

run_rc_command "$1"
ну а на несколько машин - samplicate, либо из flow-tools flow-fanout, их ставить там, куда netflow экспортируется и уже оттуда отправлять куда надо и на сколько нужно машин.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

kaa76 почему не верно считает... в билинг передаются данные на 5-10% больше чем скачано на самом деле

вот пример:

В билинге есть
Класс трафика Интернет
from x.x.x.x to 0.0.0.0
from 0.0.0.0 to х.x.x.x

т.е. считаем и входящий и исходящий

однако скачав файл с хоста 217.107.216.13
в детальной статистике есть записи
источник 217.107.216.13 получатель МОЙ БЕЛЫЙ ИП
источник 217.107.216.13 получатель МОЙ БЕЛЫЙ ИП
однако просуммировав и посмотрев на размер полученного файла и даннае билинга, видно, что данные не сходятся, в билинге количество принятых байт больше чем принято реально

P.S. в настройках bytes_in_kbyte=1024


сделал как у вас в примере
gateway-SS# ifconfig -l
em0 em1 lo0 disc0 vlan111 vlan254 vlan555 vlan556 vlan557 vlan558 ng1 ng3 ng4 ng8 ng13 ng16 ng22 ng23 ng27 ng33 ng35 ng36 ng37 ng39 ng41 ng42 ng44 ng47 ng50 ng52 ng56 ng60 ng65 ng66 ng73 ng78 ng81

нужно считать трафик на WAN , он же em1
flow_if="em1"
судя по ifconfig -l будет flow_if_idx="2"

куда копать?

options NETGRAPH
options NETGRAPH_PPTPGRE
options NETGRAPH_MPPC_ENCRYPTION
#options NETGRAPH_MPPC_COMPRESSION
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_SOCKET
options NETGRAPH_PPP
options NETGRAPH_VJC
options NETGRAPH_KSOCKET
options NETGRAPH_ETHER
options NETGRAPH_TEE
options NETGRAPH_CAR
options NETGRAPH_ONE2MANY
options NETGRAPH_RFC1490
options NETGRAPH_IPFW
options LIBALIAS
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_SPLIT
options NETGRAPH_TCPMSS
options NETGRAPH_TTY
options NETGRAPH_UI

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

попробовал утилитой сгенерить трафика
./utm5_flowgen -h 192.168.1.5 -c 10 -s 77.77.77.77 -d 84.254.238.1 -b 1024


записи появились как надо...
10 записей по 1024 байта

билинг считает правильно

т.е. ХДЕТО косяк в ng_netflow

в нете много примеров про нетфлов...
кто нить подскажите рабочую версию сбора трафика
с WAN интерфейса em1 откуда и куда ходит трафик интернет..

Slad
Сообщения: 210
Зарегистрирован: Сб мар 26, 2005 14:52

Сообщение Slad »

А зачем в биллинг слать исходячку? Имхо лишняя инфа и работа ядра, хаватит трафика на клиента.

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

Slad писал(а):А зачем в биллинг слать исходячку? Имхо лишняя инфа и работа ядра, хаватит трафика на клиента.
это вопрос не принципиальный... считаем и всё тут..
самое интересное что пока тарифик считали через ndsad все работало.. на FreeBSD 7.1 i386 Xenon

однако обновили железо на CORE i7 и операционку FreeBSD 7.2 AMD64 с поддержкой приложений 32, то ndsad перестал работать.. решили собирать трафик нетфлоу но вот напоролись на какие то косяки нетфлоу

Slad
Сообщения: 210
Зарегистрирован: Сб мар 26, 2005 14:52

Сообщение Slad »

Код: Выделить всё

#!/bin/sh

kldload ng_netflow
kldload ng_ksocket
kldload ng_socket
kldload ng_ether

ngctl -f- <<-SEQ
 mkpeer em1&#58; netflow upper iface0
 name em1&#58;upper netflow
 connect em1&#58; netflow&#58; lower out0
 mkpeer netflow&#58; ksocket export inet/dgram/udp
 msg netflow&#58;export connect inet/x.x.x.x&#58;9996
SEQ
льется все что ушло на клиента через em1

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

Slad учитывать нужно как входящий так и исходящий трaфик через em1

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Core i7 и FreeBSD AMD64? Я все правильно понял? Такая связка жизнеспособна?

lancelot
Сообщения: 248
Зарегистрирован: Вс янв 23, 2005 16:28

Сообщение lancelot »

еще как жизнеспособна ;)
это PPTP сервер

littlesavage
Сообщения: 120
Зарегистрирован: Вс ноя 22, 2009 02:41
Откуда: Чебоксары

Сообщение littlesavage »

lancelot писал(а):kaa76 почему не верно считает... в билинг передаются данные на 5-10% больше чем скачано на самом деле
На внешнем интерфейсе входящиего трафика всегда будет больше. Особенно, если в сторону клиента стоит шейпер.
Часть траффика попадает на коллектор, но затем может дропаться.

Исходящий трафик сходится?

Можно попробовать поменять конфигурацию (NGM_NETFLOW_SETCONFIG по man ng_netflow):
ngctl msg netflow: setconfig "{iface=2 conf=11}"

Посмотреть кеш netflow можно командой
flowctl netflow show

Стоит попробовать сравнить содержимое кеша до тестовой передачи трафика через netflow и после. В качестве данных для передачи - пинги фиксированного размера
В это же время запустить tcpdump с записью в файл, и потом еще сравнить с его данными

Закрыто