I am trying to authenticate users via Freeradius 2.1.7 against LDAP. I would like to use a checkItem to determine ippool assignment to give users an IP address from defined pools. The LDAP portion is working correctly but I receive the message  "Could not find Pool-Name attribute" in my debug output (hence no IP address is assigned). What am I missing?

 

 

Thanks,

 

David Wolford

 

**************************

 

My user file is as follows:

 

Default Group-Name == Telecommunictations, Pool-Name := "Telecommunications"

        Fall-Through = Yes

**************************

My ldap.attrmap is as follows:

 

checkItem       radiusemployeedepartment        uabemployeedepartment

**************************

My ippool is as follows:

 

ippool Telecommunications{

        range-start = 10.0.0.1

        range-stop  = 10.0.0.10

        netmask     = 255.255.0.0

        cache-size  = 10

        session-db  = ${db_dir}/db.Telecommunications-session

        ip-index    = ${db_dir}/db.Telecommunications-index

        override    = yes

        }

***************************

My debug output:

 

[root@localhost sbin]# ./radiusd -X

FreeRADIUS Version 2.1.7, for host i386-redhat-linux-gnu, built on Sep 18 2009 at 10:59:17

Copyright (C) 1999-2009 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 v2.

Starting - reading configuration files ...

including configuration file /etc/raddb/radiusd.conf

including configuration file /etc/raddb/proxy.conf

including configuration file /etc/raddb/clients.conf

including files in directory /etc/raddb/modules/

including configuration file /etc/raddb/modules/smbpasswd

including configuration file /etc/raddb/modules/inner-eap

including configuration file /etc/raddb/modules/otp

including configuration file /etc/raddb/modules/radutmp

including configuration file /etc/raddb/modules/mschap

including configuration file /etc/raddb/modules/mac2vlan

including configuration file /etc/raddb/modules/ippool

including configuration file /etc/raddb/modules/mac2ip

including configuration file /etc/raddb/modules/passwd

including configuration file /etc/raddb/modules/detail.example.com

including configuration file /etc/raddb/modules/preprocess

including configuration file /etc/raddb/modules/detail

including configuration file /etc/raddb/modules/sradutmp

including configuration file /etc/raddb/modules/logintime

including configuration file /etc/raddb/modules/echo

including configuration file /etc/raddb/modules/acct_unique

including configuration file /etc/raddb/modules/etc_group

including configuration file /etc/raddb/modules/detail.log

including configuration file /etc/raddb/modules/counter

including configuration file /etc/raddb/modules/unix

including configuration file /etc/raddb/modules/digest

including configuration file /etc/raddb/modules/wimax

including configuration file /etc/raddb/modules/sqlcounter_expire_on_login

including configuration file /etc/raddb/modules/ldap

including configuration file /etc/raddb/modules/sql_log

including configuration file /etc/raddb/modules/attr_filter

including configuration file /etc/raddb/modules/expr

including configuration file /etc/raddb/modules/checkval

including configuration file /etc/raddb/modules/files

including configuration file /etc/raddb/modules/attr_rewrite

including configuration file /etc/raddb/modules/cui

including configuration file /etc/raddb/modules/perl

including configuration file /etc/raddb/modules/exec

including configuration file /etc/raddb/modules/smsotp

including configuration file /etc/raddb/modules/linelog

including configuration file /etc/raddb/modules/chap

including configuration file /etc/raddb/modules/policy

including configuration file /etc/raddb/modules/pap

including configuration file /etc/raddb/modules/pam

including configuration file /etc/raddb/modules/always

including configuration file /etc/raddb/modules/expiration

including configuration file /etc/raddb/modules/realm

including configuration file /etc/raddb/eap.conf

including configuration file /etc/raddb/policy.conf

including files in directory /etc/raddb/sites-enabled/

including configuration file /etc/raddb/sites-enabled/default

including configuration file /etc/raddb/sites-enabled/control-socket

including configuration file /etc/raddb/sites-enabled/inner-tunnel

group = radiusd

user = radiusd

including dictionary file /etc/raddb/dictionary

main {

        prefix = "/usr"

        localstatedir = "/var"

        logdir = "/var/log/radius"

        libdir = "/usr/lib/freeradius"

        radacctdir = "/var/log/radius/radacct"

        hostname_lookups = no

        max_request_time = 30

        cleanup_delay = 5

        max_requests = 1024

        allow_core_dumps = no

        pidfile = "/var/run/radiusd/radiusd.pid"

        checkrad = "/usr/sbin/checkrad"

        debug_level = 0

        proxy_requests = yes

 log {

        stripped_names = no

        auth = no

        auth_badpass = no

        auth_goodpass = no

 }

 security {

        max_attributes = 200

        reject_delay = 1

        status_server = 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 = "testing123"

        response_window = 20

        max_outstanding = 65536

        require_message_authenticator = no

        zombie_period = 40

        status_check = "status-server"

        ping_interval = 30

        check_interval = 30

        num_answers_to_alive = 3

        num_pings_to_alive = 3

        revive_interval = 120

        status_check_timeout = 4

        irt = 2

        mrt = 16

        mrc = 5

        mrd = 30

 }

 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 = "testing123"

        nastype = "other"

 }

 client x.x.x.x {

        require_message_authenticator = no

        secret = "*********"

        shortname = "ASA1"

 }

 client x.x.x.x {

        require_message_authenticator = no

        secret = "*********"

        shortname = "ASA2"

 }

radiusd: #### Instantiating modules ####

 instantiate {

 Module: Linked to module rlm_exec

 Module: Instantiating exec

  exec {

        wait = no

        input_pairs = "request"

        shell_escape = yes

  }

 Module: Linked to module rlm_expr

 Module: Instantiating expr

 Module: Linked to module rlm_expiration

 Module: Instantiating expiration

  expiration {

        reply-message = "Password Has Expired  "

  }

 Module: Linked to module rlm_logintime

 Module: Instantiating logintime

  logintime {

        reply-message = "You are calling outside your allowed timespan  "

        minimum-timeout = 60

  }

 }

radiusd: #### Loading Virtual Servers ####

server inner-tunnel {

 modules {

 Module: Checking authenticate {...} for more modules to load

 Module: Linked to module rlm_pap

 Module: Instantiating pap

  pap {

        encryption_scheme = "auto"

        auto_header = no

  }

 Module: Linked to module rlm_chap

 Module: Instantiating chap

 Module: Linked to module rlm_mschap

 Module: Instantiating mschap

  mschap {

        use_mppe = yes

        require_encryption = no

        require_strong = no

        with_ntdomain_hack = no

  }

 Module: Linked to module rlm_unix

 Module: Instantiating unix

  unix {

        radwtmp = "/var/log/radius/radwtmp"

  }

 Module: Linked to module rlm_ldap

 Module: Instantiating ldap

  ldap {

        server = "my ldap server"

        port = 389

        password = ""

        identity = ""

        net_timeout = 1

        timeout = 4

        timelimit = 3

        tls_mode = no

        start_tls = no

        tls_require_cert = "allow"

   tls {

        start_tls = no

        require_cert = "allow"

   }

        basedn = "dc=some,dc=company"

        filter = "(uid=%u)"

        base_filter = "(objectclass=radiusprofile)"

        auto_header = no

        access_attr_used_for_allow = yes

        groupname_attribute = "cn"

        groupmembership_filter = "(|(&(objectClass=GroupOfNames)(member=%{control:Ldap-UserDn}))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{control:Ldap-UserDn})))"

        dictionary_mapping = "/etc/raddb/ldap.attrmap"

        ldap_debug = 0

        ldap_connections_number = 5

        compare_check_items = no

        do_xlat = yes

        set_auth_type = yes

  }

rlm_ldap: Registering ldap_groupcmp for Ldap-Group

rlm_ldap: Registering ldap_xlat with xlat_name ldap

rlm_ldap: reading ldap<->radius mappings from file /etc/raddb/ldap.attrmap

rlm_ldap: LDAP radiusCheckItem mapped to RADIUS $GENERIC$

rlm_ldap: LDAP radiusReplyItem mapped to RADIUS $GENERIC$

rlm_ldap: LDAP radiusAuthType mapped to RADIUS Auth-Type

rlm_ldap: LDAP radiusSimultaneousUse mapped to RADIUS Simultaneous-Use

rlm_ldap: LDAP radiusCalledStationId mapped to RADIUS Called-Station-Id

rlm_ldap: LDAP radiusCallingStationId mapped to RADIUS Calling-Station-Id

rlm_ldap: LDAP lmPassword mapped to RADIUS LM-Password

rlm_ldap: LDAP ntPassword mapped to RADIUS NT-Password

rlm_ldap: LDAP sambaLmPassword mapped to RADIUS LM-Password

rlm_ldap: LDAP sambaNtPassword mapped to RADIUS NT-Password

rlm_ldap: LDAP dBCSPwd mapped to RADIUS LM-Password

rlm_ldap: LDAP acctFlags mapped to RADIUS SMB-Account-CTRL-TEXT

rlm_ldap: LDAP radiusExpiration mapped to RADIUS Expiration

rlm_ldap: LDAP radiusNASIpAddress mapped to RADIUS NAS-IP-Address

rlm_ldap: LDAP uabemployeedepartment mapped to RADIUS radiusemployeedepartment

rlm_ldap: LDAP radiusServiceType mapped to RADIUS Service-Type

rlm_ldap: LDAP radiusFramedProtocol mapped to RADIUS Framed-Protocol

rlm_ldap: LDAP radiusFramedIPAddress mapped to RADIUS Framed-IP-Address

rlm_ldap: LDAP radiusFramedIPNetmask mapped to RADIUS Framed-IP-Netmask

rlm_ldap: LDAP radiusFramedRoute mapped to RADIUS Framed-Route

rlm_ldap: LDAP radiusFramedRouting mapped to RADIUS Framed-Routing

rlm_ldap: LDAP radiusFilterId mapped to RADIUS Filter-Id

rlm_ldap: LDAP radiusFramedMTU mapped to RADIUS Framed-MTU

rlm_ldap: LDAP radiusFramedCompression mapped to RADIUS Framed-Compression

rlm_ldap: LDAP radiusLoginIPHost mapped to RADIUS Login-IP-Host

rlm_ldap: LDAP radiusLoginService mapped to RADIUS Login-Service

rlm_ldap: LDAP radiusLoginTCPPort mapped to RADIUS Login-TCP-Port

rlm_ldap: LDAP radiusCallbackNumber mapped to RADIUS Callback-Number

rlm_ldap: LDAP radiusCallbackId mapped to RADIUS Callback-Id

rlm_ldap: LDAP radiusFramedIPXNetwork mapped to RADIUS Framed-IPX-Network

rlm_ldap: LDAP radiusClass mapped to RADIUS Class

rlm_ldap: LDAP radiusSessionTimeout mapped to RADIUS Session-Timeout

rlm_ldap: LDAP radiusIdleTimeout mapped to RADIUS Idle-Timeout

rlm_ldap: LDAP radiusTerminationAction mapped to RADIUS Termination-Action

rlm_ldap: LDAP radiusLoginLATService mapped to RADIUS Login-LAT-Service

rlm_ldap: LDAP radiusLoginLATNode mapped to RADIUS Login-LAT-Node

rlm_ldap: LDAP radiusLoginLATGroup mapped to RADIUS Login-LAT-Group

rlm_ldap: LDAP radiusFramedAppleTalkLink mapped to RADIUS Framed-AppleTalk-Link

rlm_ldap: LDAP radiusFramedAppleTalkNetwork mapped to RADIUS Framed-AppleTalk-Network

rlm_ldap: LDAP radiusFramedAppleTalkZone mapped to RADIUS Framed-AppleTalk-Zone

rlm_ldap: LDAP radiusPortLimit mapped to RADIUS Port-Limit

rlm_ldap: LDAP radiusLoginLATPort mapped to RADIUS Login-LAT-Port

rlm_ldap: LDAP radiusReplyMessage mapped to RADIUS Reply-Message

rlm_ldap: LDAP radiusTunnelType mapped to RADIUS Tunnel-Type

rlm_ldap: LDAP radiusTunnelMediumType mapped to RADIUS Tunnel-Medium-Type

rlm_ldap: LDAP radiusTunnelPrivateGroupId mapped to RADIUS Tunnel-Private-Group-Id

conns: 0x9bb7a50

 Module: Linked to module rlm_eap

 Module: Instantiating eap

  eap {

        default_eap_type = "md5"

        timer_expire = 60

        ignore_unknown_eap_types = no

        cisco_accounting_username_bug = no

        max_sessions = 2048

  }

 Module: Linked to sub-module rlm_eap_md5

 Module: Instantiating eap-md5

 Module: Linked to sub-module rlm_eap_leap

 Module: Instantiating eap-leap

 Module: Linked to sub-module rlm_eap_gtc

 Module: Instantiating eap-gtc

   gtc {

        challenge = "Password: "

        auth_type = "PAP"

   }

 Module: Linked to sub-module rlm_eap_tls

 Module: Instantiating eap-tls

   tls {

        rsa_key_exchange = no

        dh_key_exchange = yes

        rsa_key_length = 512

        dh_key_length = 512

        verify_depth = 0

        pem_file_type = yes

        private_key_file = "/etc/raddb/certs/server.pem"

        certificate_file = "/etc/raddb/certs/server.pem"

        CA_file = "/etc/raddb/certs/ca.pem"

        private_key_password = "whatever"

        dh_file = "/etc/raddb/certs/dh"

        random_file = "/etc/raddb/certs/random"

        fragment_size = 1024

        include_length = yes

        check_crl = no

        cipher_list = "DEFAULT"

        make_cert_command = "/etc/raddb/certs/bootstrap"

    cache {

        enable = no

        lifetime = 24

        max_entries = 255

    }

   }

 Module: Linked to sub-module rlm_eap_ttls

 Module: Instantiating eap-ttls

   ttls {

        default_eap_type = "md5"

        copy_request_to_tunnel = no

        use_tunneled_reply = no

        virtual_server = "inner-tunnel"

        include_length = yes

   }

 Module: Linked to sub-module rlm_eap_peap

 Module: Instantiating eap-peap

   peap {

        default_eap_type = "mschapv2"

        copy_request_to_tunnel = no

        use_tunneled_reply = no

        proxy_tunneled_request_as_eap = yes

        virtual_server = "inner-tunnel"

   }

 Module: Linked to sub-module rlm_eap_mschapv2

 Module: Instantiating eap-mschapv2

   mschapv2 {

        with_ntdomain_hack = no

   }

 Module: Checking authorize {...} for more modules to load

 Module: Linked to module rlm_realm

 Module: Instantiating suffix

  realm suffix {

        format = "suffix"

        delimiter = "@"

        ignore_default = no

        ignore_null = no

  }

 Module: Linked to module rlm_files

 Module: Instantiating files

  files {

        usersfile = "/etc/raddb/users"

        acctusersfile = "/etc/raddb/acct_users"

        preproxy_usersfile = "/etc/raddb/preproxy_users"

        compat = "no"

  }

 Module: Checking session {...} for more modules to load

 Module: Linked to module rlm_radutmp

 Module: Instantiating radutmp

  radutmp {

        filename = "/var/log/radius/radutmp"

        username = "%{User-Name}"

        case_sensitive = yes

        check_with_nas = yes

        perm = 384

        callerid = yes

  }

 Module: Checking post-proxy {...} for more modules to load

 Module: Checking post-auth {...} for more modules to load

 Module: Linked to module rlm_attr_filter

 Module: Instantiating attr_filter.access_reject

  attr_filter attr_filter.access_reject {

        attrsfile = "/etc/raddb/attrs.access_reject"

        key = "%{User-Name}"

  }

 } # modules

} # server

server {

 modules {

 Module: Checking authenticate {...} for more modules to load

 Module: Checking authorize {...} for more modules to load

 Module: Linked to module rlm_preprocess

 Module: Instantiating preprocess

  preprocess {

        huntgroups = "/etc/raddb/huntgroups"

        hints = "/etc/raddb/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

  }

 Module: Checking preacct {...} for more modules to load

 Module: Linked to module rlm_acct_unique

 Module: Instantiating acct_unique

  acct_unique {

        key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"

  }

 Module: Checking accounting {...} for more modules to load

 Module: Linked to module rlm_detail

 Module: Instantiating detail

  detail {

        detailfile = "/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d"

        header = "%t"

        detailperm = 384

        dirperm = 493

        locking = no

        log_packet_header = no

  }

 Module: Linked to module rlm_ippool

 Module: Instantiating main_pool

  ippool main_pool {

        session-db = "/etc/raddb/db.ippool"

        ip-index = "/etc/raddb/db.ipindex"

        key = "%{NAS-IP-Address} %{NAS-Port}"

        range-start = 192.168.1.1

        range-stop = 192.168.3.254

        netmask = 255.255.255.0

        cache-size = 800

        override = no

        maximum-timeout = 0

  }

 Module: Instantiating Telecommunications

  ippool Telecommunications {

        session-db = "/etc/raddb/db.Telecommunications-session"

        ip-index = "/etc/raddb/db.Telecommunications-index"

        key = "%{NAS-IP-Address} %{NAS-Port}"

        range-start = x.x.x.x

        range-stop = x.x.x.x

        netmask = 255.255.0.0

        cache-size = 10

        override = yes

        maximum-timeout = 0

  }

 Module: Instantiating attr_filter.accounting_response

  attr_filter attr_filter.accounting_response {

        attrsfile = "/etc/raddb/attrs.accounting_response"

        key = "%{User-Name}"

  }

 Module: Checking session {...} for more modules to load

 Module: Checking post-proxy {...} for more modules to load

 Module: Checking post-auth {...} for more modules to load

 } # modules

} # server

radiusd: #### Opening IP addresses and Ports ####

listen {

        type = "auth"

        ipaddr = *

        port = 0

}

listen {

        type = "acct"

        ipaddr = *

        port = 0

}

listen {

        type = "control"

 listen {

        socket = "/var/run/radiusd/radiusd.sock"

 }

}

Listening on authentication address * port 1812

Listening on accounting address * port 1813

Listening on command file /var/run/radiusd/radiusd.sock

Listening on proxy address * port 1814

Ready to process requests.

rad_recv: Access-Request packet from host 127.0.0.1 port 39140, id=250, length=60

        User-Name = "dwo*****"

        User-Password = "Ap*********"

        NAS-IP-Address = 127.0.0.1

        NAS-Port = 1812

+- entering group authorize {...}

++[preprocess] returns ok

++[chap] returns noop

++[mschap] returns noop

[suffix] No '@' in User-Name = "dwo*****", looking up realm NULL

[suffix] No such realm "NULL"

++[suffix] returns noop

[eap] No EAP-Message, not doing EAP

++[eap] returns noop

++[unix] returns notfound

++[files] returns noop

[ldap] performing user authorization for dwo*****

[ldap]  expand: (uid=%u) -> (uid=dwo*****)

[ldap]  expand: dc=some,dc=company -> dc=some,dc=company

rlm_ldap: ldap_get_conn: Checking Id: 0

rlm_ldap: ldap_get_conn: Got Id: 0

rlm_ldap: attempting LDAP reconnection

rlm_ldap: (re)connect to ldap.company:389, authentication 0

rlm_ldap: bind as / to ldap.company:389

rlm_ldap: waiting for bind result ...

rlm_ldap: Bind was successful

rlm_ldap: performing search in dc=some,dc=company, with filter (uid=dwo*****)

[ldap] looking for check items in directory...

rlm_ldap: uabemployeedepartment -> radiusemployeedepartment == "Telecommunications"

[ldap] looking for reply items in directory...

WARNING: No "known good" password was found in LDAP.  Are you sure that the user is configured correctly?

[ldap] Setting Auth-Type = LDAP

[ldap] user dwo***** authorized to use remote access

rlm_ldap: ldap_release_conn: Release Id: 0

++[ldap] returns ok

++[expiration] returns noop

++[logintime] returns noop

[pap] WARNING! No "known good" password found for the user.  Authentication may fail because of this.

++[pap] returns noop

Found Auth-Type = LDAP

+- entering group LDAP {...}

[ldap] login attempt by "dwo*****" with password "Ap*********"

[ldap] user DN: uid=dwo*****, ou=people, dc=some, dc=company

rlm_ldap: (re)connect to ldap.company:389, authentication 1

rlm_ldap: bind as uid=dwo*****, ou=people, dc=some, dc=company/Ap********* to ldap.company:389

rlm_ldap: waiting for bind result ...

rlm_ldap: Bind was successful

[ldap] user dwo***** authenticated succesfully

++[ldap] returns ok

+- entering group post-auth {...}

[main_pool] Could not find Pool-Name attribute.

++[main_pool] returns noop

[Telecommunications] Could not find Pool-Name attribute.

++[Telecommunications] returns noop

++[exec] returns noop

Sending Access-Accept of id 250 to 127.0.0.1 port 39140

Finished request 0.

Going to the next request

Waking up in 4.9 seconds.