Jump to content

Recommended Posts

Posted

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

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

Posted (edited)

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

NOW() < last_update + 2 * alive_time

 

MPD5

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

 

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

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

Edited by Deac
Posted

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

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

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

 

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

 

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

 

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

Posted

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

Posted

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

Posted

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

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

Posted (edited)

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

Edited by roysbike
Posted (edited)

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

Edited by Alex/AT
Posted

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

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

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

 

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

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

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

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

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

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

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

Posted

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

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

Posted

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

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

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

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

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

Posted

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

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

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

Posted (edited)

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

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

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

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

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

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

Edited by roysbike
Posted

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

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

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

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

Posted

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

NOW() < last_update + 2 * alive_time

 

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

Posted

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

  • 4 weeks later...
Posted (edited)

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

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

Edited by roysbike

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 и с Политикой конфиденциальности.