rlm_cache

BALSIANOK, Peter Peter.BALSIANOK at orange.com
Wed Sep 3 14:47:53 CEST 2014


Hi,

I`m playing with rlm_cache. I want to cache auth request to speed up future processing of the same auth request. If I send second request (the same as first one), I got reject :(.
Could you please help, me. Thx.

mods-enabled/cache:
...
update {
        request: := &request:
        control: := &control:
        reply: := &reply:
}
...


sites-enabled/default:

authorize {
    verify_nas
    preprocess
    chap
    suffix
    update control {
        Cache-Status-Only := 'yes'
    }
    cache
    if (notfound) {
        files
        update control {
            Cache-Status-Only := 'no'
        }
        cache
    }
    pap
}

Debug output:
radiusd: FreeRADIUS Version 3.0.3, for host i686-pc-linux-gnu, built on Sep  1 2014 at 21:59:53
Copyright (C) 1999-2014 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License
For more information about these matters, see the file named COPYRIGHT
Starting - reading configuration files ...
including dictionary file /mnt/sdcard/software/freeradius-server-3.0.3/share/freeradius/dictionary
including dictionary file /mnt/sdcard/software/freeradius-server-3.0.3/share/freeradius/dictionary.dhcp
including dictionary file /mnt/sdcard/software/freeradius-server-3.0.3/share/freeradius/dictionary.vqp
including dictionary file ./dictionary
including configuration file ./radiusd.conf
including configuration file ./proxy.conf
including configuration file ./clients.conf
including files in directory ./mods-enabled/
including configuration file ./mods-enabled/digest
including configuration file ./mods-enabled/pap
including configuration file ./mods-enabled/cache
including configuration file ./mods-enabled/attr_filter
including configuration file ./mods-enabled/chap
including configuration file ./mods-enabled/linelog
including configuration file ./mods-enabled/expr
including configuration file ./mods-enabled/preprocess
including configuration file ./mods-enabled/realm
including configuration file ./mods-enabled/unpack
including configuration file ./mods-enabled/files
including configuration file ./mods-enabled/always
including files in directory ./policy.d/
including configuration file ./policy.d/cui
including configuration file ./policy.d/control
including configuration file ./policy.d/filter
including configuration file ./policy.d/eap
including configuration file ./policy.d/nas
including configuration file ./policy.d/accounting
including configuration file ./policy.d/dhcp
including configuration file ./policy.d/operator-name
including configuration file ./policy.d/canonicalization
including files in directory ./sites-enabled/
including configuration file ./sites-enabled/default
main {
                name = "radiusd"
                prefix = "/mnt/sdcard/software/freeradius-server-3.0.3"
                localstatedir = "/mnt/sdcard/software/freeradius-server-3.0.3/var"
                sbindir = "/mnt/sdcard/software/freeradius-server-3.0.3/sbin"
                logdir = "/mnt/sdcard/software/freeradius-server-3.0.3/var/log/radius"
                run_dir = "/mnt/sdcard/software/freeradius-server-3.0.3/var/run/radiusd"
                libdir = "/mnt/sdcard/software/freeradius-server-3.0.3/lib"
                radacctdir = "/mnt/sdcard/software/freeradius-server-3.0.3/var/log/radius/radacct"
                hostname_lookups = no
                max_request_time = 30
                cleanup_delay = 5
                max_requests = 1024
                pidfile = "/mnt/sdcard/software/freeradius-server-3.0.3/var/run/radiusd/radiusd.pid"
                checkrad = "/mnt/sdcard/software/freeradius-server-3.0.3/sbin/checkrad"
                debug_level = 0
                proxy_requests = yes
log {
               stripped_names = no
               auth = yes
               auth_badpass = yes
               auth_goodpass = yes
               colourise = yes
               msg_denied = "You are already logged in - access denied"
}
security {
               max_attributes = 200
               reject_delay = 1
               status_server = yes
               allow_vulnerable_openssl = "yes"
}
}
radiusd: #### Loading Realms and Home Servers ####
proxy server {
               retry_delay = 5
               retry_count = 3
               default_fallback = no
               dead_time = 120
               wake_all_if_all_dead = no
}
home_server localhost {
               ipaddr = 127.0.0.1
               port = 1812
               type = "auth"
               secret = <<< secret >>>
               response_window = 20
               max_outstanding = 65536
               zombie_period = 40
               status_check = "status-server"
               ping_interval = 30
               check_interval = 30
               num_answers_to_alive = 3
               revive_interval = 120
               status_check_timeout = 4
  coa {
                irt = 2
                mrt = 16
                mrc = 5
                mrd = 30
  }
  limit {
                max_connections = 16
                max_requests = 0
                lifetime = 0
                idle_timeout = 0
  }
}
home_server_pool my_auth_failover {
                type = fail-over
                home_server = localhost
}
realm example.com {
                auth_pool = my_auth_failover
}
realm LOCAL {
}
radiusd: #### Loading Clients ####
client localhost {
               ipaddr = 127.0.0.1
               require_message_authenticator = no
               secret = <<< secret >>>
               nas_type = "other"
               proto = "*"
  limit {
                max_connections = 16
                lifetime = 0
                idle_timeout = 30
  }
}
radiusd: #### Instantiating modules ####
instantiate {
}
modules {
  # Loaded module rlm_digest
  # Instantiating module "digest" from file ./mods-enabled/digest
  # Loaded module rlm_pap
  # Instantiating module "pap" from file ./mods-enabled/pap
  pap {
                normalise = yes
  }
  # Loaded module rlm_cache
  # Instantiating module "cache" from file ./mods-enabled/cache
  cache {
                key = "%{User-Name}"
                ttl = 86400
                max_entries = 16384
                epoch = 0
                add_stats = yes
  }
  # Loaded module rlm_attr_filter
  # Instantiating module "attr_filter.post-proxy" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.post-proxy {
                filename = "./mods-config/attr_filter/post-proxy"
                key = "%{Realm}"
                relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/post-proxy
  # Instantiating module "attr_filter.pre-proxy" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.pre-proxy {
                filename = "./mods-config/attr_filter/pre-proxy"
                key = "%{Realm}"
                relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/pre-proxy
  # Instantiating module "attr_filter.access_reject" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.access_reject {
                filename = "./mods-config/attr_filter/access_reject"
                key = "%{User-Name}"
                relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/access_reject
  # Instantiating module "attr_filter.access_challenge" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.access_challenge {
                filename = "./mods-config/attr_filter/access_challenge"
                key = "%{User-Name}"
                relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/access_challenge
  # Instantiating module "attr_filter.accounting_response" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.accounting_response {
                filename = "./mods-config/attr_filter/accounting_response"
                key = "%{User-Name}"
                relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/accounting_response
  # Loaded module rlm_chap
  # Instantiating module "chap" from file ./mods-enabled/chap
  # Loaded module rlm_linelog
  # Instantiating module "linelog" from file ./mods-enabled/linelog
  linelog {
                filename = "/mnt/sdcard/software/freeradius-server-3.0.3/var/log/radius/linelog"
                permissions = 384
                format = "This is a log message for %{User-Name}"
                reference = "messages.%{%{Packet-Type}:-default}"
  }
  # Instantiating module "log_accounting" from file ./mods-enabled/linelog
  linelog log_accounting {
                filename = "/mnt/sdcard/software/freeradius-server-3.0.3/var/log/radius/linelog-accounting"
                permissions = 384
                format = ""
                reference = "Accounting-Request.%{%{Acct-Status-Type}:-unknown}"
  }
  # Loaded module rlm_expr
  # Instantiating module "expr" from file ./mods-enabled/expr
  expr {
                safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
  }
  # Loaded module rlm_preprocess
  # Instantiating module "preprocess" from file ./mods-enabled/preprocess
  preprocess {
                huntgroups = "./mods-config/preprocess/huntgroups"
                hints = "./mods-config/preprocess/hints"
                with_ascend_hack = no
                ascend_channels_per_line = 23
                with_ntdomain_hack = no
                with_specialix_jetstream_hack = no
                with_cisco_vsa_hack = no
                with_alvarion_vsa_hack = no
  }
reading pairlist file ./mods-config/preprocess/huntgroups
reading pairlist file ./mods-config/preprocess/hints
  # Loaded module rlm_realm
  # Instantiating module "IPASS" from file ./mods-enabled/realm
  realm IPASS {
                format = "prefix"
                delimiter = "/"
                ignore_default = no
                ignore_null = no
  }
  # Instantiating module "suffix" from file ./mods-enabled/realm
  realm suffix {
                format = "suffix"
                delimiter = "@"
                ignore_default = no
                ignore_null = no
  }
  # Instantiating module "realmpercent" from file ./mods-enabled/realm
  realm realmpercent {
               format = "suffix"
                delimiter = "%"
                ignore_default = no
                ignore_null = no
  }
  # Instantiating module "ntdomain" from file ./mods-enabled/realm
  realm ntdomain {
                format = "prefix"
                delimiter = "\"
                ignore_default = no
                ignore_null = no
  }
  # Loaded module rlm_unpack
  # Instantiating module "unpack" from file ./mods-enabled/unpack
  # Loaded module rlm_files
  # Instantiating module "files" from file ./mods-enabled/files
  files {
                filename = "./mods-config/files/authorize"
                usersfile = "./mods-config/files/authorize"
                acctusersfile = "./mods-config/files/accounting"
                preproxy_usersfile = "./mods-config/files/pre-proxy"
                compat = "cistron"
  }
reading pairlist file ./mods-config/files/authorize
[./mods-config/files/authorize]:83 Cistron compatibility checks for entry dummy ...
[./mods-config/files/authorize]:191 Cistron compatibility checks for entry DEFAULT ...
[./mods-config/files/authorize]:198 Cistron compatibility checks for entry DEFAULT ...
[./mods-config/files/authorize]:205 Cistron compatibility checks for entry DEFAULT ...
reading pairlist file ./mods-config/files/authorize
[./mods-config/files/authorize]:83 Cistron compatibility checks for entry dummy ...
[./mods-config/files/authorize]:191 Cistron compatibility checks for entry DEFAULT ...
[./mods-config/files/authorize]:198 Cistron compatibility checks for entry DEFAULT ...
[./mods-config/files/authorize]:205 Cistron compatibility checks for entry DEFAULT ...
reading pairlist file ./mods-config/files/accounting
reading pairlist file ./mods-config/files/pre-proxy
  # Loaded module rlm_always
  # Instantiating module "reject" from file ./mods-enabled/always
  always reject {
                rcode = "reject"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "fail" from file ./mods-enabled/always
  always fail {
                rcode = "fail"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "ok" from file ./mods-enabled/always
  always ok {
                rcode = "ok"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "handled" from file ./mods-enabled/always
  always handled {
                rcode = "handled"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "invalid" from file ./mods-enabled/always
  always invalid {
                rcode = "invalid"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "userlock" from file ./mods-enabled/always
  always userlock {
                rcode = "userlock"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "notfound" from file ./mods-enabled/always
  always notfound {
                rcode = "notfound"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "noop" from file ./mods-enabled/always
  always noop {
                rcode = "noop"
                simulcount = 0
                mpp = no
  }
  # Instantiating module "updated" from file ./mods-enabled/always
  always updated {
                rcode = "updated"
                simulcount = 0
                mpp = no
  }
} # modules
radiusd: #### Loading Virtual Servers ####
server { # from file ./radiusd.conf
} # server
server default { # from file ./sites-enabled/default
# Loading authenticate {...}
# Loading authorize {...}
Ignoring "sql" (see raddb/mods-available/README.rst)
Ignoring "ldap" (see raddb/mods-available/README.rst)
# Loading preacct {...}
# Loading accounting {...}
# Loading post-auth {...}
} # server default
radiusd: #### Opening IP addresses and Ports ####
listen {
                type = "auth"
                ipaddr = *
                port = 0
   limit {
                max_connections = 16
                lifetime = 0
                idle_timeout = 30
   }
}
listen {
                type = "acct"
                ipaddr = *
                port = 0
   limit {
                max_connections = 16
                lifetime = 0
                idle_timeout = 30
   }
}
Listening on auth address * port 1812 as server default
Listening on acct address * port 1813 as server default
Opening new proxy socket 'proxy address * port 0'
Listening on proxy address * port 53265
Ready to process requests.
Received Access-Request Id 34 from 127.0.0.1:51488 to 127.0.0.1:1812 length 95
                NAS-Port-Type = Virtual
                Service-Type = Framed-User
                Framed-Protocol = PPP
                User-Name = 'dummy'
                User-Password = 'dummy'
                Connect-Info = '8640000'
                NAS-Port = 411
                NAS-Port-Id = 'Uniq-Sess-ID411'
(0) # Executing section authorize from file ./sites-enabled/default
(0)   authorize {
(0)   verify_nas verify_nas {
(0)     if ( ! NAS-IP-Address )
(0)     if ( ! NAS-IP-Address )  -> TRUE
(0)    if ( ! NAS-IP-Address )  {
(0)     update  {
(0) EXPAND %{Packet-Src-IP-Address}
(0)    --> 127.0.0.1
(0)          NAS-IP-Address := 127.0.0.1
(0)     } # update  = noop
(0)    } # if ( ! NAS-IP-Address )  = noop
(0)   } # verify_nas verify_nas = noop
(0)   [preprocess] = ok
(0)   [chap] = noop
(0) suffix : No '@' in User-Name = "dummy", looking up realm NULL
(0) suffix : No such realm "NULL"
(0)   [suffix] = noop
(0)   update control {
(0)          Cache-Status-Only := yes
(0)   } # update control = noop
(0) cache : EXPAND %{User-Name}
(0) cache :    --> dummy
(0)   [cache] = notfound
(0)    if (notfound)
(0)    if (notfound)  -> TRUE
(0)   if (notfound)  {
(0) files : users: Matched entry dummy at line 83
(0)    [files] = ok
(0)    update control {
(0)          Cache-Status-Only := no
(0)    } # update control = noop
(0) cache : EXPAND %{User-Name}
(0) cache :    --> dummy
(0) cache : Creating entry for "dummy"
(0) cache :           request: := &request:NAS-Port-Type
(0) cache :           request: := &request:Service-Type
(0) cache :           request: := &request:Framed-Protocol
(0) cache :           request: := &request:User-Name
(0) cache :           request: := &request:User-Password
(0) cache :           request: := &request:Connect-Info
(0) cache :           request: := &request:NAS-Port
(0) cache :           request: := &request:NAS-Port-Id
(0) cache :           request: := &request:NAS-IP-Address
(0) cache :           request: := &request:Huntgroup-Name
(0) cache :           control: := &config:Cleartext-Password
(0) cache :           skipping Cache-Status-Only
(0) cache :           reply: := &reply:Service-Type
(0) cache :           reply: := &reply:Framed-Protocol
(0) cache :           reply: := &reply:Framed-IP-Address
(0) cache :           reply: := &reply:Framed-IP-Netmask
(0) cache :           reply: := &reply:Framed-Routing
(0) cache :           reply: := &reply:Framed-Filter-Id
(0) cache :           reply: := &reply:Framed-MTU
(0) cache :           reply: := &reply:Framed-Compression
(0) cache : Inserted entry, TTL 86400 seconds
(0)    [cache] = updated
(0)   } # if (notfound)  = updated
(0)   [pap] = updated
(0)  } #  authorize = updated
(0) Found Auth-Type = PAP
(0) # Executing group from file ./sites-enabled/default
(0)  Auth-Type PAP {
(0) pap : Login attempt with password
(0) pap : User authenticated successfully
(0)   [pap] = ok
(0)  } # Auth-Type PAP = ok
(0) Login OK: [dummy/dummy] (from client localhost port 411)
(0) # Executing section post-auth from file ./sites-enabled/default
(0)   post-auth {
(0)   remove_reply_message_if_eap remove_reply_message_if_eap {
(0)     if (reply:EAP-Message && reply:Reply-Message)
(0)     if (reply:EAP-Message && reply:Reply-Message)  -> FALSE
(0)    else else {
(0)     [noop] = noop
(0)    } # else else = noop
(0)   } # remove_reply_message_if_eap remove_reply_message_if_eap = noop
(0)  } #  post-auth = noop
Sending Access-Accept Id 34 from 127.0.0.1:1812 to 127.0.0.1:51488
                Service-Type = Framed-User
                Framed-Protocol = PPP
                Framed-IP-Address = 172.16.3.33
                Framed-IP-Netmask = 255.255.255.0
                Framed-Routing = Broadcast-Listen
                Framed-Filter-Id = 'std.ppp'
                Framed-MTU = 1500
                Framed-Compression = Van-Jacobson-TCP-IP
(0) Finished request
Waking up in 0.3 seconds.
Waking up in 4.6 seconds.







(0) Cleaning up request packet ID 34 with timestamp +3
Ready to process requests.
Received Access-Request Id 243 from 127.0.0.1:59013 to 127.0.0.1:1812 length 95
                NAS-Port-Type = Virtual
                Service-Type = Framed-User
                Framed-Protocol = PPP
                User-Name = 'dummy'
                User-Password = 'dummy'
                Connect-Info = '8640000'
                NAS-Port = 411
                NAS-Port-Id = 'Uniq-Sess-ID411'
(1) # Executing section authorize from file ./sites-enabled/default
(1)   authorize {
(1)   verify_nas verify_nas {
(1)     if ( ! NAS-IP-Address )
(1)     if ( ! NAS-IP-Address )  -> TRUE
(1)    if ( ! NAS-IP-Address )  {
(1)     update  {
(1) EXPAND %{Packet-Src-IP-Address}
(1)    --> 127.0.0.1
(1)          NAS-IP-Address := 127.0.0.1
(1)     } # update  = noop
(1)    } # if ( ! NAS-IP-Address )  = noop
(1)   } # verify_nas verify_nas = noop
(1)   [preprocess] = ok
(1)   [chap] = noop
(1) suffix : No '@' in User-Name = "dummy", looking up realm NULL
(1) suffix : No such realm "NULL"
(1)   [suffix] = noop
(1)   update control {
(1)          Cache-Status-Only := yes
(1)   } # update control = noop
(1) cache : EXPAND %{User-Name}
(1) cache :    --> dummy
(1) cache : Found entry for "dummy"
(1)   [cache] = ok
(1)    if (notfound)
(1)    if (notfound)  -> FALSE
(1) WARNING: pap : No "known good" password found for the user.  Not setting Auth-Type.
(1) WARNING: pap : Authentication will fail unless a "known good" password is available.
(1)   [pap] = noop
(1)  } #  authorize = ok
(1) ERROR: No Auth-Type found: rejecting the user via Post-Auth-Type = Reject
(1) Failed to authenticate the user.
(1) Login incorrect (No Auth-Type found: rejecting the user via Post-Auth-Type = Reject): [dummy/dummy] (from client localhost port 411)
(1) Using Post-Auth-Type Reject
(1) # Executing group from file ./sites-enabled/default
(1)  Post-Auth-Type REJECT {
(1)   remove_reply_message_if_eap remove_reply_message_if_eap {
(1)     if (reply:EAP-Message && reply:Reply-Message)
(1)     if (reply:EAP-Message && reply:Reply-Message)  -> FALSE
(1)    else else {
(1)     [noop] = noop
(1)    } # else else = noop
(1)   } # remove_reply_message_if_eap remove_reply_message_if_eap = noop
(1)  } # Post-Auth-Type REJECT = noop
(1) Delaying response for 1 seconds
Waking up in 0.3 seconds.
Waking up in 0.6 seconds.
(1) Sending delayed response
Sending Access-Reject Id 243 from 127.0.0.1:1812 to 127.0.0.1:59013
Waking up in 3.9 seconds.
(1) Cleaning up request packet ID 243 with timestamp +10
Ready to process requests.

Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20140903/d8b6cda5/attachment-0001.html>


More information about the Freeradius-Users mailing list