Jump to content
Калькуляторы

Идентифицировать PPPoE-абонента PPPoE-снупинг?

Есть сеть, в которой абоненты получают доступ по PPPoE.

Есть веб-сайты, на которых я бы хотел автоматически авторизовывать абонента (веб-сайты внутренние, например личный кабинет).

Не подскажите, как это можно сделать?

Навскидку это можно сделать, проверив список активных сессий (с BRAS или с биллинга) и найдя в нем IP-адрес посетителя. Но дергать на каждый запрос БД биллинга или BRAS по SNMP я бы не хотел.

Есть способ проще?

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Если брас cisco, то с помощью PBHK можно получить инфу о сессии прямо с браса через CoA.

Share this post


Link to post
Share on other sites

делаете онлайн-репликацию таблицы сессий бд радиуса на другой сервер

Тут минусом будет не столько то, что нужно БД дергать, сколько то, что информация не будет оперативной.

Даже если синхронизацию делать раз в 5 минут, за эти 5 минут один пользователь может отключиться, а на его IP-адрес подключится другой.

Не говоря уж о том, что иногда сессия подвисает, terminate не приходит и из БД запись удалится только по таймауту.

 

Если брас cisco, то с помощью PBHK можно получить инфу о сессии прямо с браса через CoA.

У меня SE100. Что такое РВНК? Возможно на Эриксоне есть аналог?

Share this post


Link to post
Share on other sites

У вас, как мне кажется, только один вариант - ходить за информацией о логине с указанным IP на сам БРАС(нужно курить CoA для SE100). Но это не избавляет вас от необходимости иметь где-то кэш базы с информацией о том какой логин в какому лицевому счету привязан.

И если рассуждать далеее, оказывается, что все равно придется кого-то дергать, либо БД, либо БРАС, что тоже достаточно "дорого", если дергать его при каждом обращении к странице, на которой требуется авторизация. Так что, кэш сессий все равно просится.

Share this post


Link to post
Share on other sites

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

Но я такого не делал и это мне кажется сложноватым.

Поэтому спрашиваю, может быть уже есть проверенное решение.

Share this post


Link to post
Share on other sites

делаете онлайн-репликацию таблицы сессий бд радиуса на другой сервер

Тут минусом будет не столько то, что нужно БД дергать, сколько то, что информация не будет оперативной.

Даже если синхронизацию делать раз в 5 минут, за эти 5 минут один пользователь может отключиться, а на его IP-адрес подключится другой.

Не говоря уж о том, что иногда сессия подвисает, terminate не приходит и из БД запись удалится только по таймауту.

 

 

почитайте что такое ОНЛАЙН репликация

 

по поводу повисших сессий - вообще пофиг, всё равно этот ip никто другой не займёт(а если ip раздаёт брас, а не радиус, то инфа в сессиях бд обновиться по acct start)

Share this post


Link to post
Share on other sites

почитайте что такое ОНЛАЙН репликация

Где можно прочитать про онайлн-репликацию Оракла?

Желательно за вменяемую цену.

Share this post


Link to post
Share on other sites

блин ну вы флудеры:

на пхп элементарно из $ip = $_SERVER['REMOTE_ADDR'] получаем ипешник пришедшего и 1 единственным запросом из БД биллинга выдираем что за абон, я так баланс абона на определённой страничке сайта показываю, на которой если зайти из сети провайдера он и отображается. писанины ровно на пару чашек кофе/сигарет...

Share this post


Link to post
Share on other sites

на пхп элементарно из $ip = $_SERVER['REMOTE_ADDR'] получаем ипешник пришедшего и 1 единственным запросом из БД биллинга выдираем что за абон

То есть у абонента в личном кабинете есть возможность подключиться в БД биллинга?

Прелестно.

А если абонент переподключился и этот IP назначен уже другому абоненту?

Share this post


Link to post
Share on other sites

почитайте что такое ОНЛАЙН репликация

Где можно прочитать про онайлн-репликацию Оракла?

Желательно за вменяемую цену.

 

Так как вам вся база ни к чему, то можно обойтись триггером к необходимой таблице, а дальше уже вызывать процедуру, которая будет писать в БД на другой машине. С Oracle не работал, так что, это всего лишь мои фантазии на тему. :)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Ну само собой, я примерно представляю, как это сделать. Но минусом будет то, что синхронизация будет происходить с какой-то периодичностью.

Как сделать репликацию в реальном времени без GoldenGate — я не представляю. Может быть srg555 расскажет.

Share this post


Link to post
Share on other sites

да и вообще если СУБД нормальная, а оракл много что умеет, то делается вьюха и из неё элементарно по айпишнику сразу хоть как звать хоть баланс хоть что угодно вытащить можно, даже триггеры не понадобятся

Share this post


Link to post
Share on other sites

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

Ну само собой, я примерно представляю, как это сделать. Но минусом будет то, что синхронизация будет происходить с какой-то периодичностью.

Как сделать репликацию в реальном времени без GoldenGate — я не представляю. Может быть srg555 расскажет.

 

Мы где-то друг друга не понимаем. О какой периодичности идет речь, если имеет место быть триггер, который выставляется на событие?

Пришел от БРАСа start - событие, update - событие, stop - событие, ну а дальше вам думать что с ними делать. Но это все опять же, если вдруг между Radius и БД нет кэша.

А подвисшие на БРАСе сессии не страшны, выше был комент по этому поводу.

Share this post


Link to post
Share on other sites

нужна прослойка между бд где хранить соотвествия ип-баланс ) и раз в 30 минут рефрешить инфу.

Share this post


Link to post
Share on other sites

Такие костыли есть потенциальная security-hole. Именно по этому серьезные проекты всегда спрашивают свою авторизацию.

Тут реальный риск потерять контроль над персональными данными. Не делайте этого.

Share this post


Link to post
Share on other sites

Именно по этому серьезные проекты всегда спрашивают свою авторизацию.

А почему тогда серьезные проекты не боятся делать сквозную авторизацию (OpenID и др.)?

Я не планирую предоставлять какую-то особо секретную информацию.

Это будет сводка (тариф, баланс) и связь с тех.поддержкой.

Share this post


Link to post
Share on other sites

А что мешает собссно сделать view, к которому дать доступ другому пользователю (ну чтобы не пускать сйты в БД биллинга напрямую)?

Или, если хочется - вариации на тему *RPC делать. С кешированием результата в memcached чтобы БД меньше напрягать (если она у вас нагружена).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this