ng_netflow для UTM5
-
- Сообщения: 41
- Зарегистрирован: Ср ноя 12, 2008 13:12
ng_netflow для UTM5
Господа поделитесь конфигом или подскажите как написать. Мне нужно собирать статистику в формате netflow с FreeBSD роутера. С правилами никак определиться не могу. Нужно чтобы считалось и входящий. и исходящий трафик. На сервере 2-е сетевые карты, одна на провайдера смотрит, другая в сеть. И еще нужно чтобы нетфлоу экспортировался на два сервера. Заранее большое спасибо
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
man ng_netflow имеет два примера. На этом форуме в разделе документации есть про нетграф, там рассмотрен сложный вариант учета через Ipfw. Выбирайте.
На два получателя - это или две ноды netflow, или ng_tee и два ng_ksocket, или samplicate.
Все примеры лучше разрисовать в виде графов. Так становится понятнее.
На два получателя - это или две ноды netflow, или ng_tee и два ng_ksocket, или samplicate.
Все примеры лучше разрисовать в виде графов. Так становится понятнее.
-
- Сообщения: 41
- Зарегистрирован: Ср ноя 12, 2008 13:12
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
Код: Выделить всё
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}
Трафик по сути считается правилами
00001 netgraph 1 ip from any to any via fxp0
00001 netgraph 1 ip from any to any via em0
-
- Сообщения: 41
- Зарегистрирован: Ср ноя 12, 2008 13:12
Написал такую штуку. Скажите это правильно? Трафик будет считаться корректно? или нужно для каждого интерфейса сделать???
Напомню что две сетевухи имеются. На одной висит провайдер. С ним поднято бгп. А на второй сетевухе висят сети. В выводе описана та сетевуха на которой висят сети:
Напомню что две сетевухи имеются. На одной висит провайдер. С ним поднято бгп. А на второй сетевухе висят сети. В выводе описана та сетевуха на которой висят сети:
Код: Выделить всё
#!/bin/sh
kldload ng_netflow
kldload ng_ether
kldload ng_tee
kldload ng_one2many
ngctl -f- <<-SEQ
mkpeer rl0: tee lower left
connect rl0: rl0:lower upper right
mkpeer rl0:lower one2many left2right many0
connect rl0:lower.left2right rl0:lower many1 right2left
name rl0:lower.right2left o2m
mkpeer o2m: netflow one iface0
name o2m:one netflow
mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/192.168.2.184:4444
такой вот скриптик, нужно только в одном месте поменять имя интерфейса и его порядковый номер по ifconfig -l, начиная с 1, ну и куда слать..
так снимается netflow на одном интерфейсе для входящего и исходящего трафика, в данном случае это wan-интерфейс, на который трафик со стороны своей сети попал после прохождения firewall'а.
работает уже не первый год, чуть больше 800мбит трафика проходит без проблем.
ну а на несколько машин - samplicate, либо из flow-tools flow-fanout, их ставить там, куда netflow экспортируется и уже оттуда отправлять куда надо и на сколько нужно машин.
так снимается 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 "${rcvar}=\${${rcvar}:-'NO'}"
ng_export=${ngnetflow_export:-"192.168.100.6:9996"}
ngnetflow_start() {
echo "Setup ng_netflow"
/usr/sbin/ngctl -f- <<-SEQ
mkpeer ${flow_if}: split lower mixed
name ${flow_if}:lower ${flow_if}_splitlow
mkpeer ${flow_if}_splitlow: netflow out iface1
name ${flow_if}_splitlow:out netflow
mkpeer netflow: split out1 in
name netflow:out1 splitup
connect splitup: ${flow_if}: mixed upper
connect splitup: netflow: out iface0
connect ${flow_if}_splitlow: netflow: in out0
msg netflow: setifindex { iface=1 index=${flow_if_idx} }
msg netflow: setifindex { iface=0 index=${flow_if_idx} }
msg netflow: settimeouts { inactive = ${inactive_timeout} active = ${active_timeout} }
mkpeer netflow: ksocket export inet/dgram/udp
# msg netflow:export bind inet/${ng_export}
msg netflow:export connect inet/${ng_export}
SEQ
}
ngnetflow_stop() {
/usr/sbin/ngctl -f- <<-SEQ
shutdown netflow:
SEQ
}
run_rc_command "$1"
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
вот пример:
В билинге есть
Класс трафика Интернет
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
попробовал утилитой сгенерить трафика
./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 откуда и куда ходит трафик интернет..
./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 писал(а):А зачем в биллинг слать исходячку? Имхо лишняя инфа и работа ядра, хаватит трафика на клиента.
самое интересное что пока тарифик считали через ndsad все работало.. на FreeBSD 7.1 i386 Xenon
однако обновили железо на CORE i7 и операционку FreeBSD 7.2 AMD64 с поддержкой приложений 32, то ndsad перестал работать.. решили собирать трафик нетфлоу но вот напоролись на какие то косяки нетфлоу
Код: Выделить всё
#!/bin/sh
kldload ng_netflow
kldload ng_ksocket
kldload ng_socket
kldload ng_ether
ngctl -f- <<-SEQ
mkpeer em1: netflow upper iface0
name em1:upper netflow
connect em1: netflow: lower out0
mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/x.x.x.x:9996
SEQ
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
На внешнем интерфейсе входящиего трафика всегда будет больше. Особенно, если в сторону клиента стоит шейпер.lancelot писал(а):kaa76 почему не верно считает... в билинг передаются данные на 5-10% больше чем скачано на самом деле
Часть траффика попадает на коллектор, но затем может дропаться.
Исходящий трафик сходится?
Можно попробовать поменять конфигурацию (NGM_NETFLOW_SETCONFIG по man ng_netflow):
ngctl msg netflow: setconfig "{iface=2 conf=11}"
Посмотреть кеш netflow можно командой
flowctl netflow show
Стоит попробовать сравнить содержимое кеша до тестовой передачи трафика через netflow и после. В качестве данных для передачи - пинги фиксированного размера
В это же время запустить tcpdump с записью в файл, и потом еще сравнить с его данными