LINUX.ORG.RU
ФорумAdmin

Linux + VPN_server + traffic_accounting via Mysql


0

0

Ищу такой софт (набор софта), который бы взаимодействовал с VPN-сервером (на данный момент юзаю pptpd), и складывал данные о траффике в mysql-базу (сервер одновременно обслуживает много клиентов, т.е. присутствует n-ное кол-во ppp интерфейсов и в базу надо кидать не номер интерфейса, а src_ip который присвоен клиенту на это и-фейсе).

Из того что пробовал: nacctd, как ни крути, максимум можно дампить один ppp интерфейс ipcad - Супер, удобный, легко конфигурится, но он считает траффик по интерфейсу, а не по ip (т.е. если pptpd использует подсеть 10.10.10.0/24, то в дампе ipca-а я не ивижу конкретных адресов, только 10.10.10.0

Вот пара - src-dst-ip по ipcad-у: 10.10.10.0 192.168.0.0 это в реале был запрос юзера 10.10.10.2 к прокси серверу 192.168.0.200. Т.е. делаем вывод, что ipcad дампит интерфейс (и обсчитывает) а не ip. Ну хорошо, ipcad мог бы меня выручить, если бы можно было pptpd научить клиенту васе всегда выдавать ppp5 а пете, ppp98. Короче в ipcad я тоже не знаю, что делать,

а задача вроде простая, учитывать траффик vpn-сессий =(

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

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

>просто в скрипте выборки из БД можно ассоциировать ip и login

В скрипте выборки из БД можно ассоциировать все, что угодно.

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

Это мне понятно, я так и делаю, но вот как сделать так, чтоб определённый юзер хватал определённый индекс для интерфейса ppp

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

>nacctd, как ни крути, максимум можно дампить один ppp интерфейс

Это ошибочное утверждение.

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

Тогда, если вам не трудно, приведите пример конфига, который бы смог делать дамп всех ppp интерфейсов, возможно это подностью решит мою проблему

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

>определённый юзер хватал определённый индекс для интерфейса ppp

У pppd есть опция -u. Но по-моему Вы фигней страдаете. Насколько я понял БД с пользователями у Вас уже есть, так поставьте RADIUS, свяжите с БД, и будет Вам счастье.

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

>поставьте RADIUS, свяжите с БД

Бд с юзерами пока нет, а может ли работать RADIUS+pptpd, из HOWTO я только находил настройку RADIUS+MPD+FREEBSD, может линк дадите...

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

>может ли работать RADIUS+pptpd

pptpd поднимает pppd (или я не прав?), а pppd может обращаться к RADIUS через radius plugin (строчка "plugin radius.so" в /etc/ppp/options) для аутентификации и учета. С SQL сервером могут работать GNUradius и FreeRadius. FreeRadius не пробовал, но видимо придется на него перейти, т.к. у GNUradius нет аутентификации по MSCHAPv2 которая требуется для MPPE шифрования. GNUradius связывается с SQL (MySQL, PostgreSQL) элементарно - в конфигурационном файле пишутся SQL запросы, т.е. не нужни внешние скрипты.

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

Хочешь, смейся, но у меня стоит тот, что по умолчанию.

Работает.

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

реальный мой
ipcad.conf:
-----------
capture-ports enable;
interface eth0 promisc;
rsh enable at 127.0.0.1;
rsh root@127.0.0.1 admin;
rsh admin@127.0.0.1 backup;
rsh admin@127.0.0.1;
rsh luser@127.0.0.1 deny;
rsh 127.0.0.1 view-only;
chroot = /tmp;
memory_limit = 1m;
dumpfile = ipcad.dump;
ttl = 3;
rsh timeout = 30;
--------------
eth0 - локалка, ppp0 - Инет.
Смотрю на eth0 а не на ppp0 потому что тоже вроде были какие-то козы с ним.
Лог парситься на предмет отсечения запросов типа local-net <-> local-net (т.е. хотя бы один запрос на(с) внешнего мира) простым скриптом на bash. Им же заноситься в базу.
Все дергается по крону раз в 3 минуты.
на гейте VPN+PGSql. (ну можно и мускул :) ).
Юзеры получают свой IP и NAT-ом ходят в Инет.

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

Решений существует множество, например, содаются правила iptables, с которых опять же скриптом по крону снимается количество прошедшего через них трафика с одновременным обнулением счетчиков и все это заносится в базу. Но, лично мое мнение, что гораздо красивее (да и проще), когда сам pppd, с определенным интервалом времени, сообщает RADIUS серверу информацию о соединении (время, трафик), а RADIUS кладет все это в базу. Кроме того, поверьте, такое решение надежней и более универсально (будет обсчитывать любое ppp соединение, напримет dialup или pppoe).

PS. Откуда этот заголовок темы взялся?

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

>сам pppd, с определенным интервалом времени, сообщает RADIUS серверу информацию о соединении (время, трафик), а RADIUS кладет все это в базу.

Получается для учёта траффика мне достаточно будет связки pptpd + pppd + mysql + radius?

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

>Получается для учёта траффика мне достаточно будет связки pptpd + pppd + mysql + radius?

В общем да, правда, некоторые предпочитают PostgreSQL.;)

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

>freeradius + pppd

Ищите по связке freeradius + sql. Еще я писал заметку про pppoe, ссылка на нее в эттом форуме, где-то страницу назад, тема "немного о pppoe", может пригодиться. Еще могу скинуть простенькую БД, но для postgresql и конфиг для gnuradius, правда не раньше понедельника (когда на работе появлюсь).

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

Спасибо, а то я в доках, манах вообще ничего не нашел с мускулом, только конфигурацию доступа к мускулу указал, а кто будет мне базу, таблицы создавать, должен быть файл с подобным содержимым... странно, вообще, как-то туговато идёт конфигурение =(

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

>а кто будет мне базу, таблицы создавать

А кто за Вас это сделает? Вам же лучше знать, какие данные Вам нужны. К томуже это не сложно. Оставьте свой email, в понедельник вышлю с пояснениями.

qwe ★★★
()

Всё, я разобрался! Слишком много намашнил в radiusd.conf =(. Порыскав в mail-list-ах по радиусу наткнулся на описание моего трабла:

>http://www.mail-archive.com/freeradius-users@lists.cistron.nl/msg21659.html

Если конкретно, то нужно оставить только то, что нужно в секциях

authorize { preprocess sql } authenticate { Auth-Type PAP { pap } }

А у меня было по-дефолту, мускул там конечно был, но...

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