Jump to content

Recommended Posts

Posted

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

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

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

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

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

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

Posted

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

Posted

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

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

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

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

 

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

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

Posted

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

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

Posted

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

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

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

Posted

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

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

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

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

 

 

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

 

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

Posted

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

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

Posted

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

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

Прелестно.

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

Posted

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

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

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

 

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

Posted

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

Posted

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

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

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

Posted

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

Posted

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

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

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

 

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

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

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

Posted

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

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

Posted

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

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

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

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

Posted

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.