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

Исходное сообщение
"FreeBSD+pf+подсчёт траффика по локальным IP"

Отправлено kam , 08-Дек-06 10:26 
Добрый день всем!

Есть шлюз на FreeBSD 5.5-STABLE. На внешнем интерфейсе несколько адресов. Внутренние адреса разбиты на группы. Каждая группа транслируется в свой внешнй IP-адрес. Планирую перейти с ipfw на pf. Подскажите пожалуйста какими средствами, в этом случае, можно реализовать подсчёт траффика по локальным IP.
В идеале хотелось-бы получить информацию о траффике в следующем формате:

TIME SRC-IP SRC-PORT DST-IP DST-PORT BYTES ALIAS

где один из IP-адресов принадлежт локальной сети, а другой - внешней. ALIAS - адрес, в который транслируется локальный IP.

Спасибо!


Содержание

Сообщения в этом обсуждении
"FreeBSD+pf+подсчёт траффика по локальным IP"
Отправлено Graf , 08-Дек-06 14:46 
Очень рекомендую использовать следующую схему.
на каждый интерфейс вешаешь по коллектору
#Example change rl0 & rl1
/usr/local/sbin/cnupm -p -a 1 -i rl0
/usr/local/sbin/cnupm -p -a 1 -i rl1
и затем по cron
запускаешь скрипт
#!/bin/sh

IF0='rl0'
IF1='rl1'


####### Rotate $IF0  ##########

if [ -f /var/cnupm/cnupm-$IF0.pid  ]; then
    kill -HUP `cat /var/cnupm/cnupm-$IF0.pid`
    sleep 1
    if [ -f /var/cnupm/cnupm-$IF0.dump ]; then
        /usr/local/sbin/cnupmstat -B $IF0 > /var/log/$IF0.log
        rm /var/cnupm/cnupm-$IF0.dump
        echo "`/bin/date` $IF0 collected" >> /var/log/traf.log
    fi
fi

####### Rotate $IF1  ##########

if [ -f /var/cnupm/cnupm-$IF1.pid  ]; then
    kill -HUP `cat /var/cnupm/cnupm-$IF1.pid`
    sleep 1
    if [ -f /var/cnupm/cnupm-$IF1.dump ]; then
        /usr/local/sbin/cnupmstat -B $IF1 > /var/log/$IF1.log
        rm /var/cnupm/cnupm-$IF1.dump
        echo "`/bin/date` $IF1 collected" >> /var/log/traf.log
    fi
fi
и после выполнения данного скрипта имеешь в файлах
/var/log/имя_интерфейса.log
следующий формат
DATE TIME RC-IP SRC-PORT DST-IP DST-PORT PROTO BYTES


"FreeBSD+pf+подсчёт траффика по локальным IP"
Отправлено lucas12 , 14-Дек-06 14:37 
>Очень рекомендую использовать следующую схему.
>на каждый интерфейс вешаешь по коллектору
>#Example change rl0 & rl1
>/usr/local/sbin/cnupm -p -a 1 -i rl0
>/usr/local/sbin/cnupm -p -a 1 -i rl1
>и затем по cron
>запускаешь скрипт
>#!/bin/sh
>
>IF0='rl0'
>IF1='rl1'
>
>
>####### Rotate $IF0  ##########
>
>if [ -f /var/cnupm/cnupm-$IF0.pid  ]; then
>    kill -HUP `cat /var/cnupm/cnupm-$IF0.pid`
>    sleep 1
>    if [ -f /var/cnupm/cnupm-$IF0.dump ]; then
>        /usr/local/sbin/cnupmstat -B $IF0 > /var/log/$IF0.log
>        rm /var/cnupm/cnupm-$IF0.dump
>        echo "`/bin/date` $IF0 collected" >> /var/log/traf.log
>    fi
>fi
>
>####### Rotate $IF1  ##########
>
>if [ -f /var/cnupm/cnupm-$IF1.pid  ]; then
>    kill -HUP `cat /var/cnupm/cnupm-$IF1.pid`
>    sleep 1
>    if [ -f /var/cnupm/cnupm-$IF1.dump ]; then
>        /usr/local/sbin/cnupmstat -B $IF1 > /var/log/$IF1.log
А почему бы так ненаписать?
Тогда будет ведь дописывать  данные а не перезаписывать?
/usr/local/sbin/cnupmstat -B $IF1 >> /var/log/$IF1.log
>        rm /var/cnupm/cnupm-$IF1.dump
>        echo "`/bin/date` $IF1 collected" >> /var/log/traf.log
>    fi
>fi
>и после выполнения данного скрипта имеешь в файлах
>/var/log/имя_интерфейса.log
>следующий формат
>DATE TIME RC-IP SRC-PORT DST-IP DST-PORT PROTO BYTES