LINUX.ORG.RU

Плох тот админ, что не написал своего биллинга.

Я когда то для pppoe + ulogd скрипт на перле писал.

sergej ★★★★★
()

Если просто считать, то ulogd не нужен.

у xl2tpd есть скрипт выполняемый при подъеме интерфейса и при его дауне. Там вставлять правила для подсчета и забирать их.

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

Если использовать freeradius, то как считать трафик не по имени пользователя(ибо оно одно для всех), а по ip клиента?

Так же хотелось бы НЕ использовать mysql.

Возможно ли это реализовать на freeradius?

Если что то работает на debian 6.

guyvernk
() автор топика
Ответ на: комментарий от vel

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

В случае со скриптами на поднятие интерфейса это затруднительно.

guyvernk
() автор топика
Ответ на: комментарий от sergej

По сути там отличий нет. Только более конфигурируемый лог.

guyvernk
() автор топика

Дополнение о том какая задача решается.

Использоваться это хочется как l2tp/ipsec сервер для телефонов. Потому PSK и логин-пасс общий для всех. Но хотелось бы получать статистику по использованию по айпишкам, группируя по провайдерам сотовой связи и так далее.

guyvernk
() автор топика
Ответ на: комментарий от guyvernk

Похоже придется делать так:

1. собирать лог Ulogd-acct

2. парсить его по крону и генерить csv с группированными данными, сам лог логротейтить.

3. на ppp-up и ppp-down сделать обновление sqldb базы с сопоставлением внешнего айпи с внутренним.

4. объединять инфу в один csv

правда есть подозрение что парсить лог придется почаще. Иначе если юзер дисконектнулся, то запись о нем будет удалена и соответственно внешнего айпишника не будет

guyvernk
() автор топика
Ответ на: комментарий от guyvernk

Я бы посмотрел в сторону nfacct. ulogd - это перенос трафика из ядра в юзерспейс, а для простого подсчета трафика это лишнее

Все равно придется использовать ppp-(up/down).

Или похакать xl2tpd на периодическую отсылку аккаунтинга через радиус.

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

хотелось бы получать статистику по использованию по айпишкам, группируя по провайдерам сотовой связи и так далее

netflow?

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

Никто не мешает брать из радиуса айпишник. Чем плох mysql? Ну используй постгрес или sqlite, фрирадиус вроде всех умеет.

Если хочется просто и тупо - да, используй ppp-down скрипт, там есть вся инфа. А что с ней делать уже тебе решать - пиши в базу, отправляй куда-то или еще что.

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

С фрирадиусом проблема такова.

В ppp у меня нет разных юзеров и айпишки раздаются самими ppp.

Если привязать ppp к радиусу для авторизации, то как описать в конфиге юзеров случай, что может быть один юзер, но с множеством айпишек? И как собирать инфу по трафику не по юзеру, а по внешнему айпишнику юзера?

И вообще умеет ли ppp отправлять радиусу внешний айпи подключившегося пользователя?

И можно ли настроить радиус так чтобы он сам выдавал внутренние айпишки для клиентов ppp из определенной подсети?

Например есть 2 юзера ppp - slow и hi со своими паролями. Клиент l2tp/ipsec при подключении в зависимости от используемого логина должен получить адрес из определенной подсети. Например slow из 192.168.101.0/24 а hi из 192.168.102.0.24. В итоге нужно собирать статистику по раздельным подключениям каждого из пользователей.

Например в течении часа пользователь slow был подключен с разных внешних 3 айпишек, а пользователь hi с 1 айпишки. Мне бы хотелось в результате получить табличку типа с данными за час.

user;external_ip;internal_ip;in;out

slow;211.23.23.23;192.168.101.1;1000;1000

slow;233.11.11.11;192.168.101.2;20000;1000

slow;213.22.222.22;192.168.101.1;10000;1000

hi;44.22.3.22;192.168.102.1;10000;1000000

Как настроить радиус чтобы с него можно было снять подобную информацию?

guyvernk
() автор топика
Ответ на: комментарий от guyvernk

Netflow делается из правила в иптаблес (-j ULOG вроде) плюс демон nfacctd или что-то в таком духе, делал несколько лет назад. При большом траффике грузит проц прилично.

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

Под 2.6.32-5 наверно можно собрать, хотя ХЗ.

freeradius много чего умеет. Единственное, что пока непонятно - может ли xl2tpd присылать апдейты аккаунтинга.

С другой стороны FR умеет присать аккаунтинг в базу, а скриптом по хрону можно обновлять эти данные.

Я не пробовал radius с ppp скрещивать, он у меня только для wifi.

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

может ли xl2tpd присылать апдейты аккаунтинга.

Он использует стандартный ppp. Так что может то же самое что обычный ppp через плагины.

Вот только что умеет ppp отправлять на радиус? Что то я как то особо нигде не нашел. Гуглмастери тут не особо помогает

guyvernk
() автор топика
Ответ на: комментарий от vel

Ну так я выше и написал как через костыли обьединять данные ulogd со if-up/down скриптами.

Но хотелось бы более элегантного решения.

guyvernk
() автор топика
Ответ на: комментарий от vel

юзер один, с мультиподключениями, и каждой сессии l2tp через ppp выдает первый свободный адрес из подсети

guyvernk
() автор топика
Ответ на: комментарий от guyvernk

юзер один, с мультиподключениями

А как вы собираетесь идентифицировать телефоны?

что умеет ppp отправлять на радиус?

ppp отправляет на RADIUS аутентификационные данные клиента. Тот должен ответить параметрами (адресом и т.п.). Если все нормально, соединение установлено, то они начинают обмениваться т.н. accounting-пакетами, ppp шлет сколько пользователь напользовал ресурсов. Про ip-адреса куда ходит пользователь ppp ничего не шлет, нужно собирать информацию чем-то другим

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

А нельзя тупо считать статистику по трафику между внешним ip твоего шлюза и внешними адресами? Без привязки к туннелям..

victorb ★★
()
Последнее исправление: victorb (всего исправлений: 1)
Ответ на: комментарий от victorb

имеется ввиду ipsec трафик между клиентами и сервером?

можно конечно но там оверхед зависит от нат-т и множественной инкапсуляции. там оверхеда процентов 5-8 вроде как.

ну для примерной статы сойдет конечно )))))

guyvernk
() автор топика
Ответ на: комментарий от guyvernk

По внешнему айпи

Еще раз перечитал тред и опять не понял, какая именно вам нужна статистика?

Судя по этому: «статистику по использованию по айпишкам, группируя по провайдерам сотовой связи» все-таки нужен netflow?

А вот судя по этому: «Мне бы хотелось в результате получить табличку типа с данными за час» - хватит и того что может дать радиус.

В общем, я бы первым делом сделал радиусом (или ppp такое умеет?) жесткую привязку внешнего ip к внутреннему, а потом уже можно хоть какую статистику собирать

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

По внешнему айпи

жесткую привязку внешнего ip к внутреннему

Хотя, блин, это же телефоны, у них же адрес будет плавать постоянно? Все, я окончательно запутался

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

Написал парсер. Вроде считает, но теперь проблема стала в другом.

Изза двойной инкапсуляции (l2tp/ipsec + nat-t) при скачке файла по http аплоад практически удваивается...

Хотя в принципе это конечно как бы и есть реальный трафик на интерфейсе внешнем, но с действительным трафиком внутри тоннеля мягко говоря он коррелирует слабо в плане аплоада. Чем мельче пакеты тем больше накладные расходы на передачу.

Хотя для моих целей более важен даунлоад, так что на этом и остановился.

Если кому то интересен код парсера могу куданить выкинуть

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