Биллинговая система Nodeny

Главная категория => Nodeny 50 => Тема начата: serg_sk от 14 Августа 2015, 14:34:42



Название: freebsd9 mpd5 freeraius2
Отправлено: serg_sk от 14 Августа 2015, 14:34:42
Привет всем!

Сделал вот такую связку. Все работает и отлично. Но есть 1 косяк.
Если 2 пользователя подключаются под одним логином и паролем, то их обоих пускает и интернет не работает соответственно.
Выходит вот такая картина:
Цитировать
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1458
   inet 192.168.123.1 --> xxx.xxx.xxx.33 netmask 0xffffffff
   inet6 fe80::214:5eff:fe0b:7a64%ng0 prefixlen 64 scopeid 0x8
   nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1458
   inet 192.168.123.1 --> xxx.xxx.xxx.33 netmask 0xffffffff
   inet6 fe80::214:5eff:fe0b:7a64%ng1 prefixlen 64 scopeid 0x9
   nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
То есть им выдает один и тот же ип(что по сути верно) ибо за этим логином закреплен именно этот ип.

На freebsd8 попытка законектиться второй раз заканчивалась вот на этом месте:
Цитировать
Aug 14 15:12:07 nas4 mpd: [B-2] IFACE: Adding IPv4 address to ng1 failed: File exists
А на freebsd9 все проходит дальше и создается ng1 с таким же ипом, как и ng0.
Как можно отрубать повторный логин абонента, если он в данный момент уже активен?


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: ser970 от 14 Августа 2015, 16:19:50
Привет всем!

Сделал вот такую связку. Все работает и отлично. Но есть 1 косяк.
Если 2 пользователя подключаются под одним логином и паролем, то их обоих пускает и интернет не работает соответственно.

Как можно отрубать повторный логин абонента, если он в данный момент уже активен?


изменить процедуру в mysql


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: Cell от 14 Августа 2015, 23:45:03
Я изменяю процедуру вот таким образом:
Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users WHERE name=login AND auth='no';
END$$
DELIMITER;
Правда это было для первого радиуса, хз что там сейчас для второго надо. Смысл спитча сводится к тому чтобы проверять наличие авторизации перед ее разрешением т.е. добавляется условие AND auth='no'
После замены процедуры авторизации нарушителю, пытающемуся подколючится с логином и паролем авторизованного аккаунта будет выдавать ошибку авторизации "691" и так ему и надо )))


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: ser970 от 15 Августа 2015, 09:45:56
Я изменяю процедуру вот таким образом:
Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users WHERE name=login AND auth='no';
END$$
DELIMITER;
Правда это было для первого радиуса, хз что там сейчас для второго надо. Смысл спитча сводится к тому чтобы проверять наличие авторизации перед ее разрешением т.е. добавляется условие AND auth='no'
После замены процедуры авторизации нарушителю, пытающемуся подколючится с логином и паролем авторизованного аккаунта будет выдавать ошибку авторизации "691" и так ему и надо )))
да именно так auth='no'
версия радиуса не играет роли.
но можно сделал чуть не так = выдавать фейковый ip и страницу заглушки....


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: serg_sk от 17 Августа 2015, 08:06:42
А процедуру radstop менять не надо? Вдруг соединение оборвется, а в базе все еще будет показывать, что абонент авторизирован. Его ж по идее не пустит.


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: Cell от 17 Августа 2015, 09:23:42
А процедуру radstop менять не надо? Вдруг соединение оборвется, а в базе все еще будет показывать, что абонент авторизирован. Его ж по идее не пустит.
Не надо. Тут приходится выбирать из двух зол злейшее. ))) С неожиданными обрывами бороться другими способами нужно.


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: serg_sk от 17 Августа 2015, 09:26:52
Я конечно сомневаюсь, что какой-то зверь будет подключаться со своим логином и паролем 2 раза. Но.. эти черти все могут сотворить. Потому, надо бы пресечь.
Ладно, будем проверять :)


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: Cell от 17 Августа 2015, 09:59:00
Я конечно сомневаюсь, что какой-то зверь будет подключаться со своим логином и паролем 2 раза. Но.. эти черти все могут сотворить. Потому, надо бы пресечь.
Ладно, будем проверять :)
Не, юзер не будет. Он даст логин и пароль своим корешам и они всем колхозом будут сидеть и если тазик с мпд один - то это пол беды, работать толком не будет, но у меня был случай когда тазов было 5 штук и по PPPoE рандомно коннектились на них, вот если авторизация на разных тазах - то инет работает со свистом у обоих.


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: serg_sk от 17 Августа 2015, 12:28:38
Тазик одни. Работать не будет :)


Название: Re: freebsd9 mpd5 freeraius2
Отправлено: goletsa от 17 Августа 2015, 14:22:14
Не, юзер не будет. Он даст логин и пароль своим корешам и они всем колхозом будут сидеть и если тазик с мпд один - то это пол беды, работать толком не будет, но у меня был случай когда тазов было 5 штук и по PPPoE рандомно коннектились на них, вот если авторизация на разных тазах - то инет работает со свистом у обоих.
У меня много тазиков было связано по ospf, даже если были повторные соединения - в таблице маршрутизации был 1 адрес, он и работал.
Ну точнее у меня NAT от PPPoE был отделен (исторически сложилось).