пятница, 26 октября 2012 г.

Freeradius + mpd без проверки реквизитов.

Возникла смешная задача.
Есть серверы с mpd5 терминирующие pppoe , они за авторизацией обращаются к радиусу, встроенному в биллинг.

Радиус тот, понятно закрытый, с ним не побалуешься.

Но возникла задача по обслуживанию машины с биллингом. Нужно останавливать.

Идея - на время работ с "боевым" радиусом. Поднять freeradius рядом, который бы на любую связку login/pass давал ACCEPT и какое нить среднее ограничение скорости. На время работ.

Добавляем dictionary.mpd


VENDOR  mpd 12341                                                                                                
                                                                                                                 
BEGIN-VENDOR    mpd                                                                                              
                                                                                                                 
ATTRIBUTE   mpd-rule     1  string                                                                              
ATTRIBUTE   mpd-pipe     2  string                                                                              

ATTRIBUTE   mpd-queue    3  string                                                                              
ATTRIBUTE   mpd-table    4  string                                                                              

ATTRIBUTE   mpd-table-static    5   string                                                                      

ATTRIBUTE   mpd-filter   6  string                                                                              

ATTRIBUTE   mpd-limit    7  string                                                                              
ATTRIBUTE   mpd-input-octets    8   string                                                                      

ATTRIBUTE   mpd-input-packets   9   string                                                                      
ATTRIBUTE   mpd-output-octets   10  string                                                                      

ATTRIBUTE   mpd-output-packets  11  string                                                                      
ATTRIBUTE   mpd-link     12 string                                                                              
ATTRIBUTE   mpd-bundle   13 string                                                                              

ATTRIBUTE   mpd-iface    14 string                                                                              

ATTRIBUTE   mpd-iface-index 15  integer                                                                        

ATTRIBUTE   mpd-input-acct  16  string                                                                          

ATTRIBUTE   mpd-output-acct 17  string                                                                          
ATTRIBUTE   mpd-drop-user    154    integer                                                                      
                                                                                                                 
END-VENDOR mpd

Вписываем его в dictionary
 $INCLUDE dictionary.mpd
Правим raddb/users:
 DEFAULT Auth-Type := Accept
     mpd-limit = "out#1=all shape 10240000 pass ",
     mpd-limit += "in#1=all rate-limit 2048000 pass",
     Framed-Pool = "local",

В mpd.conf:
    set link enable pap                                                                                          
    set link no chap-md5                                                                                        
    set link no chap chap-msv1 chap-msv2  

chap запрещаем, ибо оно от радиуса хочет всякие там  MS-CHAP2-Success и прочую ерунду.

Теперь можно логиниться с любым паролем и именем пользователя.

Можно  было б не использовать радиус вообще, просто запретить авторизацию на mpd , но не ясно как тогда выставить лимиты.