alibek Опубликовано 31 января, 2014 · Жалоба Есть сеть, в которой абоненты получают доступ по PPPoE. Есть веб-сайты, на которых я бы хотел автоматически авторизовывать абонента (веб-сайты внутренние, например личный кабинет). Не подскажите, как это можно сделать? Навскидку это можно сделать, проверив список активных сессий (с BRAS или с биллинга) и найдя в нем IP-адрес посетителя. Но дергать на каждый запрос БД биллинга или BRAS по SNMP я бы не хотел. Есть способ проще? В голову также приходит способ завести второй радиус-сервер, который будет использоваться исключительно для отслеживания сессий, но это как-то сложновато. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
srg555 Опубликовано 31 января, 2014 · Жалоба делаете онлайн-репликацию таблицы сессий бд радиуса на другой сервер и бьёте селектами по ней. можно даже явно разместить таблицу в ram, чтоб не дёргать hdd Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bambuk Опубликовано 31 января, 2014 · Жалоба Если брас cisco, то с помощью PBHK можно получить инфу о сессии прямо с браса через CoA. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 31 января, 2014 · Жалоба делаете онлайн-репликацию таблицы сессий бд радиуса на другой сервер Тут минусом будет не столько то, что нужно БД дергать, сколько то, что информация не будет оперативной. Даже если синхронизацию делать раз в 5 минут, за эти 5 минут один пользователь может отключиться, а на его IP-адрес подключится другой. Не говоря уж о том, что иногда сессия подвисает, terminate не приходит и из БД запись удалится только по таймауту. Если брас cisco, то с помощью PBHK можно получить инфу о сессии прямо с браса через CoA. У меня SE100. Что такое РВНК? Возможно на Эриксоне есть аналог? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
StSphinx Опубликовано 31 января, 2014 · Жалоба У вас, как мне кажется, только один вариант - ходить за информацией о логине с указанным IP на сам БРАС(нужно курить CoA для SE100). Но это не избавляет вас от необходимости иметь где-то кэш базы с информацией о том какой логин в какому лицевому счету привязан. И если рассуждать далеее, оказывается, что все равно придется кого-то дергать, либо БД, либо БРАС, что тоже достаточно "дорого", если дергать его при каждом обращении к странице, на которой требуется авторизация. Так что, кэш сессий все равно просится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 31 января, 2014 · Жалоба Ну неплохим был бы вариант, когда радиус-трафик (между BRAS и биллингом) зеркалируется на вспомогательный радиус-сервер (работающий в режиме чтения) и с него снимается полезная информация. Но я такого не делал и это мне кажется сложноватым. Поэтому спрашиваю, может быть уже есть проверенное решение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
srg555 Опубликовано 31 января, 2014 · Жалоба делаете онлайн-репликацию таблицы сессий бд радиуса на другой сервер Тут минусом будет не столько то, что нужно БД дергать, сколько то, что информация не будет оперативной. Даже если синхронизацию делать раз в 5 минут, за эти 5 минут один пользователь может отключиться, а на его IP-адрес подключится другой. Не говоря уж о том, что иногда сессия подвисает, terminate не приходит и из БД запись удалится только по таймауту. почитайте что такое ОНЛАЙН репликация по поводу повисших сессий - вообще пофиг, всё равно этот ip никто другой не займёт(а если ip раздаёт брас, а не радиус, то инфа в сессиях бд обновиться по acct start) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 31 января, 2014 · Жалоба почитайте что такое ОНЛАЙН репликация Где можно прочитать про онайлн-репликацию Оракла? Желательно за вменяемую цену. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alkanaft Опубликовано 31 января, 2014 · Жалоба блин ну вы флудеры: на пхп элементарно из $ip = $_SERVER['REMOTE_ADDR'] получаем ипешник пришедшего и 1 единственным запросом из БД биллинга выдираем что за абон, я так баланс абона на определённой страничке сайта показываю, на которой если зайти из сети провайдера он и отображается. писанины ровно на пару чашек кофе/сигарет... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 31 января, 2014 · Жалоба на пхп элементарно из $ip = $_SERVER['REMOTE_ADDR'] получаем ипешник пришедшего и 1 единственным запросом из БД биллинга выдираем что за абон То есть у абонента в личном кабинете есть возможность подключиться в БД биллинга? Прелестно. А если абонент переподключился и этот IP назначен уже другому абоненту? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
StSphinx Опубликовано 31 января, 2014 · Жалоба почитайте что такое ОНЛАЙН репликация Где можно прочитать про онайлн-репликацию Оракла? Желательно за вменяемую цену. Так как вам вся база ни к чему, то можно обойтись триггером к необходимой таблице, а дальше уже вызывать процедуру, которая будет писать в БД на другой машине. С Oracle не работал, так что, это всего лишь мои фантазии на тему. :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alkanaft Опубликовано 31 января, 2014 · Жалоба возможность подключаться к базе есть у пхп скрипта, который аяксом отдаёт в случае успеха только цифру с балансом, а в случает переподключения у вас из базы ни чего не прилетит, попробуйте на практике и сами увидите Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 31 января, 2014 · Жалоба Так как вам вся база ни к чему, то можно обойтись триггером к необходимой таблице, а дальше уже вызывать процедуру, которая будет писать в БД на другой машине. Ну само собой, я примерно представляю, как это сделать. Но минусом будет то, что синхронизация будет происходить с какой-то периодичностью. Как сделать репликацию в реальном времени без GoldenGate — я не представляю. Может быть srg555 расскажет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alkanaft Опубликовано 31 января, 2014 · Жалоба да и вообще если СУБД нормальная, а оракл много что умеет, то делается вьюха и из неё элементарно по айпишнику сразу хоть как звать хоть баланс хоть что угодно вытащить можно, даже триггеры не понадобятся Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
StSphinx Опубликовано 31 января, 2014 · Жалоба Так как вам вся база ни к чему, то можно обойтись триггером к необходимой таблице, а дальше уже вызывать процедуру, которая будет писать в БД на другой машине. Ну само собой, я примерно представляю, как это сделать. Но минусом будет то, что синхронизация будет происходить с какой-то периодичностью. Как сделать репликацию в реальном времени без GoldenGate — я не представляю. Может быть srg555 расскажет. Мы где-то друг друга не понимаем. О какой периодичности идет речь, если имеет место быть триггер, который выставляется на событие? Пришел от БРАСа start - событие, update - событие, stop - событие, ну а дальше вам думать что с ними делать. Но это все опять же, если вдруг между Radius и БД нет кэша. А подвисшие на БРАСе сессии не страшны, выше был комент по этому поводу. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 31 января, 2014 · Жалоба нужна прослойка между бд где хранить соотвествия ип-баланс ) и раз в 30 минут рефрешить инфу. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 31 января, 2014 · Жалоба Такие костыли есть потенциальная security-hole. Именно по этому серьезные проекты всегда спрашивают свою авторизацию. Тут реальный риск потерять контроль над персональными данными. Не делайте этого. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 31 января, 2014 · Жалоба Именно по этому серьезные проекты всегда спрашивают свою авторизацию. А почему тогда серьезные проекты не боятся делать сквозную авторизацию (OpenID и др.)? Я не планирую предоставлять какую-то особо секретную информацию. Это будет сводка (тариф, баланс) и связь с тех.поддержкой. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 31 января, 2014 · Жалоба А что мешает собссно сделать view, к которому дать доступ другому пользователю (ну чтобы не пускать сйты в БД биллинга напрямую)? Или, если хочется - вариации на тему *RPC делать. С кешированием результата в memcached чтобы БД меньше напрягать (если она у вас нагружена). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...