Страница 1 из 1

Как я понял избитая тема но всё же Radius + eDir + Шлюз

СообщениеДобавлено: 01 апр 2006, 14:58
Андрей ака Linuxoid
Есть задумка обеспечить авторизацию пользователей шлюза в инет через eDir.
Почитав тут на форуме некотрые обсуждения понял что народ пытается это сделать или уже каким-то образом сделал.
Задумка такая:
1) Шлюзовой сервак в инет под линуксом на нём поднято:
a) PPTP server with radius plug-in
b) FreeRadius --with-edir
c) Traffic Collector (ipcad or ndsad or nacctd) > Billing system
d) transparant proxy (squid)
e) nat
тут всё понятно.

Непонятно тут:
2) FreeRadius общается с сервером на котором eDir и извлекает следующую инфу:
Имя и пароль это понятно
Но вот как-бы извлечь привязанный к пользователю ip который будет выдаваться в тунеле сервером PPTPD
- тут не могу додуматься.
Как это реализовать?

Re: Как я понял избитая тема но всё же Radius + eDir + Шлюз

СообщениеДобавлено: 03 апр 2006, 05:55
Сергей.М.
Андрей ака Linuxoid писал(а):Есть задумка обеспечить авторизацию пользователей шлюза в инет через eDir.
Почитав тут на форуме некотрые обсуждения понял что народ пытается это сделать или уже каким-то образом сделал.
Задумка такая:
1) Шлюзовой сервак в инет под линуксом на нём поднято:
a) PPTP server with radius plug-in
b) FreeRadius --with-edir
c) Traffic Collector (ipcad or ndsad or nacctd) > Billing system
d) transparant proxy (squid)
e) nat
тут всё понятно.

Непонятно тут:
2) FreeRadius общается с сервером на котором eDir и извлекает следующую инфу:
Имя и пароль это понятно
Но вот как-бы извлечь привязанный к пользователю ip который будет выдаваться в тунеле сервером PPTPD
- тут не могу додуматься.
Как это реализовать?


Вообщето если Вы привязываетесь к имени/паролю, то логичней и биллинг вести по данным параметрам, а не привязываться к ip адресу.
Но если Вам так хочется, то присваивайте IP пользователю через радиус.

pptpd

СообщениеДобавлено: 03 апр 2006, 09:58
skoltogyan
штатный pptpd поддерживает до 100 сессий

IP

СообщениеДобавлено: 03 апр 2006, 11:11
Андрей ака Linuxoid
Мне хочется следующее:
завёл пользователя в eDir и он может залогироваться уже через pptpd или
skoltogyan писал(а):штатный pptpd поддерживает до 100 сессий

mpd, если хотите.
Не хочется каждый раз конфиг radiusa править.
Остаётся в биллинге завести соответсвующего пользователя.

повторяю

СообщениеДобавлено: 03 апр 2006, 18:24
skoltogyan
То, что "Мне хочется следующее:..." оно работает.
Просто если использовать штатный pptpd, то будет не более 100 одновременных соединений держать pptpd

ip

СообщениеДобавлено: 04 апр 2006, 02:30
Андрей ака Linuxoid
Каким образом в тунеле к пользоателю из еДир привязать ip?
Как это реализовать?

мне подсказали

СообщениеДобавлено: 04 апр 2006, 12:29
Андрей ака Linuxoid
в конфиге радиуса есть такой параметр:
access_attr = "radiusFramedIPAddress"
radiusFramedIPAddress это аттрибут из OpenLDAP из схемы objectClass: radiusprofile
буду пытаться расширить схему nds

Re: мне подсказали

СообщениеДобавлено: 05 апр 2006, 07:26
Михаил Григорьев
Андрей ака Linuxoid писал(а):в конфиге радиуса есть такой параметр:
access_attr = "radiusFramedIPAddress"
radiusFramedIPAddress это аттрибут из OpenLDAP из схемы objectClass: radiusprofile
буду пытаться расширить схему nds


Вообще говоря, access_attr может быть любого значения, вы можите придумать свою схему и назначить из неё нужные аттрибуты!

Просто в схеме radiusprofile из OpenLDAP за IP адрес, выдаваемый клиенту, отвечает поле radiusFramedIPAddress

Re: pptpd

СообщениеДобавлено: 05 апр 2006, 10:26
Михаил Григорьев
skoltogyan писал(а):штатный pptpd поддерживает до 100 сессий


MPD тоже не более 99 сессий может создать!

А знаете почему?

Потому что ppp node назначается в виде "mpd<pid>-<name>"
А поскольку длина имени netgraph node ограничена 15 символами, а стандартное обозначение ppp node состоит из "mpdNNNNN-pptpXX", то более 99 нод создать нельзя. :(

Как лечить: Введем новоё именование ppp node, например "mpd-<name>"

тогда вот патчь:

mpd-318-no_limit_99node.diff

Код: Выделить всё
diff -urNb mpd-3.18.orig/src/ngfunc.c mpd-3.18/src/ngfunc.c
--- mpd-3.18.orig/src/ngfunc.c   Tue May  4 22:12:28 2004
+++ mpd-3.18/src/ngfunc.c   Fri May 14 13:43:59 2004
@@ -215,7 +215,7 @@
   newPpp = 1;

   /* Give it a name */
-  snprintf(nm.name, sizeof(nm.name), "mpd%d-%s", getpid(), b->name);
+  snprintf(nm.name, sizeof(nm.name), "mpd-%s", b->name);
   if (NgSendMsg(b->csock, MPD_HOOK_PPP,
       NGM_GENERIC_COOKIE, NGM_NAME, &nm, sizeof(nm)) < 0) {
     Log(LG_ERR, ("[%s] can't name %s node: %s",



А вообще лучше уже на MPD4 переходить!

Я на нем без всяких патчей запустил 1500 тунелей!

Но это опять же если Pid процесса <= 4 знака, а если Pid будет 5 знаков (например 23191) то 3-х значное колич. интерфейсов не поднимется, по описаной выше причине!

P.S. Хотя патчь для MPD4 я уже написал! Он немного подлинее чем для 3.18