Freeradius 3.0.14 - Enable SQLite

Stabla, Daniel dstabla at materna.de
Fri Jun 9 08:24:48 CEST 2017


Hello,

I figured it out, the hint from Matthew did the trick.

Because of the wrong position of some lines in the configuration file, 
radiusd searched for the wrong rlm*.so.

I altered the configuration to this, look at the line with "bob":

----------------------------------------------------------------------------------------------------

# -*- text -*-
##
## sql.conf -- SQL modules
##
##      $Id: 4997a802dfd8660f622d06f577a787bf30895e3e $

######################################################################
#
#  Configuration for the SQL module
#
#  The database schemas and queries are located in subdirectories:
#
#       sql/<DB>/main/schema.sql        Schema
#       sql/<DB>/main/queries.conf      Authorisation and Accounting queries
#
#  Where "DB" is mysql, mssql, oracle, or postgresql.
#
#

#
#  Several drivers accept specific options, to set them a config section
#  matching the name of the driver should be added to the sql instance.
#
#  Driver specific options are:
#
#
#  mysql {
#       # If any of the below files are set tls encryption is enabled
#       tls {
#               ca_file = "/etc/ssl/certs/my_ca.crt"
#               ca_path = "/etc/ssl/certs/"
#               certificate_file = "/etc/ssl/certs/private/client.crt"
#               private_key_file = "/etc/ssl/certs/private/client.key"
#               cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
#       }
#  }

bob {
         filename = "/tmp/nope.txt"
}

sql {
         sqlite {
                 # Path to the sqlite database
                 filename = "/tmp/database.db"

                 # If the file above does not exist and bootstrap is set
                 # a new database file will be created, and the SQL 
statements
                 # contained within the file will be executed.
                 bootstrap = 
"/etc/radiusd-acct/mods-config/sql/main/sqlite/schema.sql"
         }

         # The sub-module to use to execute queries. This should match
         # the database you're attempting to connect to.
         #
         #    * rlm_sql_mysql
         #    * rlm_sql_mssql
         #    * rlm_sql_oracle
         #    * rlm_sql_postgresql
         #    * rlm_sql_sqlite
         #    * rlm_sql_null (log queries to disk)
         #
         driver = "rlm_sql_sqlite"

         # The dialect of SQL you want to use, this should usually match
         # the driver you selected above.
         #
         # If you're using rlm_sql_null, then it should be the type of
         # database the logged queries are going to be executed against.
         dialect = "sqlite"

         # Database table configuration for everything except Oracle
         radius_db = "radius"

         # If you want both stop and start records logged to the
         # same SQL table, leave this as is.  If you want them in
         # different tables, put the start table in acct_table1
         # and stop table in acct_table2
         acct_table1 = "radacct"
         acct_table2 = "radacct"

         # Allow for storing data after authentication
         postauth_table = "radpostauth"

         # Tables containing 'check' items
         authcheck_table = "radcheck"
         groupcheck_table = "radgroupcheck"

         # Tables containing 'reply' items
         authreply_table = "radreply"
         groupreply_table = "radgroupreply"

         # Table to keep group info
         usergroup_table = "radusergroup"

         # If set to 'yes' (default) we read the group tables
         # If set to 'no' the user MUST have Fall-Through = Yes in the 
radreply table
         read_groups = yes

         # Remove stale session if checkrad does not see a double login
         delete_stale_sessions = yes

         # Write SQL queries to a logfile. This is potentially useful 
for tracing
         # issues with authorization queries.
#       logfile = ${logdir}/sqllog.sql

         #  As of version 3.0, the "pool" section has replaced the
         #  following configuration items:
         #
         #  num_sql_socks
         #  connect_failure_retry_delay
         #  lifetime
         #  max_queries

         #
         #  The connection pool is new for 3.0, and will be used in many
         #  modules, for all kinds of connection-related activity.
         #
         pool {
                 # Number of connections to start
                 start = 5

                 # Minimum number of connections to keep open
                 min = 4

                 # Maximum number of connections
                 #
                 # If these connections are all in use and a new one
                 # is requested, the request will NOT get a connection.
                 max = 10

                 # Spare connections to be left idle
                 #
                 # NOTE: Idle connections WILL be closed if "idle_timeout"
                 # is set.
                 spare = 3

                 # Number of uses before the connection is closed
                 #
                 # 0 means "infinite"
                 uses = 0

                 # The lifetime (in seconds) of the connection
                 lifetime = 0

                 # idle timeout (in seconds).  A connection which is
                 # unused for this length of time will be closed.
                 idle_timeout = 60

                 # NOTE: All configuration settings are enforced. If a
                 # connection is closed because of "idle_timeout",
                 # "uses", or "lifetime", then the total number of
                 # connections MAY fall below "min".  When that
                 # happens, it will open a new connection.  It will
                 # also log a WARNING message.
                 #
                 # The solution is to either lower the "min" connections,
                 # or increase lifetime/idle_timeout.
         }

         # Set to 'yes' to read radius clients from the database ('nas' 
table)
         # Clients will ONLY be read on server startup.
#       read_clients = yes

         # Table to keep radius client info
         client_table = "nas"

         # This entry should be used for the default instance (sql {})
         # of the SQL module.
         group_attribute = "SQL-Group"

         # Read database-specific queries
         $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}

# -*- text -*-
##
## sql.conf -- SQL modules
##
##      $Id: 4997a802dfd8660f622d06f577a787bf30895e3e $

######################################################################
#
#  Configuration for the SQL module
#
#  The database schemas and queries are located in subdirectories:
#
#       sql/<DB>/main/schema.sql        Schema
#       sql/<DB>/main/queries.conf      Authorisation and Accounting queries
#
#  Where "DB" is mysql, mssql, oracle, or postgresql.
#
#

#
#  Several drivers accept specific options, to set them a config section
#  matching the name of the driver should be added to the sql instance.
#
#  Driver specific options are:
#
#
#  mysql {
#       # If any of the below files are set tls encryption is enabled
#       tls {
#               ca_file = "/etc/ssl/certs/my_ca.crt"
#               ca_path = "/etc/ssl/certs/"
#               certificate_file = "/etc/ssl/certs/private/client.crt"
#               private_key_file = "/etc/ssl/certs/private/client.key"
#               cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
#       }
#  }

bob {
         filename = "/tmp/nope.txt"
}

sql {
         sqlite {
                 # Path to the sqlite database
                 filename = "/tmp/database.db"

                 # If the file above does not exist and bootstrap is set
                 # a new database file will be created, and the SQL 
statements
                 # contained within the file will be executed.
                 bootstrap = 
"/etc/radiusd-acct/mods-config/sql/main/sqlite/schema.sql"
         }

         # The sub-module to use to execute queries. This should match
         # the database you're attempting to connect to.
         #
         #    * rlm_sql_mysql
         #    * rlm_sql_mssql
         #    * rlm_sql_oracle
         #    * rlm_sql_postgresql
         #    * rlm_sql_sqlite
         #    * rlm_sql_null (log queries to disk)
         #
         driver = "rlm_sql_sqlite"

         # The dialect of SQL you want to use, this should usually match
         # the driver you selected above.
         #
         # If you're using rlm_sql_null, then it should be the type of
         # database the logged queries are going to be executed against.
         dialect = "sqlite"

         # Database table configuration for everything except Oracle
         radius_db = "radius"

         # If you want both stop and start records logged to the
         # same SQL table, leave this as is.  If you want them in
         # different tables, put the start table in acct_table1
         # and stop table in acct_table2
         acct_table1 = "radacct"
         acct_table2 = "radacct"

         # Allow for storing data after authentication
         postauth_table = "radpostauth"

         # Tables containing 'check' items
         authcheck_table = "radcheck"
         groupcheck_table = "radgroupcheck"

         # Tables containing 'reply' items
         authreply_table = "radreply"
         groupreply_table = "radgroupreply"

         # Table to keep group info
         usergroup_table = "radusergroup"

         # If set to 'yes' (default) we read the group tables
         # If set to 'no' the user MUST have Fall-Through = Yes in the 
radreply table
         read_groups = yes

         # Remove stale session if checkrad does not see a double login
         delete_stale_sessions = yes

         # Write SQL queries to a logfile. This is potentially useful 
for tracing
         # issues with authorization queries.
#       logfile = ${logdir}/sqllog.sql

         #  As of version 3.0, the "pool" section has replaced the
         #  following configuration items:
         #
         #  num_sql_socks
         #  connect_failure_retry_delay
         #  lifetime
         #  max_queries

         #
         #  The connection pool is new for 3.0, and will be used in many
         #  modules, for all kinds of connection-related activity.
         #
         pool {
                 # Number of connections to start
                 start = 5

                 # Minimum number of connections to keep open
                 min = 4

                 # Maximum number of connections
                 #
                 # If these connections are all in use and a new one
                 # is requested, the request will NOT get a connection.
                 max = 10

                 # Spare connections to be left idle
                 #
                 # NOTE: Idle connections WILL be closed if "idle_timeout"
                 # is set.
                 spare = 3

                 # Number of uses before the connection is closed
                 #
                 # 0 means "infinite"
                 uses = 0

                 # The lifetime (in seconds) of the connection
                 lifetime = 0

                 # idle timeout (in seconds).  A connection which is
                 # unused for this length of time will be closed.
                 idle_timeout = 60

                 # NOTE: All configuration settings are enforced. If a
                 # connection is closed because of "idle_timeout",
                 # "uses", or "lifetime", then the total number of
                 # connections MAY fall below "min".  When that
                 # happens, it will open a new connection.  It will
                 # also log a WARNING message.
                 #
                 # The solution is to either lower the "min" connections,
                 # or increase lifetime/idle_timeout.
         }

         # Set to 'yes' to read radius clients from the database ('nas' 
table)
         # Clients will ONLY be read on server startup.
#       read_clients = yes

         # Table to keep radius client info
         client_table = "nas"

         # This entry should be used for the default instance (sql {})
         # of the SQL module.
         group_attribute = "SQL-Group"

         # Read database-specific queries
         $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}
----------------------------------------------------------------------------------------------------

If I start now radiusd -X, than I get this error:

/etc/radiusd-acct/mods-enabled/sql[38]: Failed to link to module 
'rlm_bob': /usr/local/lib64/rlm_bob.so: cannot open shared object file: 
No such file or directory /usr/local/lib/rlm_bob.so: cannot open shared 
object file: No such file or directory

Honestly, in my eyes this error is a bit misleading, because it tells me 
that a library is missing and not that the configuration is broken. But 
okay, out of mistakes I can learn.

Nevertheless, thank you all and have a nice day.

Kind regards.


D. Stabla



More information about the Freeradius-Users mailing list