Help with sqlippool

Madwifi madwifi at vermark.com
Mon Oct 27 03:39:49 CET 2008


I need some help trying to configure sqlippool. 

I've followed the instruction from http://wiki.freeradius.org/Rlm_sqlippool and few other places.

I did compile FR from source with the following configuration options:

Options 1:
./configure --prefix=/usr/local/freeradius-server-2.1.1 --with-openssl --with-threads --with-vmps --with-modules=rlm_sqlippool

Options 2:
./configure --prefix=/usr/local/freeradius-server-2.1.1 --with-openssl --with-threads --with-vmps --with-rlm_sqlippool

Options 3:
./configure --prefix=/usr/local/freeradius-server-2.1.1 --with-openssl --with-threads --with-vmps --enable-rlm_sqlippool
 
Each time my start access point running hostapd, FR crashes with the following message.




Sun Oct 26 22:10:49 2008 : Info: ++[sradutmp] returns ok
Sun Oct 26 22:10:49 2008 : Debug: rlm_sql (sql): Reserving sql socket id: 1
Sun Oct 26 22:10:49 2008 : Info: [sqlippool]  expand: %{User-Name} -> 
Sun Oct 26 22:10:49 2008 : Info: [sqlippool] sql_set_user escaped user --> ''
Sun Oct 26 22:10:49 2008 : Info: [sqlippool]  expand: START TRANSACTION -> START TRANSACTION
radiusd: symbol lookup error: /usr/local/freeradius-server-2.1.1/lib/rlm_sqlippool-2.1.1.so: undefined symbol: rlm_sql_query

Below are my configuration
OS: Ubuntu (Kernel 2.6.24-21)
FR: 2.1.1

radiusd.conf

  exec_prefix = ${prefix}
  sysconfdir = ${prefix}/etc
  localstatedir = ${prefix}/var
  sbindir = ${exec_prefix}/sbin
  logdir = ${localstatedir}/log/radius
  raddbdir = ${sysconfdir}/raddb
  radacctdir = ${logdir}/radacct
  name = radiusd
  confdir = ${raddbdir}
  run_dir = ${localstatedir}/run/radiusd
  db_dir = ${raddbdir}
  libdir = ${exec_prefix}/lib
  pidfile = ${run_dir}/${name}.pid
  max_request_time = 30
  cleanup_delay = 5
  max_requests = 1024
  listen {
          type = auth
          ipaddr = *
          port = 0
  }
  listen {
          ipaddr = *
          port = 0
          type = acct
  }
  hostname_lookups = no
  allow_core_dumps = no
  regular_expressions     = yes
  extended_expressions    = yes
  log {
          destination = files
          file = ${logdir}/radius.log
          syslog_facility = daemon
          stripped_names = no
          auth = no
          auth_badpass = no
          auth_goodpass = no
  }
  checkrad = ${sbindir}/checkrad
  security {
          max_attributes = 200
          reject_delay = 1
          status_server = yes
  }
  proxy_requests  = yes
  $INCLUDE proxy.conf
  $INCLUDE clients.conf

  thread pool {
          start_servers = 5
          max_servers = 32
          min_spare_servers = 3
          max_spare_servers = 10
          max_requests_per_server = 0
  }
  modules {
          $INCLUDE ${confdir}/modules/
          $INCLUDE eap.conf
          $INCLUDE sql.conf
          $INCLUDE sql/mysql/counter.conf
          $INCLUDE sqlippool.conf
  }
  instantiate {
          exec
          expr
          daily
          expiration
          logintime
  }
  $INCLUDE policy.conf
  $INCLUDE sites-enabled/



sites-enabled/default

  authorize {
          preprocess
          chap
          mschap
          suffix
          eap {
                  ok = return
          }
          unix
          #files
          sql
          daily
          expiration
          logintime
          pap
  }
  authenticate {
          Auth-Type PAP {
                  pap
          }
          Auth-Type CHAP {
                  chap
          }
          Auth-Type MS-CHAP {
                  mschap
          }
          unix
          eap
  }
  preacct {
          preprocess
          acct_unique
          suffix
          #files
  }
  accounting {
          detail
          daily
          unix
          radutmp
          sradutmp
          sqlippool
          sql
          sql_log
          attr_filter.accounting_response
  }
  session {
          radutmp
  }
  post-auth {
          sqlippool
          reply_log
          sql
          sql_log
          exec
          Post-Auth-Type REJECT {
                  attr_filter.access_reject
          }
  }
  pre-proxy {
  }
  post-proxy {
          eap
  }



ippool.conf

   allocate-clear = "UPDATE ${ippool_table} \
    SET nasipaddress = '', pool_key = 0, \
    callingstationid = '', username = '', \
    expiry_time IS NULL \
    WHERE expiry_time <= NOW() - INTERVAL 1 SECOND
    AND nasipaddress = '%{Nas-IP-Address}'"

  allocate-find = "SELECT framedipaddress FROM ${ippool_table} \
   WHERE pool_name = '%{control:Pool-Name}' AND expiry_time < NOW() \
   ORDER BY (username <> '%{User-Name}'), \
   (callingstationid <> '%{Calling-Station-Id}'), \
   expiry_time \
   LIMIT 1 \
   FOR UPDATE"

  pool-check = "SELECT id FROM ${ippool_table} \
   WHERE pool_name='%{control:Pool-Name}' LIMIT 1"
  allocate-update = "UPDATE ${ippool_table} \
   SET nasipaddress = '%{NAS-IP-Address}', pool_key = '${pool-key}', \
   callingstationid = '%{Calling-Station-Id}', username = '%{User-Name}', \
   expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
   WHERE framedipaddress = '%I'"
  start-update = "UPDATE ${ippool_table} \
   SET expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
   WHERE nasipaddress = '%{NAS-IP-Address}' AND  pool_key = '${pool-key}'"

  stop-clear = "UPDATE ${ippool_table} \
   SET nasipaddress = '', pool_key = 0, callingstationid = '', username = '', \
   expiry_time IS NULL \
   WHERE nasipaddress = '%{Nas-IP-Address}' AND pool_key = '${pool-key}' \
   AND username = '%{User-Name}' \
   AND callingstationid = '%{Calling-Station-Id}' \
   AND framedipaddress = '%{Framed-IP-Address}'"

  alive-update = "UPDATE ${ippool_table} \
   SET expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
   WHERE nasipaddress = '%{Nas-IP-Address}' AND pool_key = '${pool-key}' \
   AND username = '%{User-Name}' \
   AND callingstationid = '%{Calling-Station-Id}' \
   AND framedipaddress = '%{Framed-IP-Address}'"

  on-clear = "UPDATE ${ippool_table} \
   SET nasipaddress = '', pool_key = 0, callingstationid = '', username = '', \
   expiry_time IS NULL \
   WHERE nasipaddress = '%{Nas-IP-Address}'"

  off-clear = "UPDATE ${ippool_table} \
   SET nasipaddress = '', pool_key = 0, callingstationid = '', username = '', \
   expiry_time IS NULL \
   WHERE nasipaddress = '%{Nas-IP-Address}'"

sqlippool.conf

  sqlippool {

   sql-instance-name = "sql"
   ippool_table = "radippool"
   lease-duration = 3600
   pool-key = "%{NAS-Port}"
   #pool-key = "%{Calling-Station-Id}"
   $INCLUDE sql/mysql/ippool.conf

   sqlippool_log_exists = "Existing IP: %{reply:Framed-IP-Address} \
    (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

   sqlippool_log_success = "Allocated IP: %{reply:Framed-IP-Address} from %{control:Pool-Name} \
    (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

   sqlippool_log_clear = "Released IP %{Framed-IP-Address}\
   (did %{Called-Station-Id} cli %{Calling-Station-Id} user %{User-Name})"

   sqlippool_log_failed = "IP Allocation FAILED from %{control:Pool-Name} \
    (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

   sqlippool_log_nopool = "No Pool-Name defined \
    (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

  }
radippool table


mysql> select * from radippool;

+----+-----------+-----------------+--------------+---------------------------+------------------+-------------+----------+----------+-----------------+-------------+----------+----------+

| id | pool_name | framedipaddress | nasipaddress | calledstationid           | callingstationid | expiry_time | username | pool_key |

+----+-----------+-----------------+--------------+---------------------------+------------------+-------------+----------+----------+-----------------+-------------+----------+----------+

|  2 | main_pool | 10.5.5.29       | 192.168.2.31 | 06-07-6F-4A-C1-60:Tlink-g |                        | NULL        | testuser      |                  | 

|  3 | main_pool | 10.5.5.30       | 192.168.2.31 | 06-07-6F-4A-C1-60:Tlink-g |                        | NULL        | testuser2    |                  | 
    
+----+-----------+-----------------+--------------+---------------------------+------------------+-------------+----------+----------+-----------------+-------------+----------+----------+

2 rows in set (0.00 sec)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20081026/8720f4bc/attachment.html>


More information about the Freeradius-Users mailing list