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/255ngctl -f- <<-SEQ
mkpeer ${ext_if}: tee lower right
name ${ext_if}:lower ext_tee
connect ${ext_if}: ext_tee: upper leftmkpeer ${int_if}: tee lower right
name ${int_if}:lower int_tee0
connect ${int_if}: int_tee0: upper leftmkpeer ${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 netflowconnect 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 iface5mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/127.0.0.1:6667
SEQ
------------------------------------------------------------------------В результате трафик двоит.. подозреваю, что из-за использования tee
В 6.0 появился out но как переписать - ниасилил :((Помогите поправить - голову сломал :\
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
>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?
для одного интерфейса - достаточно просто исправить vlan0 на имя твоего интерфейса
остальные нужно будет подключать к хуку netflow
>для одного интерфейса - достаточно просто исправить vlan0 на имя твоего интерфейса
>
>остальные нужно будет подключать к хуку netflowмм.. опять же картина в голове следующая (может и ошибаюсь):
мне нужно учитывать трафик для юзеров в сети int_if.. нужно ли подключать остальные к хуку netflow? Предположил, что на интерфейсе int_if будут пакеты от ext_if на int и от serv_if на int, соответственно и в обратную сторону.. Или всё-таки я не понял принцип?
З.Ы.: можно пример, как подключить интерфейс к хуку?
если тебе надо считать траф тока на интерфейсе int_if - просто заменять в моем примере vlan0 на свой физический интерфейс
тока вот есть 1 НО! если у тебя перед интерфейсом стоит nat - у тебя статистика ваще не информативная будет.
Статистика будет показывать не реального отправителя пакета,а уже транслированый адрес, т.е. IP inf_if.
Так что при таком раскладе надо будет либо юзать ng_nat+ng_ipfw,либо собирать статистику с других интерфейсов.
Смотри ссылку,которую я дал выше. Там это все подробно расписано и обсосано во всех вариациях!
>если тебе надо считать траф тока на интерфейсе 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.
Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат. Спасибо!
>>если тебе надо считать траф тока на интерфейсе 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.
>
> Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат.
>Спасибо!
Заработало! :)
>> Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат.
>>Спасибо!
>
>
>Заработало! :)
Теперь задачка несколько изменилась. На внутреннем интерфейсе создано несколько 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`
donengctl -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:6667SEQ
---------------------
Подскажите, кто знает, можно ли такую конструкцию применять?
>>> Хорошо, попробую считать только на одном интерфейсе - потом сообщу результат.
>>>Спасибо!
>>
>>
>>Заработало! :)
>
>
>Теперь задачка несколько изменилась. На внутреннем интерфейсе создано несколько 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
>
>---------------------
> Подскажите, кто знает, можно ли такую конструкцию применять?
Неужели никто не сталкивался?? :\
>> Подскажите, кто знает, можно ли такую конструкцию применять?
>
>
>Неужели никто не сталкивался?? :\
использую нат и вот такую конструкцию: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 12natd -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}
;;
>>> Подскажите, кто знает, можно ли такую конструкцию применять?
>>
>>
>>Неужели никто не сталкивался?? :\
>
>
>использую нат и вот такую конструкцию:
>
>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'ы размножить конфигу :(