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

MP5 Freebsd 8.2

Добрый день коллеги! Имеется в качестве bras-ов Freebsd 8.2 MPD5 pptp+pppoe . БД + freeradius. Трафик не считается. Подскажи, кто и как отслеживает в базе, что сессия online.

И такой вопрос. 5 этих же bras-ов. На всех service name "pppoe.123" , Авторизация Login+Password+mac. Абонент подключен к серверу A. Так же он может подключится к серверу B. Каким образом можно ему запретить доступ. Acct?

Share this post


Link to post
Share on other sites

Если у Вас FreeRadius - делайте Session-Limit и чекалку в radcheck.

Share this post


Link to post
Share on other sites

Подскажи, кто и как отслеживает в базе, что сессия online.

NOW() < last_update + 2 * alive_time

 

MPD5

Там есть своя WEB-морда, можно CURL-ом выбирать активные сессии.

 

Каким образом можно ему запретить доступ.

Проверять NAS-ID/NAS-IP

Edited by Deac

Share this post


Link to post
Share on other sites

Внимательно изучайте RADIUS протокол и мануал к фрирадиусу.

Можно сделать так, что определённый абонент (или определённая группа абонентов) может подключаться только на определённый сервер получая определённые параметры (шейпинга, ACL и т.п.).

PPPoE вы рулите настройкой тегерирования на узле, PPTP обычно прописано у абонента, так что имеенно там это и надо.

 

Сессия online отслеживатется по наличию пустого поля accounting stop, вроде так называется в БД. Ну и по желанию выборки по client ip и другие параметры.

 

Ещё настоятельно советую проработать перепроверку не MAC адреса, а ID свича при использовании фичи PPPoE circuit id insertion, гораздо более гибрая хрень.

 

Ну и напоследок - убейте нахер PPTP, оставляйте только PPPoE, хоть и диагностируется несколько хуже, зато гораздо более удобная в плане распределения нагрузок между серваками.

Share this post


Link to post
Share on other sites

По поводу веб морды - вот мой скрипт для мониторинга группы серверов на 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>";
?>

Share this post


Link to post
Share on other sites

спасибо за подсказки. В будущем хотим съехать на pppoe. Балансирую с помощью DNS+ скрипты. Снимают по snmp нагрузку на интерфейсе и кидает на нужный сервер. Кому интересно могу выложить балансировку нагрузки с помощью DNS для pptp/lt2p.

Share this post


Link to post
Share on other sites

1. не знаю как все, единого мнения тут никогда не будет - я в своей сети юзаю pptp ( для больных роутеров, которые л2 не знают ) и l2tp - лучше конечно уходить на ипое но денег на замену в поле железа нет

2. с помощью днс - да всё просто - пиши в днс несколько ипов для имени и всё - у меня есть имя в днс vpn.lan и l2tp.lan - там 4 ипа ( по конфигу ж видно ) - они по кругу роунд-робином и бегают - если чо-то отваливается, после 1-2 реконнектов юзер попадает на работающий брас

Share this post


Link to post
Share on other sites

как быть с PPPoE ?. Если пользовтель может подключится с одной учетки на разные брасы с разных компов и получить инет. ПО каком отребуту запрещать или отслеживать?

Edited by roysbike

Share this post


Link to post
Share on other sites

У FreeRADIUS есть поддержка Session-Limit. Вот им и отслеживайте. В случае нетиповых BRAS'ов ещё придётся подпилить radcheck, но это задача достаточно тривиальная.

Edited by Alex/AT

Share this post


Link to post
Share on other sites

Сессия online отслеживатется по наличию пустого поля accounting stop, вроде так называется в БД.

Не катит для "зависших" сессий.

Вариант с неприходом двух ALIVE работает всегда.

 

ПО каком отребуту запрещать или отслеживать?

Говорю же - NAS-ID и/или NAS-IP.

Share this post


Link to post
Share on other sites
Если пользовтель может подключится с одной учетки на разные брасы с разных компов и получить инет.

Добавляйте перепроверку порта свича при авторизации

Share this post


Link to post
Share on other sites
Если пользовтель может подключится с одной учетки на разные брасы с разных компов и получить инет.

Добавляйте перепроверку порта свича при авторизации

на узле упроваляемый, в подьездах плоское железо

Share this post


Link to post
Share on other sites

там, где присутствуют гирлянды тупарей - привязывайтесь к MAC-адресу, в нормальном случае авторизируйте по порту свича.

Share this post


Link to post
Share on other sites

там, где присутствуют гирлянды тупарей - привязывайтесь к MAC-адресу, в нормальном случае авторизируйте по порту свича.

с маком то понятном. Не лучший вариант. Я вот толкьо не пойму как реализвоть по NAS-IP , в radcheck добавлять? и что? подключился он, потом отклбчился и на другой сервак, а там nas-ip другой уже/

Share this post


Link to post
Share on other sites

подключился он, потом отклбчился и на другой сервак, а там nas-ip другой уже/

В sql-базе биллинга должно отслеживаться состояние клиента - подключен или нет.

В таблице пользователей есть такое поле?

Проверять/устанавливать значение sql-запросом из FreeRADIUS'а.

У нас он для users.connected = 'YES' просто выдавал клиенту туннельный IP 127.0.0.1.

Share this post


Link to post
Share on other sites

Я вот толкьо не пойму как реализвоть по NAS-IP

Добавить проверку в Auth.

В биллинге добавить таблицы "nases"(заносить сюда NAS-ID/NAS-IP) и "allowed_nases"(поабонентский список разрешённых NAS).

Share this post


Link to post
Share on other sites

подключился он, потом отклбчился и на другой сервак, а там nas-ip другой уже/

В sql-базе биллинга должно отслеживаться состояние клиента - подключен или нет.

В таблице пользователей есть такое поле?

Проверять/устанавливать значение sql-запросом из FreeRADIUS'а.

У нас он для users.connected = 'YES' просто выдавал клиенту туннельный IP 127.0.0.1.

биллинг самописный/ Можешь написать пример запроса. В доках перелыл не нашел.

Edited by roysbike

Share this post


Link to post
Share on other sites

Я вот толкьо не пойму как реализвоть по NAS-IP

Добавить проверку в Auth.

В биллинге добавить таблицы "nases"(заносить сюда NAS-ID/NAS-IP) и "allowed_nases"(поабонентский список разрешённых NAS).

Они у нас есть. Авторизация для pppoe идет по Логину и Паролю. MAC привязывать не будем. Допустим абонент подключился на сервер A . Этот же абонент подключился на сервер B. И их пустило. Если сделать проверку на NAS IP , так ему же один сервер будет разрешен. ВОт и ищу каким радиус запросом можно проверить, что абонент online. В базу приходят Nas-IP .Тоесть мы знаем на каком сервере абонент.

Share this post


Link to post
Share on other sites

ВОт и ищу каким радиус запросом можно проверить, что абонент online.

NOW() < last_update + 2 * alive_time

 

Неприход двух аливов гарантировано указывает на неактивность абонента.

Share this post


Link to post
Share on other sites

можно попытаться прочитать что такое checkrad

Share this post


Link to post
Share on other sites

можно попытаться прочитать что такое checkrad

...не работает с MPD.

 

Уже при 5 NAS-ах опрос CURL-ом занимает изрядное время.

Share this post


Link to post
Share on other sites

Дык, допилить.

=юзать CURL, с вышеуказанным результатом.

Share this post


Link to post
Share on other sites

Спасибо всем за помощь. Все получилось. Включи acct в mpd. Ловим начало и конец сессии. При подключении абонентов с одиноковой учеткой , проверяет на он-лайн.

Share this post


Link to post
Share on other sites

Вообщем не получилось грамотно отслеживать на online , с помощью конца сессии. Так как зависшие сессии присутствуют. Так CURL-ом проще? у меня 16 машин. Хотим уйти на mpd+pppoe. Полностью. Какими еще способами можно не допускать поднятие второй сессии с одинаковым логином. не много отстуспления.

NAS MPD5+PPTP+PPPoE . Авторизация для pptp . Login+Password+IP. PPPoe Login+Password. Сеть сегментирована. Соотвественно на разных районах можно сидеть с одинаковыми IP. И выходит под одним логином подключаясь на разные сервера .На доме умное железо. В подъездах плоское.

Edited by roysbike

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