FreeRadius DHCP against LDAP
Nikolaos Milas
nmilas at noa.gr
Fri Sep 13 19:19:24 CEST 2013
On 31/8/2013 12:03 πμ, Arran Cudbard-Bell wrote:
>> 1. Is DHCP functionality supported against an LDAP Server (in v2.2.0)?
>
> Yes.
I am having a hard time trying to adapt the example at:
http://wiki.freeradius.org/guide/dhcp-for-static-ip-allocation to work
from ldap.
We are starting from a point where we have an (LDAP) DIT branch
ou=hosts,dc=example,dc=com, where hosts are stored (also used for
MAC-Auth), using entries of the form:
dn: cn=host1.tech,ou=hosts,dc=example,dc=com
cn: host1.tech
objectClass: device
objectClass: ieee802Device
objectClass: top
objectClass: radiusprofile
objectClass: simpleSecurityObject
description: Main Workstation at Tech Dpt
ou: tech
l: Sierra Nevada
userPassword: test123
owner: cn=TechAdmins,ou=Groups,dc=example,dc=com
radiusTunnelMediumType: IEEE-802
radiusTunnelType: VLAN
radiusNASIpAddress: 10.10.10.125
radiusTunnelPrivateGroupId: 1
macAddress: 00:24:8b:3a:d1:db
radiusTerminationAction: 33
radiusHint: 50004
radiusFramedIPAddress: 10.10.10.63
radiusArapSecurity: 10.10.10.1
radiusArapZoneAccess: 255.255.255.128
We are attempting to assign the host (using DHCP) with the macAdress
stored at macAddress attribute:
- the IP Address defined at radiusFramedIPAddress
- the gateway defined at radiusArapSecurity
- the mask defined at radiusArapZoneAccess
Can we use ldap calls (as when doing auth), in modules/ldap, like:
ldap ldap_dhcp {
server = "localhost"
identity = "uid=auth,ou=AdminAccounts,dc=example,dc=com"
password = "mysecret"
basedn = "ou=hosts,dc=example,dc=com"
filter = "(macAddress=%{DHCP-Client-Hardware-Address})"
start_tls = no
dictionary_mapping = ${raddbdir}/ldap.attrmap
ldap_connections_number = 2
timeout = 4
timelimit = 3
net_timeout = 1
}
...having added in ldap.attr the following (using current unused
freeradius schema attributes):
replyItem DHCP-Subnet-Mask radiusArapZoneAccess
replyItem DHCP-Router-Address radiusArapSecurity
replyItem DHCP-Your-IP-Address radiusFramedIPAddress
and then modify the example as follows:
server dhcp {
listen {
type = dhcp
ipaddr = 127.0.0.1
port = 67
interface = eth0
broadcast = no
}
dhcp DHCP-Discover {
ldap_dhcp
update reply {
DHCP-Message-Type = DHCP-Offer
}
update reply {
DHCP-Domain-Name-Server := 10.10.10.90
DHCP-Domain-Name-Server := 10.10.10.91
}
ok
}
dhcp DHCP-Request {
update reply {
DHCP-Message-Type = DHCP-Ack
}
ldap_dhcp
update reply {
DHCP-Domain-Name-Server := 10.10.10.90
DHCP-Domain-Name-Server := 10.10.10.91
}
ok
}
dhcp {
reject
}
}
...??
Is it correct as above? Do I have to call ldap_dhcp separately in each
section (i.e. twice)?
Please clarify!
Regards,
Nick
More information about the Freeradius-Users
mailing list