Ajouter le module rlm_sqlcounter.so à FreeRADIUS sur une Debian testing
Par Thus0, mardi 24 janvier 2006 à 20:29 :: GNU/Linux ::#93
Tutorial, How-To, HowTo
Le paquet freeradius fourni par debian ne contient pas les modules expérimentaux. Or pour l’utilisation du logiciel phpMyPrepaid, il faut installer le module freeradius rlm_sqlcounter.so pour l’accounting et utiliser l’attribut Radius : Max-All-Session. Ce tutorial va vous montrer comment créer un nouveau paquet .deb freeradius comportant les modules expérimentaux (dont rlm_sqlcounter.so).
Pour installer également les modules rlm_eap_tls.so et rlm_eap_ttls.so, voir mon articlé précédent : Ajouter les modules EAP/TLS et EAP/TTLS à FreeRADIUS sur une Debian testing.
Compilation de rlm_sqlcounter.so
Nous allons recompiler les sources de FreeRADIUS : pour cela, il faut rajouter une entrée deb-src dans votre fichier /etc/apt/sources.list si celle-ci n’existe pas :
deb-src http://http.us.debian.org/debian testing main contrib non-free
Installer les packages nécessaires pour générer le paquet .deb :
# apt-get install devscripts dpkg-dev
# apt-get install fakeroot build-essential
Installer les dépendances pour recompiler freeradius :
# mkdir -p /usr/src/freeradius
# cd /usr/src/freeradius
# apt-get build-dep freeradius
# apt-get install python-dev
# apt-get install libperl-dev
# apt-get install libssl-dev
# apt-get source freeradius
Modifier le fichier debian/rules :
Rajouter dans le bloc .configure, la ligne suivante :
--with-experimental-modules
Modifier le fichier debian/control :
Supprimer la ligne :
Build-Conflicts: libssl-dev
Modifier le changelog du paquet .deb :
# cd /usr/src/freeradius/freeradius-1.0.5
# dch -iet rajouter des commentaires....
Générer le paquet .deb :
# dpkg-buildpackage -rfakeroot -uc -us
Installer les paquets .deb générés :
Rq : le script d’installation effectue un "freeradius restart", ce qui peut provoquer des erreurs ou des warnings si le serveur freeradius n’est pas lancé au moment de l’installation (cf. 1ère ligne)
# /etc/init.d/freeradius start
# cd ..
# dpkg -i *.debFinalisation de l’installation...
Pour marquer le paquet .deb comme "hold" et éviter de le désinstaller lors d’une mise à jour de debian via un apt-get update :
echo "freeradius hold" | dpkg --set-selectionsRq : pour enlever le paquest .deb marqué comme "hold" :
# echo "freeradius install" |dpkg --set-selectionsConfiguration
Créer le fichier /etc/freeradius/sqlcounter.conf :
sqlcounter noresetcounter {
driver = "rlm_sqlcounter"
counter-name = Max-All-Session-Time
check-name = "Max-All-Session"
sqlmod-inst = sql
key = User-Name
reset = never
query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}'"
}Rajouter dans le fichier /etc/freeradius/radiusd.conf
[...]
$INCLUDE ${confdir}/sql.conf
$INCLUDE ${confdir}/sqlcounter.conf
[...]
instantiate {
[...]
expr
noresetcounter
[...]
}
authorize {
[...]
sql
noresetcounter
[...]
}
accounting {
detail
[...]
sql
}
session {
sql
}
Commentaires
Bonjour,
Excellent tutorial comme d’habitude !!!!
J’ai cependant un probleme avec le module Max_all_session. Mon interface phpmyprepaid fonctionne, je peux crée mes utilisateurs(login/mot de passe). les information sont ecrite ds la table radcheck.5 lignes sont donc ecrite pour la creation d’un utilisateur.suivant leur attributs :
User-password simultaneous-use WISPr-location-ID Acct-Interim-Interval expiration Max-All-Session
Mais des que je veux me connecter a l’aide de l’interface chillispot (avec le login et le mot de passe crée par phpmyprepaid) cela ne marche pas et me renvoi login failed)
si je supprime la ligne ds la table radcheck ou apparait Max-All-Session, la connexion s’effectue correctement.
donc j’aurai savoir si vous auriez des precisions sur Max-All-Session.
PS : j’ai suivit ce how to a la lettre sans qu’une erreur se produise.
Merci d’avance cordialement
salut Thus !!!!
j’aurais peut etre une precision a te suggerer pour ce howto. J’ai réinstaller freeradius+chillispot sur une autre machine qui sera elle implanter ds une entreprise. Mais j’ai eu un probleme sur phpmyprepaid. le compte a rebours ne s’effectué pas jusqu’a temps que je trouve qu’il falait rajouter les ligne suivantes ds radiusd !.conf
Dans la partie "instantiate" rajouter noresetcounter
Dans la partie "authorize" rajouter noresetcounter
tant que je ne place pas noresetcounter ds ces deu partie ca ne marche pas.
peut etre est t’il utilise de le mentionner ??? voila a plus
Bonsoir,
Je debute sur le sujet de freeradius et les differents tutoriaux du site m’ont ENORMEMENT aides. Merci beaucoup.
J’ai installe dans un premier temps freeradius + mysql et tout fonctionne bien
Maintenant avec la recompilation tout fonctionne. J’aurais une petite remarque a faire : pour que le dpkg -i fonctionne, il est IMPERATIF que freeradius soit lance, autrement il y a plein de messages d’erreur et la compilation echoue.
Une derniere chose : au premier essai d’installation, on nous demande si l’on souhaite garder ou non les fichiers de conf. Un petit mot a ce propos pourrait eviter des erreurs
Merci encore
Patrick Bury
Bonjour,
J’ai un petit probléme avec la commande apt-get build-dep, la console me retourne ceci : E : la dépendance Build-depends vis à vis de freeradius ne peut etre satisfaite car aucune version du paquet debhelper ne peut satisfaire la version requise. ??? Version freeradius-1.1.3 mon apt source list conforme au tuto.
Ensuite pour le probléme de connection en admin avec prepaid faut coder le mot passe... (md5) dans mysql directement car en clair cela ne marche pas. ( à moins de connaitre la commande, ce qui n’étais pas mon cas )
exemple : user:az MdP:azert48 ----> marche pas user:az MdP:9070c0a68f92ffba9ce47c08e83b4c11 -----> marche
Merci
Bonjour Thus0,
Je suis en train de configurer un serveur Radius avec le module sql counter et je me pose une question : Est-il possible de compter un temps de session global d’accès que l’utilisateur soit connecté ou non ? En fait je voudrais pouvoir donner accès illimité à une personne pendant un nombre de jour, de semaines ou de mois donnés et à partir d’une date fixée.
Exemple : Un utilisateur a accès pendant 3 jours à partir du 08/03/07 à 16h. Sa connexion devra donc s’interrompre le 11/03/07 à 16h quelque soit le temps qu’il a passé a surfer.
Est-ce qu’il est possible de décompter un temps à partir d’une date fixe qui ne dépend pas de la connexion de l’utilisateur ?
Sinon, question subsidiaire, est-il au moins possible de décompter le temps à partir de la première connexion de l’utilisateur sans tenir compte de ses déconnexions et reconnexions qui suivent. ?
Merci beaucoup de ta réponse,
@+
Salut tout le monde,
J’ai besoin de vos conseils.
Je suis à la recherche d’une solution internet prépayé (PIN code...)+authentification FreeRadius.
Les utilisateurs devront se connecter à Internet via des hotspots éparpillés partout dans le monde grace à des aggrégateurs d’Hotspot tels que Boingo, WeRoam... Ces utilisateurs vont s’authentifier à mon serveur FreeRadius et j’ai envie de lui associé un serveur de billing prenant en charge le prépayé (carte avec PIN code) ainsi que le postpayé. Les utilisateurs seront déconnectés automatiquement dès que leur crédit (temps de connection) sera épuisé. Est il possible de faire cela avec FreeRadius+phpmyprepaid ? A propos de FreeRadius, j’ai appris qu’un utilisateur se "déconnectait" dès que l’attribut session-timeout atteignait 0. Est-ce que cette attribut est globale à tous les utilisateurs ou il est possible d’assigner une valeur differente pour chaque utilisateur ? En gros, "session-timeout" = "credit restant" ? La valeur de cette attribut (session-timeout) est mise à jour automatiquement par FreeRadius ou bien c’est à l’admin de faire tourner un script ?
Si vous avez un bon site ou tuto à me proposer, n’hesiter pas à me contacter sur manvoip@gmail.com
Merci beaucoup, Très cordialement
Bonjour THUS,
Merci encore pour ton excellent travail. Après avoir installé PhpmyPrePaid 0.4 beta 1 (je n’arrive à rien avec la beta 2 j’ai un problème de création des bases mysql, alors qu’avec la beta 1 les bases mysql se créer parfaitement) l’installation se passe très bien et je renseigne à mon avis correctement l’ensemble des champs sur le backoffice phpmyprepaid.
Après l’installe et après m’être logué bien sur, voici ce que j’obtient. (copie d’écran)
MA CONFIG :
OPENSUSE 10.2
FREERADIUS 1.1.3
DIALUPADMIN 1.1.3
APACHE2
PHP5
MYSQL 5.0.26
Ma config freeraidus fonctionne, ainsi que dialupadmin.
Peut tu m’aider à trouver mon problème ?
Merci d’avance Thus.
Bonjour Thus,
J’ai installé PHPMYPREPAID 0.4 beta 1 et depuis l’interface je n’arrive pas à renseigner les NAS.
Je clique sur "SHOW LOCATION" => "ADD LOCATION" Je rempli les champs => Location Name, Domain, Country code, Area code, City.
Quand je veut valider ma saisie, le bouton "ADD LOCATION" ne fonctionne pas. IL ne se passe rien et ma saisie n’a pas été enregistrée !
Quelqu’un à t’il une idée sur mon problème. Cordialement