URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 71045
[ Назад ]

Исходное сообщение
"FreeBSD 6.0 + ng_netflow + tee :("

Отправлено asphix , 18-Дек-06 23:55 
FreeBSD 6.0
3 интерфейса. NAT'а нет.

нужно посчитать трафик в обоих направлениях. Делаю так:

#!/bin/sh

ext_if=fxp0 # 192.168.0.1/252
int_if=em0  # 10.101.0.1/248
serv_if=em1 # 10.101.1.1/255

       ngctl -f- <<-SEQ
               mkpeer ${ext_if}: tee lower right
               name ${ext_if}:lower ext_tee
               connect ${ext_if}: ext_tee: upper left

               mkpeer ${int_if}: tee lower right
               name ${int_if}:lower int_tee0
               connect ${int_if}: int_tee0: upper left

               mkpeer ${serv_if}: tee lower right
               name ${serv_if}:lower int_tee1
               connect ${serv_if}: int_tee1: upper left


               mkpeer ext_tee: netflow right2left iface0
               name ext_tee:right2left netflow

               connect ext_tee: netflow: left2right iface1
               connect int_tee0: netflow: left2right iface2
               connect int_tee0: netflow: right2left iface3
               connect int_tee1: netflow: left2right iface4
               connect int_tee1: netflow: right2left iface5

               mkpeer netflow: ksocket export inet/dgram/udp
               msg netflow:export connect inet/127.0.0.1:6667
SEQ
------------------------------------------------------------------------

В результате трафик двоит.. подозреваю, что из-за использования tee
В 6.0 появился out но как переписать - ниасилил :((

Помогите поправить - голову сломал :\


Содержание

Сообщения в этом обсуждении
"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено Lelik , 19-Дек-06 15:50 
mkpeer vlan0: tee lower right                      
connect vlan0: vlan0:lower upper left              
mkpeer vlan0:lower netflow right2left iface0      
name vlan0:lower.right2left netflow                
connect netflow: vlan0:upper iface1 left2right    
mkpeer netflow: ksocket export inet/dgram/udp      
msg netflow: settimeouts { inactive=10 active=10 }
msg netflow:export connect inet/IP_FOR_EXPORT:PORT

у меня вот так работает на 6.0.Ловит оба направления.
Переписывай под себя и радуйся жизни :)
PS
Очень познавательная тема форума про это:
http://forum.bestcom.ru/index.php?showtopic=15&st=0


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 19-Дек-06 21:03 
>mkpeer vlan0: tee lower right
>connect vlan0: vlan0:lower upper left
>mkpeer vlan0:lower netflow right2left iface0
>name vlan0:lower.right2left netflow
>connect netflow: vlan0:upper iface1 left2right
>mkpeer netflow: ksocket export inet/dgram/udp
>msg netflow: settimeouts { inactive=10 active=10 }
>msg netflow:export connect inet/IP_FOR_EXPORT:PORT
>
>у меня вот так работает на 6.0.Ловит оба направления.
>Переписывай под себя и радуйся жизни :)
>PS
>Очень познавательная тема форума про это:
>http://forum.bestcom.ru/index.php?showtopic=15&st=0

Тема знакома до ломоты в глазах.. там большинство примеров для 5 ветки :( Не удалось заставить работать :((

В твоём примере описана настройка для vlan0.. а как мне правильно описать для 3-х интерфесов? В моём случае нужно учитывать входящий и исходящий на int_if=em0  # 10.101.0.1/248 c ext_if и c serv_if

Достаточно-ли сделать в твоём примере исправить vlan0 на int_if если не используецца nat?


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено Lelik , 19-Дек-06 21:21 
для одного интерфейса - достаточно просто исправить vlan0 на имя твоего интерфейса
остальные нужно будет подключать к хуку netflow


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 19-Дек-06 23:47 
>для одного интерфейса - достаточно просто исправить vlan0 на имя твоего интерфейса
>
>остальные нужно будет подключать к хуку netflow

мм.. опять же картина в голове следующая (может и ошибаюсь):

мне нужно учитывать трафик для юзеров в сети int_if.. нужно ли подключать остальные к хуку netflow? Предположил, что на интерфейсе int_if будут пакеты от ext_if на int и от serv_if на int, соответственно и в обратную сторону.. Или всё-таки я не понял принцип?

З.Ы.: можно пример, как подключить интерфейс к хуку?


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено Lelik , 20-Дек-06 12:50 
если тебе надо считать траф тока на интерфейсе int_if - просто заменять в моем примере vlan0 на свой физический интерфейс
тока вот есть 1 НО! если у тебя перед интерфейсом стоит nat - у тебя статистика ваще не информативная будет.
Статистика будет показывать не реального отправителя пакета,а уже транслированый адрес, т.е. IP inf_if.
Так что при таком раскладе надо будет либо юзать ng_nat+ng_ipfw,либо собирать статистику с других интерфейсов.
Смотри ссылку,которую я дал выше. Там это все подробно расписано и обсосано во всех вариациях!

"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 20-Дек-06 14:52 
>если тебе надо считать траф тока на интерфейсе int_if - просто заменять
>в моем примере vlan0 на свой физический интерфейс
>тока вот есть 1 НО! если у тебя перед интерфейсом стоит nat
>- у тебя статистика ваще не информативная будет.
>Статистика будет показывать не реального отправителя пакета,а уже транслированый адрес, т.е. IP
>inf_if.
>Так что при таком раскладе надо будет либо юзать ng_nat+ng_ipfw,либо собирать статистику
>с других интерфейсов.
>Смотри ссылку,которую я дал выше. Там это все подробно расписано и обсосано
>во всех вариациях!


В том то и дело, что никакого ната нет и везде серые адреса.. Внешний интерфейс ext_if 192.168.0.1 смотрит в машину 192.168.0.2, на которой натом раздается инет(т.е. на ext_if приходит пакет уже оттранслированный обратно).

Нужно считать траф от контент-серверов(serv_if) и с инета (ext_if), который валится от/на юзеров в сетке int_if.

Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат. Спасибо!


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 29-Дек-06 12:03 
>>если тебе надо считать траф тока на интерфейсе int_if - просто заменять
>>в моем примере vlan0 на свой физический интерфейс
>>тока вот есть 1 НО! если у тебя перед интерфейсом стоит nat
>>- у тебя статистика ваще не информативная будет.
>>Статистика будет показывать не реального отправителя пакета,а уже транслированый адрес, т.е. IP
>>inf_if.
>>Так что при таком раскладе надо будет либо юзать ng_nat+ng_ipfw,либо собирать статистику
>>с других интерфейсов.
>>Смотри ссылку,которую я дал выше. Там это все подробно расписано и обсосано
>>во всех вариациях!
>
>
>В том то и дело, что никакого ната нет и везде серые
>адреса.. Внешний интерфейс ext_if 192.168.0.1 смотрит в машину 192.168.0.2, на которой
>натом раздается инет(т.е. на ext_if приходит пакет уже оттранслированный обратно).
>
> Нужно считать траф от контент-серверов(serv_if) и с инета (ext_if), который валится
>от/на юзеров в сетке int_if.
>
> Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат.
>Спасибо!


Заработало! :)


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 29-Дек-06 12:37 
>> Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат.
>>Спасибо!
>
>
>Заработало! :)


Теперь задачка несколько изменилась. На внутреннем интерфейсе создано несколько vlan-ов. Нужно посчитать трафик по ним.

Набросал предварительный вариант:

for i in vlan1 vlan2 vlan3 etc..
  do
  m=n+1
  ngctl -f-<<SEQ
   mkpeer $i: tee lower right                      
   connect $i: vlan0:lower upper left              
   mkpeer $i:lower netflow right2left iface$n      
   name $i:lower.right2left netflow                
   connect netflow: $i:upper iface$m left2right    
  n=`expr $n + 1`

SEQ

  n=`expr $n + 1`
done

ngctl -f-<<SEQ
mkpeer netflow: ksocket export inet/dgram/udp      
msg netflow: settimeouts { inactive=10 active=10 }
msg netflow:export connect inet/127.0.0.1:6667

SEQ

---------------------
Подскажите, кто знает, можно ли такую конструкцию применять?


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 10-Янв-07 15:40 
>>> Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат.
>>>Спасибо!
>>
>>
>>Заработало! :)
>
>
>Теперь задачка несколько изменилась. На внутреннем интерфейсе создано несколько vlan-ов. Нужно посчитать
>трафик по ним.
>
> Набросал предварительный вариант:
>
>for i in vlan1 vlan2 vlan3 etc..
>  do
>  m=n+1
>  ngctl -f-<<SEQ
>   mkpeer $i: tee lower right
>   connect $i: vlan0:lower upper left
>   mkpeer $i:lower netflow right2left iface$n
>   name $i:lower.right2left netflow
>   connect netflow: $i:upper iface$m left2right
>  n=`expr $n + 1`
>
>SEQ
>
>  n=`expr $n + 1`
> done
>
>ngctl -f-<<SEQ
>mkpeer netflow: ksocket export inet/dgram/udp
>msg netflow: settimeouts { inactive=10 active=10 }
>msg netflow:export connect inet/127.0.0.1:6667
>
>SEQ
>
>---------------------
> Подскажите, кто знает, можно ли такую конструкцию применять?


Неужели никто не сталкивался?? :\


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено PavelR , 10-Янв-07 15:59 
>> Подскажите, кто знает, можно ли такую конструкцию применять?
>
>
>Неужели никто не сталкивался?? :\


использую нат и вот такую конструкцию:

IFACE = внешний_интерфейс, на который делается нат.

                start|*)
                        kldload ng_netams > /dev/null 2>&1
                        kldload ng_ipfw >/dev/null 2>&1
                        ngctl mkpeer ipfw: netams 60 if_in
                        ngctl name ipfw:60 netams
                        ngctl connect netams: ipfw: if_out 61
                        ngctl msg netams: mode 2
                        ngctl msg netams: debug $DEBUG
                        ngctl msg netams: setdefault $DEFAULTPOLICY
                        ngctl msg netams: dlt 12

                        natd -a внешний.ип -u -s -m

                        ipfw add 020 drop all from any to not внешний.ип in via rl0
                        ipfw add 050 divert natd all from any to any in via ${IFACE}
                        ipfw add 060 netgraph 60 all from any to any in via ${IFACE}

                        ipfw add 080 netgraph 61 all from any to any out via ${IFACE}
                        ipfw add 090 divert natd all from any to any out via ${IFACE}
                        ;;


"FreeBSD 6.0 + ng_netflow + tee :("
Отправлено asphix , 11-Янв-07 11:41 
>>> Подскажите, кто знает, можно ли такую конструкцию применять?
>>
>>
>>Неужели никто не сталкивался?? :\
>
>
>использую нат и вот такую конструкцию:
>
>IFACE = внешний_интерфейс, на который делается нат.
>
>
>
>            
>    start|*)
>                        kldload ng_netams > /dev/null 2>&1
>                        kldload ng_ipfw >/dev/null 2>&1
>            
>          
> ngctl mkpeer ipfw: netams 60 if_in
>            
>          
> ngctl name ipfw:60 netams
>            
>          
> ngctl connect netams: ipfw: if_out 61
>            
>          
> ngctl msg netams: mode 2
>            
>          
> ngctl msg netams: debug $DEBUG
>            
>          
> ngctl msg netams: setdefault $DEFAULTPOLICY
>            
>          
> ngctl msg netams: dlt 12
>
>            
>          
> natd -a внешний.ип -u -s -m
>
>            
>          
> ipfw add 020 drop all from any to not внешний.ип
>in via rl0
>            
>          
> ipfw add 050 divert natd all from any to any
>in via ${IFACE}
>            
>          
> ipfw add 060 netgraph 60 all from any to any
>in via ${IFACE}
>
>            
>          
> ipfw add 080 netgraph 61 all from any to any
>out via ${IFACE}
>            
>          
> ipfw add 090 divert natd all from any to any
>out via ${IFACE}
>            
>          
> ;;


Спасибо за инфу, но это не совсем мне подходит.. у меня ни netams  ни nat не используется.. биллинг Stargazer + netflow module.

Нужно просто на vlan'ы размножить конфигу :(