roysbike Posted December 9, 2011 Posted December 9, 2011 Добрый день коллеги! Имеется в качестве bras-ов Freebsd 8.2 MPD5 pptp+pppoe . БД + freeradius. Трафик не считается. Подскажи, кто и как отслеживает в базе, что сессия online. И такой вопрос. 5 этих же bras-ов. На всех service name "pppoe.123" , Авторизация Login+Password+mac. Абонент подключен к серверу A. Так же он может подключится к серверу B. Каким образом можно ему запретить доступ. Acct? Вставить ник Quote
Alex/AT Posted December 9, 2011 Posted December 9, 2011 Если у Вас FreeRadius - делайте Session-Limit и чекалку в radcheck. Вставить ник Quote
Deac Posted December 9, 2011 Posted December 9, 2011 (edited) Подскажи, кто и как отслеживает в базе, что сессия online. NOW() < last_update + 2 * alive_time MPD5 Там есть своя WEB-морда, можно CURL-ом выбирать активные сессии. Каким образом можно ему запретить доступ. Проверять NAS-ID/NAS-IP Edited December 9, 2011 by Deac Вставить ник Quote
terrible Posted December 9, 2011 Posted December 9, 2011 Внимательно изучайте RADIUS протокол и мануал к фрирадиусу. Можно сделать так, что определённый абонент (или определённая группа абонентов) может подключаться только на определённый сервер получая определённые параметры (шейпинга, ACL и т.п.). PPPoE вы рулите настройкой тегерирования на узле, PPTP обычно прописано у абонента, так что имеенно там это и надо. Сессия online отслеживатется по наличию пустого поля accounting stop, вроде так называется в БД. Ну и по желанию выборки по client ip и другие параметры. Ещё настоятельно советую проработать перепроверку не MAC адреса, а ID свича при использовании фичи PPPoE circuit id insertion, гораздо более гибрая хрень. Ну и напоследок - убейте нахер PPTP, оставляйте только PPPoE, хоть и диагностируется несколько хуже, зато гораздо более удобная в плане распределения нагрузок между серваками. Вставить ник Quote
t00r Posted December 9, 2011 Posted December 9, 2011 По поводу веб морды - вот мой скрипт для мониторинга группы серверов на mpd5: <?php error_reporting(E_ALL & ~E_DEPRECATED); ini_set('display_errors',1); $vpn_url = array(); #$vpn_url[] = "172.28.200.4"; $vpn_url[] = "172.28.200.61"; $vpn_url[] = "172.28.200.62"; $vpn_url[] = "172.28.200.71"; $vpn_url[] = "172.28.200.72"; $all_pptp = 0; $all_l2tp = 0; foreach($vpn_url as $k => $v ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://$v:5006/"); curl_setopt($ch, CURLOPT_USERPWD, "admin:нутутвашпаролькоторыйвконфигеmpdуменяонединдлявсехбрасовтакжекакилогин"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt($ch, CURLOPT_HEADER, false); $out = curl_exec($ch); $count_pptp = count(explode('pptp', $out))-1; $count_l2tp = count(explode('l2tp', $out))-1; $count_sum = $count_pptp + $count_l2tp; $listing = str_replace("<H1>Multi-link PPP Daemon for FreeBSD</H1>\n<H2>Current status summary</H2>","<H2>VPN server $v ( pptp: $count_pptp + l2tp: $count_l2tp = $count_sum)</H2>",$out); $all_pptp = $all_pptp + $count_pptp; $all_l2tp = $all_l2tp + $count_l2tp; print $listing; curl_close($ch); } $all = $all_pptp+$all_l2tp; print "<br><h2>All: $all ALL pptp: $all_pptp, ALL l2tp: $all_l2tp</h2>"; ?> Вставить ник Quote
roysbike Posted December 9, 2011 Author Posted December 9, 2011 спасибо за подсказки. В будущем хотим съехать на pppoe. Балансирую с помощью DNS+ скрипты. Снимают по snmp нагрузку на интерфейсе и кидает на нужный сервер. Кому интересно могу выложить балансировку нагрузки с помощью DNS для pptp/lt2p. Вставить ник Quote
t00r Posted December 9, 2011 Posted December 9, 2011 1. не знаю как все, единого мнения тут никогда не будет - я в своей сети юзаю pptp ( для больных роутеров, которые л2 не знают ) и l2tp - лучше конечно уходить на ипое но денег на замену в поле железа нет 2. с помощью днс - да всё просто - пиши в днс несколько ипов для имени и всё - у меня есть имя в днс vpn.lan и l2tp.lan - там 4 ипа ( по конфигу ж видно ) - они по кругу роунд-робином и бегают - если чо-то отваливается, после 1-2 реконнектов юзер попадает на работающий брас Вставить ник Quote
roysbike Posted December 9, 2011 Author Posted December 9, 2011 (edited) как быть с PPPoE ?. Если пользовтель может подключится с одной учетки на разные брасы с разных компов и получить инет. ПО каком отребуту запрещать или отслеживать? Edited December 9, 2011 by roysbike Вставить ник Quote
Alex/AT Posted December 10, 2011 Posted December 10, 2011 (edited) У FreeRADIUS есть поддержка Session-Limit. Вот им и отслеживайте. В случае нетиповых BRAS'ов ещё придётся подпилить radcheck, но это задача достаточно тривиальная. Edited December 10, 2011 by Alex/AT Вставить ник Quote
Deac Posted December 10, 2011 Posted December 10, 2011 Сессия online отслеживатется по наличию пустого поля accounting stop, вроде так называется в БД. Не катит для "зависших" сессий. Вариант с неприходом двух ALIVE работает всегда. ПО каком отребуту запрещать или отслеживать? Говорю же - NAS-ID и/или NAS-IP. Вставить ник Quote
terrible Posted December 10, 2011 Posted December 10, 2011 Если пользовтель может подключится с одной учетки на разные брасы с разных компов и получить инет. Добавляйте перепроверку порта свича при авторизации Вставить ник Quote
roysbike Posted December 11, 2011 Author Posted December 11, 2011 Если пользовтель может подключится с одной учетки на разные брасы с разных компов и получить инет. Добавляйте перепроверку порта свича при авторизации на узле упроваляемый, в подьездах плоское железо Вставить ник Quote
terrible Posted December 11, 2011 Posted December 11, 2011 там, где присутствуют гирлянды тупарей - привязывайтесь к MAC-адресу, в нормальном случае авторизируйте по порту свича. Вставить ник Quote
roysbike Posted December 11, 2011 Author Posted December 11, 2011 там, где присутствуют гирлянды тупарей - привязывайтесь к MAC-адресу, в нормальном случае авторизируйте по порту свича. с маком то понятном. Не лучший вариант. Я вот толкьо не пойму как реализвоть по NAS-IP , в radcheck добавлять? и что? подключился он, потом отклбчился и на другой сервак, а там nas-ip другой уже/ Вставить ник Quote
Ilya Evseev Posted December 11, 2011 Posted December 11, 2011 подключился он, потом отклбчился и на другой сервак, а там nas-ip другой уже/ В sql-базе биллинга должно отслеживаться состояние клиента - подключен или нет. В таблице пользователей есть такое поле? Проверять/устанавливать значение sql-запросом из FreeRADIUS'а. У нас он для users.connected = 'YES' просто выдавал клиенту туннельный IP 127.0.0.1. Вставить ник Quote
Deac Posted December 12, 2011 Posted December 12, 2011 Я вот толкьо не пойму как реализвоть по NAS-IP Добавить проверку в Auth. В биллинге добавить таблицы "nases"(заносить сюда NAS-ID/NAS-IP) и "allowed_nases"(поабонентский список разрешённых NAS). Вставить ник Quote
roysbike Posted December 12, 2011 Author Posted December 12, 2011 (edited) подключился он, потом отклбчился и на другой сервак, а там nas-ip другой уже/ В sql-базе биллинга должно отслеживаться состояние клиента - подключен или нет. В таблице пользователей есть такое поле? Проверять/устанавливать значение sql-запросом из FreeRADIUS'а. У нас он для users.connected = 'YES' просто выдавал клиенту туннельный IP 127.0.0.1. биллинг самописный/ Можешь написать пример запроса. В доках перелыл не нашел. Edited December 12, 2011 by roysbike Вставить ник Quote
roysbike Posted December 12, 2011 Author Posted December 12, 2011 Я вот толкьо не пойму как реализвоть по NAS-IP Добавить проверку в Auth. В биллинге добавить таблицы "nases"(заносить сюда NAS-ID/NAS-IP) и "allowed_nases"(поабонентский список разрешённых NAS). Они у нас есть. Авторизация для pppoe идет по Логину и Паролю. MAC привязывать не будем. Допустим абонент подключился на сервер A . Этот же абонент подключился на сервер B. И их пустило. Если сделать проверку на NAS IP , так ему же один сервер будет разрешен. ВОт и ищу каким радиус запросом можно проверить, что абонент online. В базу приходят Nas-IP .Тоесть мы знаем на каком сервере абонент. Вставить ник Quote
Deac Posted December 13, 2011 Posted December 13, 2011 ВОт и ищу каким радиус запросом можно проверить, что абонент online. NOW() < last_update + 2 * alive_time Неприход двух аливов гарантировано указывает на неактивность абонента. Вставить ник Quote
andriko Posted December 13, 2011 Posted December 13, 2011 можно попытаться прочитать что такое checkrad Вставить ник Quote
Deac Posted December 13, 2011 Posted December 13, 2011 можно попытаться прочитать что такое checkrad ...не работает с MPD. Уже при 5 NAS-ах опрос CURL-ом занимает изрядное время. Вставить ник Quote
Alex/AT Posted December 13, 2011 Posted December 13, 2011 ...не работает с MPD. Дык, допилить. Вставить ник Quote
Deac Posted December 13, 2011 Posted December 13, 2011 Дык, допилить. =юзать CURL, с вышеуказанным результатом. Вставить ник Quote
roysbike Posted December 16, 2011 Author Posted December 16, 2011 Спасибо всем за помощь. Все получилось. Включи acct в mpd. Ловим начало и конец сессии. При подключении абонентов с одиноковой учеткой , проверяет на он-лайн. Вставить ник Quote
roysbike Posted January 11, 2012 Author Posted January 11, 2012 (edited) Вообщем не получилось грамотно отслеживать на online , с помощью конца сессии. Так как зависшие сессии присутствуют. Так CURL-ом проще? у меня 16 машин. Хотим уйти на mpd+pppoe. Полностью. Какими еще способами можно не допускать поднятие второй сессии с одинаковым логином. не много отстуспления. NAS MPD5+PPTP+PPPoE . Авторизация для pptp . Login+Password+IP. PPPoe Login+Password. Сеть сегментирована. Соотвественно на разных районах можно сидеть с одинаковыми IP. И выходит под одним логином подключаясь на разные сервера .На доме умное железо. В подъездах плоское. Edited January 11, 2012 by roysbike Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.