planken Опубликовано 19 апреля, 2010 (изменено) · Жалоба Есть в наличии LanBilling 1.9 установленный на FreeBSD 7.2 + MPD5. Когда биллинг отказывает абоненту в подключении выдается ошибка 691, однако в некоторых случаях выдается другое сообщение об ошибке http://content.foto.mail.ru/mail/vel-kom/1/i-2.jpg в лог MPD при этом пишется, затем дает еще 2 попытки авторизации и ошибка 734 Mar 16 14:16:56 localhost mpd: [L-1] AUTH: RADIUS returned: failed Mar 16 14:16:56 localhost mpd: [L-1] AUTH: ran out of backends Mar 16 14:16:56 localhost mpd: [L-1] CHAP: Auth return status: failed Mar 16 14:16:56 localhost mpd: [L-1] CHAP: Reply message: ^AE=691 R=1 Mar 16 14:16:56 localhost mpd: [L-1] CHAP: sending FAILURE #1 len: 14 Mar 16 14:16:56 localhost mpd: [L-1] LCP: authorization failed Когда выдается ошибка 691, в лог пишется Mar 16 14:18:44 localhost mpd: [L-1] AUTH: RADIUS returned: failed Mar 16 14:18:44 localhost mpd: [L-1] AUTH: ran out of backends Mar 16 14:18:44 localhost mpd: [L-1] CHAP: Auth return status: failed Mar 16 14:18:44 localhost mpd: [L-1] CHAP: Reply message: E=691 R=0 M=Login incorrect Mar 16 14:18:44 localhost mpd: [L-1] CHAP: sending FAILURE #1 len: 31 Mar 16 14:18:44 localhost mpd: [L-1] LCP: authorization failed Что надо подправить, что бы всегда выдавалась ошибка 691, когда неудачная авторизация в биллинге? Изменено 19 апреля, 2010 пользователем planken Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 19 апреля, 2010 · Жалоба жывотное ввело правильный логин, но неверный пароль, поэтому такая вот бяка Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
planken Опубликовано 20 апреля, 2010 (изменено) · Жалоба жывотное ввело правильный логин, но неверный пароль, поэтому такая вот бяка ответ не верный - во-первых жывотных к интернету не допускаем во-вторых, такая же байда выскакивает, когда отрицательный баланс или достигнут лимит трафика Изменено 20 апреля, 2010 пользователем planken Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
parazit74 Опубликовано 20 апреля, 2010 (изменено) · Жалоба жывотное ввело правильный логин, но неверный пароль, поэтому такая вот бяка ответ не верный - во-первых жывотных к интернету не допускаем во-вторых, такая же байда выскакивает, когда отрицательный баланс или достигнут лимит трафика правильно а что вы хотите, чтоб винда вам написала "Пополните баланс" или "купите еще мегабайтов"? )))) соединение создаете вручную? или какой-то утилитой самописной? может если утилитой создаете, то что-то неправильное в настройках появляется поэтому и выскакивает 734 ошибка... 691 ошибка ет нормально)))научите тех. поддержку (или кто там у вас) сразу смотреть на балланс звонящего с такой ошибкой. потом ессесно уже его логин и пасс... Изменено 20 апреля, 2010 пользователем parazit74 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
littlesavage Опубликовано 20 апреля, 2010 (изменено) · Жалоба Есть в наличии LanBilling 1.9 установленный на FreeBSD 7.2 + MPD5.Когда биллинг отказывает абоненту в подключении выдается ошибка 691, однако в некоторых случаях выдается другое сообщение об ошибке в лог MPD при этом пишется, затем дает еще 2 попытки авторизации и ошибка 734 Mar 16 14:16:56 localhost mpd: [L-1] CHAP: Reply message: ^AE=691 R=1 Что надо подправить, что бы всегда выдавалась ошибка 691, когда неудачная авторизация в биллинге? Подправить надо что-то в биллинге. За то, что выдается на скриншоте, отвечает параметр R=1. mpd получает это сообщение от радиуса параметром MS-CHAP-Error Описание MS-CHAP-Error - в RFC. Изменено 20 апреля, 2010 пользователем littlesavage Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Giga-Byte Опубликовано 20 апреля, 2010 · Жалоба Описание MS-CHAP-Error - в RFC.RFC читать иногда полезно. у нас 691-я ошибка только при вводе неверного логина или пароля. для уже подключенного (с другого МАК адреса) и заблокированого (системой) аккаунта - 649 и 647. правда пришлось немного поправить код mpd5, зато пользователю ясно, когда он сессию завершил некорректно или пароль неверно ввёл Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
planken Опубликовано 20 апреля, 2010 (изменено) · Жалоба 691 ошибка ет нормально)))научите тех. поддержку (или кто там у вас) сразу смотреть на балланс звонящего с такой ошибкой. потом ессесно уже его логин и пасс... Товарисч, вы вопрос читали? Я хочу что бы было 691, а выскакивает повторите ввод пароля, а пароль можно вводить до посинения, т.к. на самом деле баланс нулевой Подправить надо что-то в биллинге. За то, что выдается на скриншоте, отвечает параметр R=1.mpd получает это сообщение от радиуса параметром MS-CHAP-Error Описание MS-CHAP-Error - в RFC. Общался с разработчиками из ЛанБаллинг, они сказали, что биллинг в ЛЮБОМ случает дает только два ответа ACCEPT или FAILED, далее ответы интерпретирует NAS (MPD в данном случае) и операционка. RFC почитаю правда пришлось немного поправить код mpd5, зато пользователю ясно,когда он сессию завершил некорректно или пароль неверно ввёл что конкретно подправить? Изменено 20 апреля, 2010 пользователем planken Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Giga-Byte Опубликовано 20 апреля, 2010 · Жалоба правда пришлось немного поправить код mpd5, зато пользователю ясно,когда он сессию завершил некорректно или пароль неверно ввёл что конкретно подправить? 1. файл auth.c функция authAsync()if (RadiusAuthenticate(auth)) { } else { Log... закоментировать if (auth->success == AUTH_STATUS_SUCCESS) оставить return; } 2. в тойже функции в конце auth->why_fail = AUTH_FAIL_INVALID_LOGIN заменить на auth->why_fail = AUTH_FAIL_NOT_EXPECTED 3. radius.c функция authgetparams() ищем строку RADIUS: Get MS-CHAP-Error: %s дописываем проверку: если 646 присваиваем auth->why_fail = AUTH_FAIL_RESTRICTED_HOURS если 647 присваиваем auth->why_fail = AUTH_FAIL_ACCT_DISABLED если 649 присваиваем auth->why_fail = AUTH_FAIL_NO_PERMISSION всё. далее, радиусом шлём access-accept и ms-chap-error Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
littlesavage Опубликовано 20 апреля, 2010 · Жалоба Общался с разработчиками из ЛанБаллинг, они сказали, что биллинг в ЛЮБОМ случает дает только два ответа ACCEPT или FAILED, далее ответы интерпретирует NAS (MPD в данном случае) и операционка. RFC почитаю Выполните radtest на радиус сервер вашего биллинга для нескольких логинов: с неверным паролем, заблокированного, уже подключенного, и т.п. и покажите результаты. Giga-Byte, патч, как я понял, чтобы mpd принимал MS-CHAP-Error при access-accept и считал его ошибкой? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Giga-Byte Опубликовано 20 апреля, 2010 · Жалоба Giga-Byte, патч, как я понял, чтобы mpd принимал MS-CHAP-Error при access-accept и считал его ошибкой? я уже не помню тонкостей. пробуйте, может родится другая версия. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
littlesavage Опубликовано 20 апреля, 2010 (изменено) · Жалоба Giga-Byte, патч, как я понял, чтобы mpd принимал MS-CHAP-Error при access-accept и считал его ошибкой?я уже не помню тонкостей. пробуйте, может родится другая версия. Я freeradius патчил на тему отдавать VSA при access-reject :) Там любые ошибки из списка можно отдавать: http://support.microsoft.com/kb/824864 Изменено 20 апреля, 2010 пользователем littlesavage Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
planken Опубликовано 20 апреля, 2010 (изменено) · Жалоба Выполните radtest на радиус сервер вашего биллинга для нескольких логинов: с неверным паролем, заблокированного, уже подключенного, и т.п. и покажите результаты. не правильный пароль rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=224, length=20 лимит трафика rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=246, length=20 абонент отключен rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=36, length=20 не правильный логин rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=251, length=20 отличается только ID, который меняется каждый раз Разработчики ЛанБиллинга сказали, что биллинг дает только ACCEPT или REJECT Изменено 20 апреля, 2010 пользователем planken Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 21 апреля, 2010 · Жалоба Giga-Byte, littlesavage, спасибо за подсказки, у себя тоже самое давно хотел реализовать, только вот не доганял где, буду ковыряться :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 30 апреля, 2010 (изменено) · Жалоба 1. файл auth.c функция authAsync()if (RadiusAuthenticate(auth)) { } else { Log... закоментировать if (auth->success == AUTH_STATUS_SUCCESS) оставить return; } Это (выделено) опечатка? У меня там if (auth->status == AUTH_STATUS_SUCCESS)3. radius.c функция authgetparams()ищем строку RADIUS: Get MS-CHAP-Error: %s Такой функции не нашел в "своем" radius.c... Log(LG_RADIUS2, ("[%s] RADIUS: Get MS-CHAP-Error: %s" есть только в ф-ции RadiusGetParams вот тут switch (vendor) { case RAD_VENDOR_MICROSOFT: switch (res) { case RAD_MICROSOFT_MS_CHAP_ERROR: if (auth->mschap_error != NULL) { Freee(auth->mschap_error); auth->mschap_error = NULL; } if (len == 0) break; /* there is a nullbyte on the first pos, don't know why */ if (((const char *)data)[0] == '\0') { data = (const char *)data + 1; len--; } tmpval = rad_cvt_string(data, len); auth->mschap_error = Mdup(MB_AUTH, tmpval, len + 1); free(tmpval); Log(LG_RADIUS2, ("[%s] RADIUS: Get MS-CHAP-Error: %s", auth->info.lnkname, auth->mschap_error)); break; и как тут "впихнуть"?дописываем проверку:если 646 присваиваем auth->why_fail = AUTH_FAIL_RESTRICTED_HOURS если 647 присваиваем auth->why_fail = AUTH_FAIL_ACCT_DISABLED если 649 присваиваем auth->why_fail = AUTH_FAIL_NO_PERMISSION или п.3 относится уже к radius.c биллинга, а не mpd? Изменено 30 апреля, 2010 пользователем AlKov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 5 мая, 2010 · Жалоба Giga-Byte, патч, как я понял, чтобы mpd принимал MS-CHAP-Error при access-accept и считал его ошибкой?я уже не помню тонкостей. пробуйте, может родится другая версия. Я freeradius патчил на тему отдавать VSA при access-reject :) Там любые ошибки из списка можно отдавать: http://support.microsoft.com/kb/824864 А можно патчик посмотреть? VSA in Access-RejectSymptom: FreeRADIUS is not including VSA attributes in Access-Reject packets. (but it worked in earlier versions of FreeRADIUS) According RFC 2865 (section 5.44) Vendor-Specific Attributes aren't allow in Access-Reject packets. This behaviour was fixed in newer versions of FreeRADIUS Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
littlesavage Опубликовано 5 мая, 2010 · Жалоба VSA in Access-RejectSymptom: FreeRADIUS is not including VSA attributes in Access-Reject packets. (but it worked in earlier versions of FreeRADIUS) According RFC 2865 (section 5.44) Vendor-Specific Attributes aren't allow in Access-Reject packets. This behaviour was fixed in newer versions of FreeRADIUS Ага, именно это и патчил. Только на 1 freeradius, 2 не ковырял. --- src/main/util.c.orig 2009-09-05 02:24:19.000000000 +0400 +++ src/main/util.c 2009-09-05 02:24:40.000000000 +0400 @@ -458,6 +458,7 @@ pairmove2(&vps, &(packet->vps), PW_EAP_MESSAGE); pairmove2(&vps, &(packet->vps), PW_MESSAGE_AUTHENTICATOR); pairmove2(&vps, &(packet->vps), PW_REPLY_MESSAGE); + pairmove2(&vps, &(packet->vps), PW_VENDOR_SPECIFIC); break; } --- src/modules/rlm_mschap/rlm_mschap.c.orig 2009-09-05 02:49:14.000000000 +0400 +++ src/modules/rlm_mschap/rlm_mschap.c 2009-09-05 02:50:26.000000000 +0400 @@ -1224,8 +1224,8 @@ if (do_mschap(inst, request, password, challenge->strvalue, response->strvalue + offset, nthashhash) < 0) { DEBUG2(" rlm_mschap: MS-CHAP-Response is incorrect."); - add_reply(&request->reply->vps, *response->strvalue, - "MS-CHAP-Error", "E=691 R=1", 9); + /*add_reply(&request->reply->vps, *response->strvalue, + "MS-CHAP-Error", "E=691 R=1", 9);*/ return RLM_MODULE_REJECT; } @@ -1292,8 +1292,8 @@ if (do_mschap(inst, request, nt_password, mschapv1_challenge, response->strvalue + 26, nthashhash) < 0) { DEBUG2(" rlm_mschap: FAILED: MS-CHAP2-Response is incorrect"); - add_reply(&request->reply->vps, *response->strvalue, - "MS-CHAP-Error", "E=691 R=1", 9); + /*add_reply(&request->reply->vps, *response->strvalue, + "MS-CHAP-Error", "E=691 R=1", 9);*/ return RLM_MODULE_REJECT; } @@ -1333,8 +1333,8 @@ if (((smb_ctrl->lvalue & ACB_DISABLED) != 0) || ((smb_ctrl->lvalue & ACB_NORMAL) == 0)) { DEBUG2(" rlm_mschap: SMB-Account-Ctrl says that the account is disabled, or is not a normal account."); - add_reply( &request->reply->vps, *response->strvalue, - "MS-CHAP-Error", "E=691 R=1", 9); + /*add_reply( &request->reply->vps, *response->strvalue, + "MS-CHAP-Error", "E=691 R=1", 9);*/ return RLM_MODULE_NOTFOUND; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Giga-Byte Опубликовано 11 мая, 2010 · Жалоба 1. файл auth.c функция authAsync()if (RadiusAuthenticate(auth)) { } else { Log... закоментировать if (auth->success == AUTH_STATUS_SUCCESS) оставить return; } Это (выделено) опечатка? У меня там if (auth->status == AUTH_STATUS_SUCCESS) да, верно. 3. radius.c функция authgetparams()ищем строку RADIUS: Get MS-CHAP-Error: %s Такой функции не нашел в "своем" radius.c... Log(LG_RADIUS2, ("[%s] RADIUS: Get MS-CHAP-Error: %s" есть только в ф-ции RadiusGetParams вот тут switch (vendor) { ... Log(LG_RADIUS2, ("[%s] RADIUS: Get MS-CHAP-Error: %s", auth->info.lnkname, auth->mschap_error)); break; дописываем проверку:если 646 присваиваем auth->why_fail = AUTH_FAIL_RESTRICTED_HOURS если 647 присваиваем auth->why_fail = AUTH_FAIL_ACCT_DISABLED если 649 присваиваем auth->why_fail = AUTH_FAIL_NO_PERMISSION тоже верно.и как тут "впихнуть"? Log(LG_RADIUS2, ("[%s] RADIUS: Get MS-CHAP-Error: %s", auth->info.lnkname, auth->mschap_error)); { // By dmitriy. Handling Other error messages char *err_no; err_no = strstr(auth->mschap_error, "E="); if (err_no) { int err_num = 0; char *invalid = NULL; err_num = strtol((err_no+=2), &invalid, 10); if (!invalid) break; switch (err_num) { case 646: auth->why_fail = AUTH_FAIL_RESTRICTED_HOURS; break; case 647: auth->why_fail = AUTH_FAIL_ACCT_DISABLED; break; //case 648: auth->why_fail = AUTH_FAIL_PASSWORD_EXPIRED; break; case 649: auth->why_fail = AUTH_FAIL_NO_PERMISSION; break; } } // if err_no ... } // end of By dmitriy break; или п.3 относится уже к radius.c биллинга, а не mpd?нет, к mpd. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...