Freeradius + mssql more help project :- http://linux.tulipit.com
RPM installation
[EMAIL PROTECTED] ha.d]# rpm -qa | grep freetds
freetds-0.62.1-1
freetds-devel-0.62.1-1
freetds-unixodbc-0.62.1-1
[EMAIL PROTECTED] ha.d]# rpm -qa | grep unixODBC
freeradius-unixODBC-1.0.1-2.RHEL4
unixODBC-kde-2.2.9-1
unixODBC-devel-2.2.9-1
unixODBC-2.2.9-1
Software:
Using FreeRADIUS with MSSQL requires three components:
* FreeRADIUS - the radius server software
* FreeTDS - this is a set of libraries that know how to "talk" to a MSSQL
server.
* unixODBC - this is a conduit between FreeRADIUS and FreeTDS.
At one time, I think FreeRADIUS supported FreeTDS directly, but for some reason
the FreeRADIUS folks removed that capability in recent versions. So we have to
use unixODBC now. No biggie really. It's still pretty simple.
I used the following versions on my box:
* FreeRADIUS 1.1.0
* FreeTDS 0.63
* unixODBC 2.2.11
If your distro has these as RPMs, debs, etc, you might be able to get it going
with what the distro provides. If so, you can skip the install instructions and
focus on the configuration (but do be careful as your files won't likely be in
the same place that my files are). However, since I may want to use eDirectory
later, and since there is a special configure switch for FreeRADIUS to turn on
eDirectory support, I'm starting from scratch with all of them.
Compiling and installing:
untar freeradius-1.1.4.tar.gz
and compilation option is
./configure --localstatedir=/var --sysconfdir=/etc
make
make install
The general order to compile these three components is:
1. unixODBC
2. FreeTDS
3. FreeRADIUS
Part I - compiling/installing unixODBC and FreeTDS
unixODBC:
pretty straightforward. Just do a standard
./configure
make
make install
However, if your Linux box doesn't have X Windows (mine doesn't), do a
./configure --enable-gui=no
so that it won't try to compile any GUI components.
The only components of unixODBC that you have to deal with are the
configuration file odbc.ini and the isql "testing" program. The install routine
puts odbc.ini in /usr/local/etc, and puts isql in /usr/local/bin/ . You can't
really tweak the ini file until after you've installed FreeTDS, so we'll skip
that part for now.
What you need from unixODBC: you need the odbc.ini file in /usr/local/etc and
the isql program in /usr/local/bin.
FreeTDS:
again, pretty straightforward.
./configure
make
make install
I didn't need any options for ./configure. I think at one time you had to tell
it where unixODBC was, but versions since ~0.62 can find it by themselves
(which is why you have to compile/install unixODBC first... )
what you need from FreeTDS: the freetds.conf file in /usr/local/etc, the
libtdsodbc.so file in /usr/local/lib, and the tsql testing program in
/usr/local/bin
After you've got unixODBC and freeTDS installed, you almost ready to start
configuring files and testing your database connectivity.
Initial Test of FreeTDS:
Before you jump into the configuring part, do a quick test to make sure your
box can actually connect to your SQL server and that FreeTDS compiled and
installed cleanly. (Note that at this point, we aren't really using the
unixODBC stuff yet). Use the tsql program to do this. My SQL server name is
blackboard, and I'll use a SQL username of "tester" and a password of "letmein"
to get in.
tsql -H blackboard -p 1433 -U tester -P letmein
If it works, you should see this:
locale is "en_US"
locale charset is "ISO-8859-1"
1>
If you see that, you know that you can at least talk to your SQL server. That
is a Good Thing (tm). If the test fails, try using the IP instead of the
hostname (or edit your resolv.conf/update your DNS records/etc). If it still
fails, make sure you've, umm, you know, really GOT a SQL user on your database
server named "tester". If it still still fails, you've got mondo problems that
I won't get into here...
BTW - type "quit" to end the connection to the sql server.
Configuration file example:-
_______________/etc/odbc.ini____________________
[EMAIL PROTECTED] etc]# cat odbc.ini
[ODBC Data Sources]
FILEMANAGER = Radius on Blackboard
[FILEMANAGER]
Driver = /usr/lib/libtdsodbc.so
Description = Radius on Blackboard
Trace = No
Servername = FILEMANAGER
Database = radius
[Default]
Driver = /usr/lib/libtdsodbc.so
_______________/etc/freetds.conf________________
[EMAIL PROTECTED] etc]# cat freetds.conf
[global]
tds version = 8.0
initial block size = 512
text size = 64512
[FILEMANAGER]
host = filemanager
port = 1433
tds version = 8.0
dump file = /tmp/freetds.log
dump file append = yes
______________/etc/odbcinst.ini___________________
[EMAIL PROTECTED] etc]# cat odbcinst.ini
[ODBC]
Trace = Yes
TraceFile = /tmp/sql.log
ForceTrace = Yes
Pooling = No
UsageCount = 2
[TDS]
Description = FreeTDS
Driver = /usr/lib/libtdsodbc.so
#Setup = /usr/lib/libtdsS.so.1
#FileUsage = 2
#UsageCount = 2
_______________/etc/hosts__________________________
[EMAIL PROTECTED] etc]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
10.0.0.90 FILEMANAGER # windows machin name c:\>hostname
check your connectivity from mssql
Run this command on your command prompt
[EMAIL PROTECTED] ha.d]# tsql -S FILEMANAGER -U sa -P test
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Msg 5703, Level 0, State 1, Server FILEMANAGER, Line 0
Changed language setting to us_english.
1>
There are several other "sample" entries in the file. I deleted all of them
except the mypool entry. You can probably nuke it too, if you want.
Actually, if you're only going to be doing simple RADIUS authorizations, you
can rem out the tds version line. It will default to 4.2, which seemed to work
OK for me when I tried it. But for completeness, I left it in.
At this point, you should be able to test again with tsql. But this time, do it
like this:
tsql -S blackboardhost -U tester -P letmein
You should get the same SQL prompt as before
locale is "en_US"
locale charset is "ISO-8859-1"
1>
The -S option tells tsql to use the entry "blackboardhost" in the freetds.conf
file. If that works, then your FreeTDS setup is complete.
Troubleshooting:
Uh-oh. It didn't work. Lucky you, there's a verbose switch (-v) to isql. It's
very, very handy in debugging problems.
As long as the "tsql -S" test works, you can rest assured that your isql
problem is entirely related to your lack of typing skills when transcribing the
odbc.ini file or when typing in the isql command. :)
For instance, here's what you get when you misspell the username or password on
the isql command line:
[EMAIL PROTECTED] /etc]# isql -v blackboardDSN testeeeer letmein
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[28000][unixODBC][FreeTDS][SQL Server]Login incorrect.
[][unixODBC][FreeTDS][SQL Server]Login failed for user 'testeeeer'.
[ISQL]ERROR: Could not SQLConnect
Here's what happens when you misspell the DSN name on the command line:
[EMAIL PROTECTED] etc]# isql -v blackbooooardDSN tester letmein
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[ISQL]ERROR: Could not SQLConnect
Here's what you get when odbc.ini is pointing to the wrong directory for
libtdsodbc.so, or when the library name is misspelled.
(I changed it to point to the older location of
/usr/local/lib/freetds/libtdsodbc.ini for this example)
[EMAIL PROTECTED] etc]# isql -v blackboardDSN tester letmein
[01000][unixODBC][Driver Manager]Can't open lib
'/usr/local/lib/freetds/libtdsodbc.so' :
/usr/local/lib/freetds/libtdsodbc.so: cannot open shared object file: No
such file or directory
[ISQL]ERROR: Could not SQLConnect
Here's what happens when you misspell the ServerName in odbc.ini:
(I changed it to blackboooooardhost for this example)
[EMAIL PROTECTED] etc]# isql -v blackboardDSN tester letmein
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[ISQL]ERROR: Could not SQLConnect
Here's what happens when you misspell the database name in odbc.ini:
(radiuuus in this example)
[EMAIL PROTECTED] etc]# isql -v blackboardDSN tester letmein
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[28000][unixODBC][FreeTDS][SQL Server]Login incorrect.
[][unixODBC][FreeTDS][SQL Server]Login failed for user 'tester'.
[][unixODBC][FreeTDS][SQL Server]Cannot open database requested in login
'radiuuus'. Login fails.
[ISQL]ERROR: Could not SQLConnect
Like I said, so long as the "tsql -S" test works, then the only place you have
to look is in odbc.ini. Using unixODBC really IS that simple at this point of
the process.
Configuring the mssql.conf file:
While not too hard to configure, the mssql.conf file is really ugly. Lucky for
us, we only have to make a few changes to it, and those are all at the "top" of
the file. Just remember to check your double-quote marks.
1. Under Database type, make sure the driver line says
driver = "rlm_sql_unixodbc"
it already should say that, but be smart and check it.
2. Under Connect Info, set the "server" entry to be the DSN name you gave the
connection in odbc.ini. Remember that far back? Yes, it was long ago. Also, the
"login" and "password" are for the SQL user on the database server. I told you
those were coming.
# Connect info
server = "blackboardDSN"
login = "tester"
password = "letmein"
3. The radius_db entry (under Database table configuration) should say
"radius". If it doesn't, I can't help you anymore, because that means the
freeRADIUS guys have changed something big... ;)
# Database table configuration
radius_db = "radius"
4.The last thing you'll want to change is
# Print all SQL statements when in debug mode (-x)
sqltrace = no
sqltracefile = ${logdir}/sqltrace.sql
you really should set sqltrace to "yes" while you're debugging this. it will be
a great help, as it will print out all of the sql stuff when you run "radiusd
-X". You can reset it to "no" after you've got everything working.
That's it for mssql.conf, you don't have to touch any of the other stuff in the
file.
At this point, we have no way to test that mssql.conf is doing what we want,
since radiusd doesn't know to use sql yet. That's why it's so handy to turn
sqltrace on right now, because you're really going to need it later...
Finally, we get to the last little bit of all this. Tying it all together in
FreeRADIUS. Please wake up if you've fallen asleep. My great work, umm, sorry,
YOUR great work in all of this is soon to pay off and you'll want to be awake
when it does.
elmalhi abdelghani <[EMAIL PROTECTED]> wrote: hello,
i want testing my Freeradius with mssql.
so by starting radiusd -X i have this error:
rlm_sql (sql): Driver rlm_sql_unixodbc (module rlm_sql_unixodbc) loaded and
linked
rlm_sql (sql): Attempting to connect to [EMAIL PROTECTED]:/radius
rlm_sql (sql): starting 0
rlm_sql (sql): Attempting to connect rlm_sql_unixodbc #0
rlm_sql_unixodbc: SQL down 08S01 [unixODBC][FreeTDS][SQL Server]Server is
unavailable or does not exist.
rlm_sql_unixodbc: Connection failed
rlm_sql (sql): Failed to connect DB handle #0
rlm_sql (sql): starting 1
rlm_sql (sql): starting 2
rlm_sql (sql): starting 3
rlm_sql (sql): starting 4
rlm_sql (sql): Failed to connect to any SQL server.
tipps or help please ?
regards.
---------------------------------
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions !
Profitez des connaissances, des opinions et des expériences des internautes sur
Yahoo! Questions/Réponses.-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
$ cat ~/satish/url.txt
System administrator ( Data Center )
please visit this site
http://linux.tulipit.com
---------------------------------
SHOUT IT OUT! Tell everyone, from anywhere, that you're online on Yahoo!
Messenger -
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html