1 votes

freeradius : attribuer une IP à partir d'un pool spécifique filtré par l'utilisateur

Je suis nouveau ici.

J'ai un freeradius 3 avec sqlippool et authentification LDAP (avec un utilisateur configuré dans le fichier "guest"), tout fonctionne bien. J'ai 2 sqlippools :

-main_pool

-pool d'invités

Je souhaite procéder comme suit :

si l'utilisateur est "guest", il propose une IP du guest_pool, sinon il propose celle du main_pool. Mon idée est d'avoir les invités et les autres utilisateurs dans des vlans différents.

Comment puis-je dire à radius dhcp "si l'utilisateur est invité à offrir du guest_pool ?

Désolé pour mon mauvais anglais.

Gracias.

0voto

goofle Points 171

J'ai résolu le problème !

Merci à Arran Cudbard-Bell pour l'indice !

Tout d'abord, nous avons créé une table appelée "userhardaddr" avec le nom d'utilisateur et le mac(PK) tous deux varchar.

Dans (radius conf dir)/sites-enabled/defaul (section post-auth) j'ai fait une requête "REPLACE" :

post-auth {
    ...
    update reply {
        Tmp-String-0 := "%{sql:REPALCE INTO userhardaddr(username,mac) VALUES(%{User-Name},%{Calling-Station-Id})}"
    ... 
    }
}

Cela remplace l'utilisateur pour un MAC connecté dans la table s'il existe. S'il n'existe pas, REPLACE crée la ligne comme dans INSERT.

Ensuite, dans sites-enabled/dhcp (sections discover et request) :

dhcp DHPC-Discover {
    update request {
        ...
        User-Name = "%{sql:SELECT username FROM userhardaddr where mac = REPLACE ('%{DHCP-Client-Hardware-Address}',':','-')}"
        ...
    }
    ...
    if(&User-Name=='guest') {
        &Pool-Name = "guest_pool"
    }
    else {
        &Pool-Name = "main_pool"
    }
...
}
...
dhcp DHPC-Request {
    (same in discover)
}

J'obtiens ainsi le nom de l'utilisateur à partir de la base de données en fonction de l'adresse mac.

Dans l'instruction IF, je compare la valeur renvoyée par la requête à "guest" et j'attribue le pool IP correspondant.

Merci encore.

Voir aussi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X