Freeradius und MySQL 
Ich habe jetzt einige Stunden damit zugebracht, einen FreeRADIUS mit MySQL sprechen zu lassen. Nicht, dass es dazu kein Modul gäbe, nein, apt-get install freeradius-mysql und alle Voraussetzungen sind da. Da Problem ist, dass das Befuellen der Datenbank nicht eindeutig geklaert ist. Wenn man dafrueber nachdenkt, ist das natuerlich auch klar, weil die einzufuellenden Attribute natuerlich vom Anwendungszweck abhängen: In meinem Projekt ging es um Dial-In User, die via L2TP von einer Cisco versuchen, sich zu authentifizieren. Ein meinem Spezialfall enthält der Benutzername auch noch ein # Zeichen. Sonfernzeichen werden fom FreeRADIUS MIME-encoded and die DB weitergegeben. Das führt dazu, dass der Benutzername nicht "user#suffix@domain", sondern als "user=23suffix@domain" repräsentiert wird. Das ist natürlich Quatsch und läßt sich wie folgt beheben (Thx, Lilalinux!): Man fügt das # (hash) in der sql.conf zu den safe-characters hinzu:
safe-characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /#"
Und zum Anlegen eines User habe ich das folgendes Bash-Script entwickelt (Da es nur ein Provisorium ist, fängt es u.a. keine Fehler ab)
#!/bin/sh
# (c)= Andras John, GPL V2
DBNAME=
"radius"
USERNAME=$1
PASS=$2
STATICIP=$3
echo
"insert into usergroup(UserName, Groupname) VALUES('${USERNAME}','static');" | mysql ${DBNAME}
echo
"insert into usergroup(UserName, Groupname) VALUES('${USERNAME}','static');" | mysql ${DBNAME}
echo
"insert into radcheck(UserName,Attribute,Value,Op) VALUES('${USERNAME}','Password','${PASS}','==');" | mysql ${DBNAME}
# only once
echo
"insert into radgroupcheck(GroupName,Attribute,Value,Op) VALUES('static','Auth-Type','Local',':=');" | mysql ${DBNAME}
#
echo
"insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Service-Type','Framed',':=');" | mysql ${DBNAME}
echo
"insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Framed-Protocol','PPP',':=');" | mysql ${DBNAME}
echo
"insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Framed-Routing','None',':=');" | mysql ${DBNAME}
echo
"insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Framed-IP-Address','${STATICIP}',':=');" | mysql ${DBNAME}