Slava 1 Опубликовано: 2010-04-22 04:58:48 Share Опубликовано: 2010-04-22 04:58:48 Доброго времени суток! Проблема такого плана: на сервере стоит Gentoo linux установил nodeny 49.32 с авторизатором работает нормально. Поднял радиус 1.1.7, pptpd-1.3.4. Авторизация заработала инет появился но примерно через минуту пропадает. Если снова прервать соединение и пересоединится инет появится но тоже приметрно на минуту. Наблюдение показало что через минуту нодени посылает сигнал дисконнекта для пользователя хотя баланс положительный и если поставить всегда онлай или подключится авторизатором все работает нормально. Как написано в докуметнации по установке Mpd настраивается таким образом, что с определенным периодом будет посылать radius-у так называемые accounting пакеты для каждого соединения. Эти пакеты будут интерпретироваться как keep-alive пакеты, сообщающие ядру, что соединение не зависло. но это для MPD. Как это реализовать на pptpd + radius? Просьба не предлагать перейти на FreeBSD. Ссылка на сообщение Поделиться на других сайтах
Prime 51 Опубліковано: 2010-04-22 06:06:17 Share Опубліковано: 2010-04-22 06:06:17 а логи что говорят радиуса включи через radius -x Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2010-04-22 06:15:12 Автор Share Опубліковано: 2010-04-22 06:15:12 а логи что говорят радиуса включи через radius -x вот что выдал radius -x rad_recv: Access-Request packet from host 127.0.0.1:50129, id=167, length=95 Service-Type = Framed-User Framed-Protocol = PPP User-Name = "slavavpn" CHAP-Challenge = 0xb8c2ad9df99b90e562bceefa1f554d029c8ecfcc CHAP-Password = 0x17a2318abefb811e93cab8ecef2a64333f NAS-IP-Address = 127.0.0.1 NAS-Port = 1 Processing the authorize section of radiusd.conf modcall: entering group authorize for request 0 modcall[authorize]: module "preprocess" returns ok for request 0 rlm_chap: Setting 'Auth-Type := CHAP' modcall[authorize]: module "chap" returns ok for request 0 modcall[authorize]: module "mschap" returns noop for request 0 rlm_realm: No '@' in User-Name = "slavavpn", looking up realm NULL rlm_realm: No such realm "NULL" modcall[authorize]: module "suffix" returns noop for request 0 rlm_eap: No EAP-Message, not doing EAP modcall[authorize]: module "eap" returns noop for request 0 users: Matched entry DEFAULT at line 172 users: Matched entry DEFAULT at line 184 modcall[authorize]: module "files" returns ok for request 0 radius_xlat: 'slavavpn' rlm_sql (sql): sql_set_user escaped user --> 'slavavpn' radius_xlat: 'call radcheck('slavavpn')' rlm_sql (sql): Reserving sql socket id: 4 radius_xlat: '' radius_xlat: 'call radreply('slavavpn')' radius_xlat: '' rlm_sql (sql): Released sql socket id: 4 modcall[authorize]: module "sql" returns ok for request 0 rlm_pap: Found existing Auth-Type, not changing it. modcall[authorize]: module "pap" returns noop for request 0 modcall: leaving group authorize (returns ok) for request 0 rad_check_password: Found Auth-Type CHAP auth: type "CHAP" Processing the authenticate section of radiusd.conf modcall: entering group CHAP for request 0 rlm_chap: login attempt by "slavavpn" with CHAP password rlm_chap: Using clear text password "090480" for user slavavpn authentication. rlm_chap: chap user slavavpn authenticated succesfully modcall[authenticate]: module "chap" returns ok for request 0 modcall: leaving group CHAP (returns ok) for request 0 Processing the post-auth section of radiusd.conf modcall: entering group post-auth for request 0 rlm_sql (sql): Processing sql_postauth radius_xlat: 'slavavpn' rlm_sql (sql): sql_set_user escaped user --> 'slavavpn' modcall[post-auth]: module "sql" returns noop for request 0 modcall: leaving group post-auth (returns noop) for request 0 Sending Access-Accept of id 167 to 127.0.0.1 port 50129 Service-Type = Framed-User Framed-Protocol = PPP Framed-IP-Address = 172.17.2.200 Framed-IP-Netmask = 255.255.255.255 Finished request 0 Going to the next request --- Walking the entire request list --- Waking up in 6 seconds... rad_recv: Accounting-Request packet from host 127.0.0.1:39569, id=168, length=100 Acct-Session-Id = "4BCFEDC9736E00" User-Name = "slavavpn" Acct-Status-Type = Start Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS NAS-Port-Type = Async Framed-IP-Address = 172.17.2.200 NAS-IP-Address = 127.0.0.1 NAS-Port = 1 Acct-Delay-Time = 0 Processing the preacct section of radiusd.conf modcall: entering group preacct for request 1 modcall[preacct]: module "preprocess" returns noop for request 1 rlm_acct_unique: Hashing 'NAS-Port = 1,Client-IP-Address = 127.0.0.1,NAS-IP-Address = 127.0.0.1,Acct-Session-Id = "4BCFEDC9736E00",User-Name = "slavavpn"' rlm_acct_unique: Acct-Unique-Session-ID = "e70b741ae52c5165". modcall[preacct]: module "acct_unique" returns ok for request 1 rlm_realm: No '@' in User-Name = "slavavpn", looking up realm NULL rlm_realm: No such realm "NULL" modcall[preacct]: module "suffix" returns noop for request 1 modcall[preacct]: module "files" returns noop for request 1 modcall: leaving group preacct (returns ok) for request 1 Processing the accounting section of radiusd.conf modcall: entering group accounting for request 1 radius_xlat: '/var/log/radius/radacct/127.0.0.1/detail-20100422' rlm_detail: /var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /var/log/radius/radacct/127.0.0.1/detail-20100422 modcall[accounting]: module "detail" returns ok for request 1 modcall[accounting]: module "unix" returns ok for request 1 radius_xlat: '/var/log/radius/radutmp' radius_xlat: 'slavavpn' modcall[accounting]: module "radutmp" returns ok for request 1 radius_xlat: 'slavavpn' rlm_sql (sql): sql_set_user escaped user --> 'slavavpn' radius_xlat: '' rlm_sql (sql): Reserving sql socket id: 3 rlm_sql (sql): Released sql socket id: 3 modcall[accounting]: module "sql" returns ok for request 1 modcall: leaving group accounting (returns ok) for request 1 Sending Accounting-Response of id 168 to 127.0.0.1 port 39569 Finished request 1 Ссылка на сообщение Поделиться на других сайтах
Prime 51 Опубліковано: 2010-04-22 08:08:57 Share Опубліковано: 2010-04-22 08:08:57 Nodeny в течении минуты обрабатывает есть ли юзеру доступ или нет. Для того, чтобы не пользоваться авторизатором, нужно ставить - всегда онлайн. и подключайтесь по pptp/pppoe итд. в другом случае, биллинг считает что пользователь отлючен и потому дает сигнал второму скрипту, который отвечает за подключение-отключение пользователей и шейпера команду на выключение доступаю запустите perl noserver.pl -v и смотрите детальный лог. в данном случае radius занимается только авторизацией пользователей для PPP доступа. можно выключить радиус и те, кто уже были онлайн, будут работать без проблем, а новые не смогут подключиться. на центосе поднял аналогичную схему, все работает великолепно Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2010-04-22 16:23:05 Автор Share Опубліковано: 2010-04-22 16:23:05 Nodeny в течении минуты обрабатывает есть ли юзеру доступ или нет. Для того, чтобы не пользоваться авторизатором, нужно ставить - всегда онлайн. и подключайтесь по pptp/pppoe итд. в другом случае, биллинг считает что пользователь отлючен и потому дает сигнал второму скрипту, который отвечает за подключение-отключение пользователей и шейпера команду на выключение доступаю запустите perl noserver.pl -v и смотрите детальный лог. в данном случае radius занимается только авторизацией пользователей для PPP доступа. можно выключить радиус и те, кто уже были онлайн, будут работать без проблем, а новые не смогут подключиться. на центосе поднял аналогичную схему, все работает великолепно спасибо заработало ! Ссылка на сообщение Поделиться на других сайтах
911 140 Опубліковано: 2010-04-22 16:56:31 Share Опубліковано: 2010-04-22 16:56:31 а выложите свои версии nofire.pl для линукса Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2010-04-22 17:40:46 Автор Share Опубліковано: 2010-04-22 17:40:46 а выложите свои версии nofire.pl для линукса Чуть позже выложу только шейпер и проброс реальников доделаю. Ссылка на сообщение Поделиться на других сайтах
911 140 Опубліковано: 2010-04-22 18:56:34 Share Опубліковано: 2010-04-22 18:56:34 а выложите свои версии nofire.pl для линукса Чуть позже выложу только шейпер и проброс реальников доделаю. проброс реальников? это что еще за счастье? а шейпер ждем с нетерпением... Ссылка на сообщение Поделиться на других сайтах
keshaLG 5 Опубліковано: 2010-04-23 09:21:16 Share Опубліковано: 2010-04-23 09:21:16 Недавно занимался этой задачей, биллинг заточен под фряху, и документирован по линуху мало... пришлось все с нуля раскдывать по полочкам. Решение уважаемого Sanchezz - аля "костыль" (без обид!), ну соственно как и весь линукс)... но это не "наш" метод! Тем более на таком серьезном биллинге, как ноудени. Докладываю результаты своих исследований: да, биллинг действительно отключает юзера по таймауту, потому, что не приходит alive пакет от плагина радиуса, т.е. не отрабатывает эта процедура: accounting_update_query = "call radupdate('%{SQL-User-Name}')" Ввиду того, что во фряхи это делает сам mpd и в документации по ней описано в конфигах. А линуксовому радиус-клиенту надо рассказать: что есть мега важный атрибут [root@test radiusclient]# grep Acct-Interim-Interval /etc/radiusclient/dictionary ATTRIBUTE Acct-Interim-Interval 85 integer [root@test radiusclient]# после этого у меня заработало все... Единственное не удобство, что IP, который в биллинге - выставляется на PPP-интерфейс, и надо опять костыли делать, что бы в подсетях юзерам выдавать по DHCP адреса фиксированные. Благо в биллинге есть поля под МАК и типа UserData, как в СТГ... Кстати, с реалками: просто проприсуете белый IP юзеру и не маскарадите его ,) 2 уважаемому "911": Вы думаете, что после таких, мягко говоря неприятных, постов у кого будет желание помогать Вам? как говориться: Ваши слова и пожелания, Вам же в уши. К уважаемому коммунити с local.com.ua - отношения не имеет! Всем спасибо за то, что Вы есть! Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2010-04-24 15:29:17 Автор Share Опубліковано: 2010-04-24 15:29:17 Недавно занимался этой задачей, биллинг заточен под фряху, и документирован по линуху мало... пришлось все с нуля раскдывать по полочкам. Решение уважаемого Sanchezz - аля "костыль" (без обид!), ну соственно как и весь линукс)... но это не "наш" метод! Тем более на таком серьезном биллинге, как ноудени. Докладываю результаты своих исследований: да, биллинг действительно отключает юзера по таймауту, потому, что не приходит alive пакет от плагина радиуса, т.е. не отрабатывает эта процедура: accounting_update_query = "call radupdate('%{SQL-User-Name}')" Ввиду того, что во фряхи это делает сам mpd и в документации по ней описано в конфигах. А линуксовому радиус-клиенту надо рассказать: что есть мега важный атрибут [root@test radiusclient]# grep Acct-Interim-Interval /etc/radiusclient/dictionary ATTRIBUTE Acct-Interim-Interval 85 integer [root@test radiusclient]# после этого у меня заработало все... Единственное не удобство, что IP, который в биллинге - выставляется на PPP-интерфейс, и надо опять костыли делать, что бы в подсетях юзерам выдавать по DHCP адреса фиксированные. Благо в биллинге есть поля под МАК и типа UserData, как в СТГ... Кстати, с реалками: просто проприсуете белый IP юзеру и не маскарадите его ,) Посмотрел в свой dictionary вышеперечисленная сточка добавлена, результат тот же дисконнект через минуту. Можете выложить свой /etc/radiusclient/dictionary может еще какой строчки не хватает? Заранее спасибо! Ссылка на сообщение Поделиться на других сайтах
keshaLG 5 Опубліковано: 2010-04-26 19:57:11 Share Опубліковано: 2010-04-26 19:57:11 Посмотрел в свой dictionary вышеперечисленная сточка добавлена, результат тот же дисконнект через минуту. Можете выложить свой /etc/radiusclient/dictionary может еще какой строчки не хватает? Заранее спасибо! Ой прошу прощения, давно дело было... подзабыл малость, интервал alivе-а во фре в конфиге мпд, а тут так надо еще модифицировать PROCEDURE "radcheck", дабавив строку: SELECT NULL,login,'Acct-Interim-Interval','60','='; после "SELECT NULL,login,'Framed-Protocol','PPP','=';" т.е. что бы в радиус-плагин мы вернули переменную(атрибут) "через сколько слать эвливы", в моем примере 60 сек Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2010-04-27 05:11:40 Автор Share Опубліковано: 2010-04-27 05:11:40 Посмотрел в свой dictionary вышеперечисленная сточка добавлена, результат тот же дисконнект через минуту. Можете выложить свой /etc/radiusclient/dictionary может еще какой строчки не хватает? Заранее спасибо! Ой прошу прощения, давно дело было... подзабыл малость, интервал alivе-а во фре в конфиге мпд, а тут так надо еще модифицировать PROCEDURE "radcheck", дабавив строку: SELECT NULL,login,'Acct-Interim-Interval','60','='; после "SELECT NULL,login,'Framed-Protocol','PPP','=';" т.е. что бы в радиус-плагин мы вернули переменную(атрибут) "через сколько слать эвливы", в моем примере 60 сек Спасибо заработало! Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2010-04-28 08:44:27 Автор Share Опубліковано: 2010-04-28 08:44:27 Еще вопрос подскажите кто знает как правильно передать атрибут скорости пробую так: DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); DECLARE speed VARCHAR(15); SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT speed from plans2 where id=(select paket from users where id=usr_id); SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Framed-Protocol','PPP','='; SELECT NULL,login,'Acct-Interim-Interval','60','='; SELECT NULL,login,'Ascend-Data-Rate','speed','='; END$$ DELIMITER ; но поле такого запроса radtest выдает Sending Access-Request of id 112 to 127.0.0.1 port 1812 User-Name = "test" User-Password = "12345" NAS-IP-Address = 255.255.255.255 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=112, length=44 и содержимое radattr.ppp0: Service-Type Framed-User Framed-Protocol PPP если запрос сформирован так: DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15); SELECT id,ip INTO usr_id,usr_ip FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; SELECT NULL,login,'Framed-Protocol','PPP','='; SELECT NULL,login,'Acct-Interim-Interval','60','='; END$$ DELIMITER ; то radattr.ppp0 : Service-Type Framed-User Framed-Protocol PPP Framed-IP-Address 195.58.243.254 Framed-IP-Netmask 255.255.255.255 Acct-Interim-Interval 60 Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас