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

Исходное сообщение
"MRTG и локальный трафик"

Отправлено Cvieri , 20-Окт-09 19:10 
Есть роутер на Убунте с 2-мя сетевухами. Одна - в интернет, вторая - в локальную сеть. Есть ли возможность снимать трафик на роутере посредством MRTG для каждой локальной машины? Или есть другой способ?

Содержание

Сообщения в этом обсуждении
"MRTG и локальный трафик"
Отправлено Grey , 20-Окт-09 19:14 
>Есть роутер на Убунте с 2-мя сетевухами. Одна - в интернет, вторая
>- в локальную сеть. Есть ли возможность снимать трафик на роутере
>посредством MRTG для каждой локальной машины? Или есть другой способ?

Есть возможность создать правила в фаерволе типа count для каждой машины, скриптом выгребать данные из счётчиков этих правил и скармливать mrtg ....
Как именно это в убунте - х.з., на фре очень просто делается если используется ipfw (из личного опыта)


"MRTG и локальный трафик"
Отправлено zippo , 20-Окт-09 23:37 
>Есть роутер на Убунте с 2-мя сетевухами. Одна - в интернет, вторая
>- в локальную сеть. Есть ли возможность снимать трафик на роутере
>посредством MRTG для каждой локальной машины? Или есть другой способ?

пишите правила для iptables и снимаете данные по счетчикам.
для примера input через все интерфейсы можем снять таким образом

iptables -nvxL | grep INPUT | awk '{ print $7 }'

получим значение в байтах.


"MRTG и локальный трафик"
Отправлено sonkilla , 21-Окт-09 09:04 
>>Есть роутер на Убунте с 2-мя сетевухами. Одна - в интернет, вторая
>>- в локальную сеть. Есть ли возможность снимать трафик на роутере
>>посредством MRTG для каждой локальной машины? Или есть другой способ?
>
>пишите правила для iptables и снимаете данные по счетчикам.
>для примера input через все интерфейсы можем снять таким образом
>
>iptables -nvxL | grep INPUT | awk '{ print $7 }'
>
>получим значение в байтах.

незнаю как во фре а в линухе при снятии с фаира данных есть много проблем лучше посмотреть в сторону netflow(что чуть посложней) или pmacctd+mrtg
как то уже писал в форуме как это реализовать с помощью pmacctd вот это сообщение

для начала ставим pmacct (в нете много ссылок на сырцы его) далее в директории с mrtg(или еще куда) создаем файлик и даем ему права на исполнение пусть он будет называться forward в него пишем

!/bin/sh
host=$1
unset IN
unset OUT

OUT=`/usr/local/bin/pmacct -c src_host -p /tmp/pmacct_out.pipe -N $host`
IN=`/usr/local/bin/pmacct -c dst_host -p /tmp/pmacct_in.pipe -N $host`

echo $IN
echo $OUT
echo 0

далее настраиваем сам pmacctd

вот конфиг его тоже в директории mrtg

cat pma.conf
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!pmacct configuration example!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
daemonize: true
interface: eth0
plugins: memory[in], memory[out]

aggregate[out]: src_host
aggregate[in]: dst_host
aggregate_filter[out]: src net 192.168.0.0/24
aggregate_filter[in]: dst net 192.168.0.0/24
imt_path[out]: /tmp/pmacct_out.pipe
imt_path[in]: /tmp/pmacct_in.pipe
!
! plugin_pipe_size: 1024000
! plugin_buffer_size: 1024
networks_file: /etc/mrtg/networks.txt

далее создадим конфиг сетей
cat networks.txt (хатя он в принцыпе ненужен так как в конфиге pmacctd указана подсеть)
192.168.0.0/24


тереь настраиваем mrtg в его конфиге пишем для каждого айпи примерно следующие
Target[x]: `/etc/mrtg/forward 192.168.0.1`
Title[x]: x 192.168.0.1
PageTop[x]: <h1>x 192.168.0.1</h1>
и так далее для каждого юзера вместе x впишите данные пользователя
Теперь запустим в консоли  /usr/local/sbin/pmacctd -f /etc/mrtg/pma.conf а также запишем эту строчку в rc.local для втаматического запуска при загрузке
вроде все теперь перезупускаем mrtg лучше всего в мртг конфиге указать чтоб он запускался демоном также через cban либо через баш скрипты прорисовать графики по каждому интерфейсу типа Интеренет и локалка я делаю так
cat mrtgstat.eth0
#!/bin/bash
OUTPUT=`ifconfig eth0| grep bytes | awk {'print $2'}`
INPUT=`ifconfig eth0| grep bytes | awk {'print $6'}`
DATE=`date +%s`
NAME='eth0'
echo $INPUT
echo $OUTPUT
echo $DATE
echo $NAME
И так для каждого интерфейса
также замените подсети на свои в маем примере подсеть 0 .для тестирования попробуйте запустить скрипт ./forward ip (где ip один из адресов той подсети что слушает pmacctd) в ответ должно быть что то вроде этого
./forward 192.168.0.1
1006621911
4275531062
0
0

P.S Вроде все если что интересует спрашивайте помогу чем смогу данная связка работает отлично на 14 серверах и глюков замечено небыло