LINUX.ORG.RU
ФорумAdmin

Кто как считает трафик?


0

0

Не спеша настраиваю сервер, который в перспективе должен стать шлюзом на ~200 клиентских машин. Получение интернета должно требовать минимум телодвижений со стороны пользователя (вставил кабель, получил адрес по dhcp и работаешь), без авторизаций, прописывания в разные места прокси, pptp и т.п.

Задался вопросом, чем умные люди собирают статистику по трафику?

Пока настроил squid+ipcad+sams.

ipcad и squid связаны великим самодельным костылем, написанным на коленке за 20 минут, к тому же на shell.

#!/bin/sh
net="192.168"
ttime=`rsh localhost sh ip acco | grep 'Accounting data saved'| awk '{print ($4)}'`
file=/var/lib/iptraf/tmp
log=/var/log/squid/access.log
rsh localhost clear ip accounting > /dev/null
rsh localhost show ip accounting checkpoint | grep $net > $file
strings=`sed -n '$=' $file`

for ((i=1; i<$strings; i++)); do
        parseme=`sed -n $i'p' $file`
        d=`echo $parseme | awk '{print ($1)}'| cut -c1-7`
        s=`echo $parseme | awk '{print ($2)}'| cut -c1-7`
        if [ "$s" == "$net" ]; then
                if [ "$d" != "$net" ]; then
                        echo $parseme | awk -v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1"/"$5,"-","DIRECT/"$1,"-")}'| sed '/\/0 /d' | sed 's/\/65535/\/other_ports /' | sed '/255.255.255.255\//d' >>$log
                fi
        else
                echo $parseme | awk -v vtime=$ttime '{print (vtime".000",1,$1,"TCP_MISS/200",$4,"CONNECT",$2"/"$6,"-","DIRECT/"$2,"-")}'| sed '/\/0 /d' | sed 's/\/65535/\/other_ports /' | sed '/255.255.255.255\//d' >>$log
        fi

done

Это не окончательный вариант, но заканчивать его, наверное, и не стоит. Он вроде как парсит статистику, насчитанную ipcad и пишет все в лог сквида, который читается sams'ом.

На первый взгляд удобно, через одну веб-морду можно и рулить редиректором, и смотреть статистику. Только расчеты похоже будут не очень точными.

Как можно реализовать эту задачу, чтобы оно было гибко, рационально и на свободном ПО?

Deleted

ttime=`rsh localhost sh ip acco | grep 'Accounting data saved'| awk '{print ($4)}'`

Дальше не читал

sdio ★★★★★
()

использую mysql, php,apache, squid. Логи сквида по cron парсятся в mysql а там уже при помощи php и apache вытаскиваются в виде статистики.Там еще много чего, бан по перебору с разрешением доступа некоторым лицам к некоторым ресурсам и т.д. Доволен, правда не всем, все руки не дойдут шероховатости напильничком подработать. С провайдером моим расхождение по причине того что его стата это 1=1000, у меня 1=1024. :-)

splinter ★★★★★
()
Ответ на: комментарий от splinter

А сквид работает прозрачно по всем портам, или каждому клиенту надо руками прописывать прокси?

Deleted
()

трафик считает свитч, но это ни кому не интерессно.

beastie ★★★★★
()

на примерно такой-же парк делал свою считалку а-ля ipcad + простенькая веб-морда, чтобы юзер мог ввести логин-пароль на доступ к интернету и заодно посмотреть статистику - в целом был доволен полученным результатом.

с парсом access.log для статистики не заморачивался - его статистика всё равно далека от истины. Посмотреть примерно сколько squid помог наэкономить - внешними тулзами и только админу.

Кстати, на 200 офисных пользователей экономия squid`а получается небольшой. (правда были забанены всякие фконтакте, одноклассники и прочии фишки и народу волей-неволей пришлось работать)

MKuznetsov ★★★★★
()

ipcad при потоке > 10mbit начинает терять трафик.
ipt_NETFLOW при 100mbit не теряет ни байта.

White_Mouse
()
Ответ на: комментарий от Deleted

каждому клиенту. У меня несколько подсетей.

splinter ★★★★★
()

Я использую iptables+php+mysql+perl

При запуске роутера надо дать следующие команды
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -F
$IPT -Z
$IPT -X
$IPT -t nat -F
$IPT -t nat -Z
$IPT -t nat -X
$IPT -N TRAFFIC_ETH0_IN;
$IPT -A INPUT -p ALL -d $ETH0_IP -i $ETH0 -j TRAFFIC_ETH0_IN;
$IPT -A TRAFFIC_ETH0_IN -j RETURN;
$IPT -N TRAFFIC_ETH0_OUT;
$IPT -A OUTPUT -p ALL -s $ETH0_IP -o $ETH0 -j TRAFFIC_ETH0_OUT;
$IPT -A TRAFFIC_ETH0_OUT -j RETURN;
# $IPT -t nat -A POSTROUTING -o $ETH0 -j SNAT --to-source $ETH0_IP;
$IPT -A FORWARD -p TCP --syn -j ACCEPT;
$IPT -A FORWARD -p TCP -i $ETH0 -o $ETH1 -m state --state ESTABLISHED,RELATED -j ACCEPT;
$IPT -A FORWARD -p TCP -j DROP;
$IPT -t filter -A FORWARD -p ALL -s $NET/24 -j DROP;

Для каждого компьютера следует выполнить:
$IPT -t filter -I FORWARD -p TCP -s $IP -m mac --mac-source $MAC -j ACCEPT;
$IPT -N $CHAIN_OUT;
$IPT -I FORWARD -p TCP -i $ETH1 -s $IP -m mac --mac-source $MAC -d ! $NET/24 -j $CHAIN_OUT;
$IPT -A $CHAIN_OUT -j RETURN;
$IPT -N $CHAIN_IN;
$IPT -I FORWARD -p TCP -i $ETH0 -d $IP -s ! $NET/24 -j $CHAIN_IN;
$IPT -A $CHAIN_IN -j RETURN

Если нет привязки по MAC-адресу, то следует выкинуть
-m mac --mac-source $MAC

Соответственно, каждые N минут записываем в базу значения (использую perl-скрипт) $CHAIN_OUT, $CHAIN_IN и обнуляем эти значения:
chomp (@X = grep s/TRAFFIC_//, `/usr/sbin/iptables -vxnL -Z`);
Скрипт разбирает переменную @X и сбрасывает данные в базу.

anonymous
()
Ответ на: комментарий от Nao

> Есть такая штука, netams. Правда настраивается тяжеловато.

И чего ж там тяжелого ??? тем более если делается рабочий сервер на 200+ клиентов, то нефиг использовать всякое самописное глюкавое г , надо использовать проверенный софт.

sasha999 ★★★★
()
Ответ на: комментарий от sasha999

> И чего ж там тяжелого ???

Я ставил под дебиан и не нашёл нормального деб-пакета. Собрал сам как умел (правда получилось коряво, но пойдёт).
Дефолтный init-скрипт надо править чтобы работал под дебиан. cgi-скрипты у меня так и не запахали (но признаюсь долго с ними не возился).
Был сегфолт при некорректном указании параметров mysql-базы. И много ещё каких-то мелких проблем которые требовали ручной обработки напильником.

Всё это было на Debian. На Gentoo у меня netams из ебилда встал как влитой:) Наверное на rpm-based дистрах тоже проблем меньше.

Своим постом я хотел сказать что "искаропки" врядли заработает.

Nao ★★★★★
()

Всем спасибо. Поставил netams из deb http://gq.net.ru/debian lenny main. За исключением пары косяков с недоконфигурировавшимися во время установки конфигами все взлетело почти из коробки и статистика попёрла. На первый взгляд ничего не теряется, в отличии от ipcad и ulog, который я не осилил. Буду разбираться.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.