Freeradius as DHCP server (static IP + some options)
Hello. I successfully run ISC-DHCP server for provisioning modems in an ISP's network, but what I wanted to try is something more modern and with database support. I want to try using Freeradius as DHCP server, but first I want to know if it is possible with these requirements: - Need to deliver fixed IP (or static) according to mac-address. - Need to provide, in addition to the IP, some DHCP options. Option 1 (Subnet mask), Option 3 (Routers), Option 6 (DNS server), Option 15 (Domainname), Option 18 (Extensions path), Option 66 (TFTP server name), Option120 (SIP Servers DHCP Option). - The IP and Options corresponding to each mac-address has to be stored in mysql. According dhcpdump, the dhcp client request looks like this: TIME: 2013-01-21 16:23:30.787 IP: 0.0.0.0 (0:13:96:0:f9:84) > 255.255.255.255 (ff:ff:ff:ff:ff:ff) OP: 1 (BOOTPREQUEST) HTYPE: 1 (Ethernet) HLEN: 6 HOPS: 0 XID: 8e22cb4d SECS: 0 FLAGS: 7f80 CIADDR: 0.0.0.0 YIADDR: 0.0.0.0 SIADDR: 0.0.0.0 GIADDR: 0.0.0.0 CHADDR: 00:13:96:00:f9:84:00:00:00:00:00:00:00:00:00:00 SNAME: . FNAME: . OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER) OPTION: 61 ( 8) Client-identifier 01:00:13:96:00:f9:84:00 OPTION: 51 ( 4) IP address leasetime -256 () OPTION: 51 ( 4) IP address leasetime -1 () OPTION: 55 ( 11) Parameter Request List 1 (Subnet mask) 3 (Routers) 6 (DNS server) 15 (Domainname) 18 (Extensions path) 66 (TFTP server name) 120 (SIP Servers DHCP Option) 135 (???) 213 (???) 214 (???) 215 (???) Freeradius 2.2.0 can provide this functionality just configuring it, or it would be necessary to use modules or developments that aren't available yet? Thanks in advance!
Leo Combes wrote:
Hello. I successfully run ISC-DHCP server for provisioning modems in an ISP's network, but what I wanted to try is something more modern and with database support. I want to try using Freeradius as DHCP server, but first I want to know if it is possible with these requirements:
- Need to deliver fixed IP (or static) according to mac-address.
Yes. That can be done. Just return the static IP in an attribute. You can look these up in a database, using an SQL query.
- Need to provide, in addition to the IP, some DHCP options. Option 1 (Subnet mask), Option 3 (Routers), Option 6 (DNS server), Option 15 (Domainname), Option 18 (Extensions path), Option 66 (TFTP server name), Option120 (SIP Servers DHCP Option).
Sure. See raddb/sites-available/dhcp
- The IP and Options corresponding to each mac-address has to be stored in mysql.
Sure. The modules of the server allow for replies to be based on information in the request, such as MAC address.
Freeradius 2.2.0 can provide this functionality just configuring it, or it would be necessary to use modules or developments that aren't available yet?
It should just be a matter of configuring it. I'd start with static IPs. See the "sql" module. You'll probably want to change the lookup to key off of DHCP-Client-Identifier or DHCP-Client-Hardware-Address, instead of USer-Name. (See share/dictionary.dhcp, and raddb/sql.conf, raddb/postgresql/dialup.conf). Then configure IP pools for DHCP. See modules/dhcp_sqlippool, and raddb/sites-available/dhcp The configurations aren't as simple as ISC, but the server is definitely more powerful. If you have a simple configuration / howto, send it over, and we'll integrate it into the next release. Configure
Thanks Alan. I hope to make it work. As I have little experience with Freeradius, I want to start doing a little test with the "mac2ip" module. I made a file called mac2ip in /etc/freeradius with the following contents: 00:13:96:00:f9:84,10.1.100.1 The /etc/freeradius/sites-enabled/dhcp as follows: server dhcp { listen { type = dhcp ipaddr = 255.255.255.255 port = 67 interface = eth0 #broadcast = no } dhcp DHCP-Discover { update reply { DHCP-Message-Type = DHCP-Offer } # The contents here are invented. Change them! update reply { DHCP-Domain-Name-Server = 8.8.8.8 DHCP-Domain-Name-Server += 8.8.4.4 DHCP-Subnet-Mask = 255.255.0.0 DHCP-Router-Address = 10.1.1.3 DHCP-IP-Address-Lease-Time = 7200 DHCP-DHCP-Server-Identifier = 10.1.2.10 } mac2ip # Or, allocate IPs from the DHCP pool in SQL. #dhcp_sqlippool.postauth ok } dhcp DHCP-Request { update reply { DHCP-Message-Type = DHCP-Ack } # The contents here are invented. Change them! update reply { DHCP-Domain-Name-Server = 8.8.8.8 DHCP-Domain-Name-Server += 8.8.4.4 DHCP-Router-Address = 10.1.1.3 DHCP-IP-Address-Lease-Time = 7200 DHCP-DHCP-Server-Identifier = 10.1.2.10 } mac2ip # Or, allocate IPs from the DHCP pool in SQL. #dhcp_sqlippool.postauth ok } # If there's no named section for the packet type, then the packet # is processed through this section. dhcp { # send a DHCP NAK. reject } } passwd mac2ip { filename = ${confdir}/mac2ip format = "*DHCP-Client-Hardware-Address:=DHCP-Your-IP-Address" delimiter = "," } I have added the dhcp.dictionary. At last I tried to run freeradius: Info: Starting - reading configuration files ... Debug: including configuration file /etc/freeradius/radiusd.conf Debug: including configuration file /etc/freeradius/clients.conf Debug: including files in directory /etc/freeradius/mods-enabled/ Debug: including configuration file /etc/freeradius/mods-enabled/rediswho Debug: including configuration file /etc/freeradius/mods-enabled/replicate Debug: including configuration file /etc/freeradius/mods-enabled/linelog Debug: including configuration file /etc/freeradius/mods-enabled/redis Debug: including configuration file /etc/freeradius/mods-enabled/counter Debug: including configuration file /etc/freeradius/mods-enabled/sradutmp Debug: including configuration file /etc/freeradius/mods-enabled/sql_log Debug: including configuration file /etc/freeradius/mods-enabled/echo Debug: including configuration file /etc/freeradius/mods-enabled/files Debug: including configuration file /etc/freeradius/mods-enabled/mac2vlan Debug: including configuration file /etc/freeradius/mods-enabled/ntlm_auth Debug: including configuration file /etc/freeradius/mods-enabled/always Debug: including configuration file /etc/freeradius/mods-enabled/soh Debug: including configuration file /etc/freeradius/mods-enabled/detail.log Debug: including configuration file /etc/freeradius/mods-enabled/unix Debug: including configuration file /etc/freeradius/mods-enabled/inner-eap Debug: including configuration file /etc/freeradius/mods-enabled/exec Debug: including configuration file /etc/freeradius/mods-enabled/krb5 Debug: including configuration file /etc/freeradius/mods-enabled/smbpasswd Debug: including configuration file /etc/freeradius/mods-enabled/cui Debug: including configuration file /etc/freeradius/mods-enabled/expiration Debug: including configuration file /etc/freeradius/mods-enabled/perl Debug: including configuration file /etc/freeradius/mods-enabled/mac2ip Debug: including configuration file /etc/freeradius/mods-enabled/digest Debug: including configuration file /etc/freeradius/mods-enabled/smsotp Debug: including configuration file /etc/freeradius/mods-enabled/pam Debug: including configuration file /etc/freeradius/mods-enabled/wimax Debug: including configuration file /etc/freeradius/mods-enabled/mschap Debug: including configuration file /etc/freeradius/mods-enabled/checkval Debug: including configuration file /etc/freeradius/mods-enabled/otp Debug: including configuration file /etc/freeradius/mods-enabled/radutmp Debug: including configuration file /etc/freeradius/mods-enabled/preprocess Debug: including configuration file /etc/freeradius/mods-enabled/ippool Debug: including configuration file /etc/freeradius/mods-enabled/ldap Debug: including configuration file /etc/freeradius/mods-enabled/logintime Debug: including configuration file /etc/freeradius/mods-enabled/sqlcounter_expire_on_login Debug: including configuration file /etc/freeradius/mods-enabled/detail Debug: including configuration file /etc/freeradius/mods-enabled/acct_unique Debug: including configuration file /etc/freeradius/mods-enabled/passwd Debug: including configuration file /etc/freeradius/mods-enabled/chap Debug: including configuration file /etc/freeradius/mods-enabled/dhcp_sqlippool Debug: including configuration file /etc/freeradius/sql/mysql/ippool-dhcp.conf Debug: including configuration file /etc/freeradius/mods-enabled/realm Debug: including configuration file /etc/freeradius/mods-enabled/opendirectory Debug: including configuration file /etc/freeradius/mods-enabled/policy Debug: including configuration file /etc/freeradius/mods-enabled/attr_rewrite Debug: including configuration file /etc/freeradius/mods-enabled/dynamic_clients Debug: including configuration file /etc/freeradius/mods-enabled/attr_filter Debug: including configuration file /etc/freeradius/mods-enabled/expr Debug: including configuration file /etc/freeradius/mods-enabled/etc_group Debug: including configuration file /etc/freeradius/mods-enabled/cache Debug: including configuration file /etc/freeradius/mods-enabled/radrelay Debug: including configuration file /etc/freeradius/mods-enabled/pap Debug: including configuration file /etc/freeradius/mods-enabled/ detail.example.com Debug: including configuration file /etc/freeradius/eap.conf Debug: including configuration file /etc/freeradius/sqlippool.conf Debug: including configuration file /etc/freeradius/sql/mysql/ippool.conf Debug: including configuration file /etc/freeradius/policy.conf Debug: including files in directory /etc/freeradius/sites-enabled/ Debug: including configuration file /etc/freeradius/sites-enabled/dhcp Debug: main { Debug: user = "root" Debug: group = "freerad" Debug: allow_core_dumps = no Debug: } Debug: including dictionary file /etc/freeradius/dictionary Debug: main { Debug: name = "freeradius" Debug: prefix = "/usr" Debug: localstatedir = "/var" Debug: sbindir = "/usr/sbin" Debug: logdir = "/var/log/freeradius" Debug: run_dir = "/var/run/freeradius" Debug: libdir = "/usr/lib/freeradius" Debug: radacctdir = "/var/log/freeradius/radacct" Debug: hostname_lookups = no Debug: max_request_time = 30 Debug: cleanup_delay = 5 Debug: max_requests = 1024 Debug: pidfile = "/var/run/freeradius/freeradius.pid" Debug: checkrad = "/usr/sbin/checkrad" Debug: debug_level = 0 Debug: proxy_requests = yes Debug: log { Debug: stripped_names = no Debug: auth = no Debug: auth_badpass = no Debug: auth_goodpass = no Debug: } Debug: security { Debug: max_attributes = 200 Debug: reject_delay = 1 Debug: status_server = yes Debug: } Debug: } Debug: radiusd: #### Loading Realms and Home Servers #### Debug: radiusd: #### Loading Clients #### Debug: client localhost { Debug: ipaddr = 127.0.0.1 Debug: require_message_authenticator = no Debug: secret = "testing123" Debug: nastype = "other" Debug: } Debug: radiusd: #### Instantiating modules #### Debug: instantiate { Debug: (Loaded rlm_exec, checking if it's valid) Debug: Module: Linked to module rlm_exec Debug: Module: Instantiating module "exec" from file /etc/freeradius/mods-enabled/exec Debug: exec { Debug: wait = no Debug: input_pairs = "request" Debug: shell_escape = yes Debug: } Debug: (Loaded rlm_expr, checking if it's valid) Debug: Module: Linked to module rlm_expr Debug: Module: Instantiating module "expr" from file /etc/freeradius/mods-enabled/expr Debug: (Loaded rlm_expiration, checking if it's valid) Debug: Module: Linked to module rlm_expiration Debug: Module: Instantiating module "expiration" from file /etc/freeradius/mods-enabled/expiration Debug: expiration { Debug: reply-message = "Password Has Expired " Debug: } Debug: (Loaded rlm_logintime, checking if it's valid) Debug: Module: Linked to module rlm_logintime Debug: Module: Instantiating module "logintime" from file /etc/freeradius/mods-enabled/logintime Debug: logintime { Debug: reply-message = "You are calling outside your allowed timespan " Debug: minimum-timeout = 60 Debug: } Debug: } Debug: radiusd: #### Loading Virtual Servers #### Debug: server { # from file /etc/freeradius/radiusd.conf Debug: modules { Debug: } # modules Debug: } # server Debug: server dhcp { # from file /etc/freeradius/sites-enabled/dhcp Debug: modules { Debug: Module: Checking dhcp DHCP-Discover {...} for more modules to load Debug: (Loaded rlm_passwd, checking if it's valid) Debug: Module: Linked to module rlm_passwd Debug: Module: Instantiating module "mac2ip" from file /etc/freeradius/mods-enabled/mac2ip Debug: passwd mac2ip { Debug: filename = "/etc/freeradius/mac2ip" Debug: format = "*DHCP-Client-Hardware-Address:=DHCP-Your-IP-Address" Debug: delimiter = "," Debug: ignorenislike = yes Debug: ignoreempty = yes Debug: allowmultiplekeys = no Debug: hashsize = 100 Debug: } Debug: rlm_passwd: nfields: 2 keyfield 0(DHCP-Client-Hardware-Address) listable: no Debug: (Loaded rlm_always, checking if it's valid) Debug: Module: Linked to module rlm_always Debug: Module: Instantiating module "ok" from file /etc/freeradius/mods-enabled/always Debug: always ok { Debug: rcode = "ok" Debug: simulcount = 0 Debug: mpp = no Debug: } Debug: Module: Checking dhcp DHCP-Request {...} for more modules to load Debug: Module: Checking dhcp (null) {...} for more modules to load Error: /etc/freeradius/sites-enabled/dhcp[153]: No name specified for Post-Auth-Type block Debug: } # modules Debug: } # server Debug: radiusd: #### Opening IP addresses and Ports #### Debug: listen { Debug: type = "auth" Debug: ipaddr = * Debug: port = 0 Debug: } Debug: listen { Debug: type = "acct" Debug: ipaddr = * Debug: port = 0 Debug: } Debug: listen { Debug: type = "dhcp" Debug: ipaddr = 255.255.255.255 Debug: port = 67 Debug: } Debug: Listening on authentication address * port 1812 Debug: Listening on accounting address * port 1813 Debug: Listening on dhcp interface eth0 address 255.255.255.255 port 67 as server dhcp Debug: Listening on proxy address * port 1814 Info: Ready to process requests. Received DHCP-Discover of id 8e22cb4d from 0.0.0.0:68 to 255.255.255.255:67 01 01 06 00 8e 22 cb 4d 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 13 96 00 f9 84 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 35 01 01 3d 08 01 00 13 96 00 f9 84 00 33 04 ff ff ff 00 33 04 ff ff ff ff 37 0b 01 03 06 0f 12 42 78 87 d5 d6 d7 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DHCP-Opcode = Client-Message DHCP-Hardware-Type = Ethernet DHCP-Hardware-Address-Length = 6 DHCP-Hop-Count = 0 DHCP-Transaction-Id = 2384644941 DHCP-Number-of-Seconds = 0 DHCP-Flags = Broadcast DHCP-Client-IP-Address = 0.0.0.0 DHCP-Your-IP-Address = 0.0.0.0 DHCP-Server-IP-Address = 0.0.0.0 DHCP-Gateway-IP-Address = 0.0.0.0 DHCP-Client-Hardware-Address = 00:13:96:00:f9:84 DHCP-Message-Type = DHCP-Discover DHCP-Client-Identifier = 0x0100139600f98400 DHCP-IP-Address-Lease-Time = 4294967040 DHCP-IP-Address-Lease-Time = 4294967295 DHCP-Parameter-Request-List = DHCP-Subnet-Mask DHCP-Parameter-Request-List = DHCP-Router-Address DHCP-Parameter-Request-List = DHCP-Domain-Name-Server DHCP-Parameter-Request-List = DHCP-Domain-Name DHCP-Parameter-Request-List = DHCP-Bootp-Extensions-Path DHCP-Parameter-Request-List = DHCP-TFTP-Server-Name DHCP-Parameter-Request-List = DHCP-SIP-Servers-DHCP-Option DHCP-Parameter-Request-List = DHCP-HTTP-Proxy DHCP-Parameter-Request-List = 213 DHCP-Parameter-Request-List = 214 DHCP-Parameter-Request-List = 215 Info: server dhcp { Debug: Trying sub-section dhcp DHCP-Discover {...} Info: +- entering group DHCP-Discover {...} Info: ++[reply] returns noop Info: ++[reply] returns noop Segmentation fault I'm missing something obvious? Thanks in advance.
Leo Combes wrote:
Thanks Alan. I hope to make it work.
As I have little experience with Freeradius, I want to start doing a little test with the "mac2ip" module.
I made a file called mac2ip in /etc/freeradius with the following contents:
00:13:96:00:f9:84,10.1.100.1
OK.
I have added the dhcp.dictionary. At last I tried to run freeradius:
Please use "radiusd -X", not "radiusd -Xx"
Info: server dhcp { Debug: Trying sub-section dhcp DHCP-Discover {...} Info: +- entering group DHCP-Discover {...} Info: ++[reply] returns noop Info: ++[reply] returns noop Segmentation fault
I'm missing something obvious?
Nope. It should work. It looks like the mac2ip module is crashing for some unknown reason. Can you follow doc/bugs? It will tell you how to post more debugging information so we can see exactly where it's going wrong. Thanks. Alan DeKok.
Thanks again Alan.
At last I tried to run freeradius:
Please use "radiusd -X", not "radiusd -Xx"
OK.
Info: server dhcp { Debug: Trying sub-section dhcp DHCP-Discover {...} Info: +- entering group DHCP-Discover {...} Info: ++[reply] returns noop Info: ++[reply] returns noop Segmentation fault
I'm missing something obvious?
Nope. It should work. It looks like the mac2ip module is crashing for some unknown reason.
Can you follow doc/bugs? It will tell you how to post more debugging information so we can see exactly where it's going wrong.
I don't know how to do that. Any link on how to do it? Thanks.
On 22.01.2013 22:58, Leo Combes wrote:
Can you follow doc/bugs? It will tell you how to post more debugging information so we can see exactly where it's going wrong.
I don't know how to do that. Any link on how to do it?
/usr/share/doc/freeradius/bugs or https://github.com/FreeRADIUS/freeradius-server/blob/master/doc/bugs Olivier -- Olivier Beytrison Network & Security Engineer, HES-SO Fribourg Mail: olivier@heliosnet.org
Thanks for your reply. Fortunately it seems that the segfault is a false alarm. As it semt strange to me that Freeradius stop working by segfault, I installed FR in another PC and I copy the same configuration. Now it seems to be working, except that it stays in loop on DHCP Discover (no Offer, no Request, no Ack). FreeRADIUS Version 2.2.0, for host x86_64-pc-linux-gnu, built on Sep 20 2012 at 04:13:51 Copyright (C) 1999-2012 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/freeradius/radiusd.conf including configuration file /etc/freeradius/clients.conf including files in directory /etc/freeradius/mods-enabled/ including configuration file /etc/freeradius/mods-enabled/sqlcounter_expire_on_login including configuration file /etc/freeradius/mods-enabled/rediswho including configuration file /etc/freeradius/mods-enabled/otp including configuration file /etc/freeradius/mods-enabled/mac2vlan including configuration file /etc/freeradius/mods-enabled/smsotp including configuration file /etc/freeradius/mods-enabled/chap including configuration file /etc/freeradius/mods-enabled/checkval including configuration file /etc/freeradius/mods-enabled/dhcp_sqlippool including configuration file /etc/freeradius/mods-enabled/pap including configuration file /etc/freeradius/mods-enabled/inner-eap including configuration file /etc/freeradius/mods-enabled/ippool including configuration file /etc/freeradius/mods-enabled/soh including configuration file /etc/freeradius/mods-enabled/exec including configuration file /etc/freeradius/mods-enabled/sql_log including configuration file /etc/freeradius/mods-enabled/redis including configuration file /etc/freeradius/mods-enabled/ntlm_auth including configuration file /etc/freeradius/mods-enabled/logintime including configuration file /etc/freeradius/mods-enabled/passwd including configuration file /etc/freeradius/mods-enabled/expiration including configuration file /etc/freeradius/mods-enabled/counter including configuration file /etc/freeradius/mods-enabled/acct_unique including configuration file /etc/freeradius/mods-enabled/krb5 including configuration file /etc/freeradius/mods-enabled/policy including configuration file /etc/freeradius/mods-enabled/dynamic_clients including configuration file /etc/freeradius/mods-enabled/detail.log including configuration file /etc/freeradius/mods-enabled/expr including configuration file /etc/freeradius/mods-enabled/ldap including configuration file /etc/freeradius/mods-enabled/opendirectory including configuration file /etc/freeradius/mods-enabled/cache including configuration file /etc/freeradius/mods-enabled/always including configuration file /etc/freeradius/mods-enabled/digest including configuration file /etc/freeradius/mods-enabled/realm including configuration file /etc/freeradius/mods-enabled/detail including configuration file /etc/freeradius/mods-enabled/perl including configuration file /etc/freeradius/mods-enabled/detail.example.com including configuration file /etc/freeradius/mods-enabled/attr_rewrite including configuration file /etc/freeradius/mods-enabled/mac2ip including configuration file /etc/freeradius/mods-enabled/files including configuration file /etc/freeradius/mods-enabled/linelog including configuration file /etc/freeradius/mods-enabled/preprocess including configuration file /etc/freeradius/mods-enabled/pam including configuration file /etc/freeradius/mods-enabled/attr_filter including configuration file /etc/freeradius/mods-enabled/etc_group including configuration file /etc/freeradius/mods-enabled/radutmp including configuration file /etc/freeradius/mods-enabled/smbpasswd including configuration file /etc/freeradius/mods-enabled/echo including configuration file /etc/freeradius/mods-enabled/wimax including configuration file /etc/freeradius/mods-enabled/replicate including configuration file /etc/freeradius/mods-enabled/mschap including configuration file /etc/freeradius/mods-enabled/cui including configuration file /etc/freeradius/mods-enabled/unix including configuration file /etc/freeradius/mods-enabled/radrelay including configuration file /etc/freeradius/mods-enabled/sradutmp including configuration file /etc/freeradius/eap.conf including configuration file /etc/freeradius/sqlippool.conf including configuration file /etc/freeradius/sql/mysql/ippool.conf including configuration file /etc/freeradius/policy.conf including files in directory /etc/freeradius/sites-enabled/ including configuration file /etc/freeradius/sites-enabled/dhcp including configuration file /etc/freeradius/sites-enabled/default including configuration file /etc/freeradius/sites-enabled/inner-tunnel main { user = "root" group = "freerad" allow_core_dumps = no } including dictionary file /etc/freeradius/dictionary main { name = "freeradius" prefix = "/usr" localstatedir = "/var" sbindir = "/usr/sbin" logdir = "/var/log/freeradius" run_dir = "/var/run/freeradius" libdir = "/usr/lib/freeradius" radacctdir = "/var/log/freeradius/radacct" hostname_lookups = no max_request_time = 30 cleanup_delay = 5 max_requests = 1024 pidfile = "/var/run/freeradius/freeradius.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 #### radiusd: #### Loading Clients #### client localhost { ipaddr = 127.0.0.1 require_message_authenticator = no secret = "testing123" nastype = "other" } radiusd: #### Instantiating modules #### instantiate { Module: Linked to module rlm_exec Module: Instantiating module "exec" from file /etc/freeradius/mods-enabled/exec exec { wait = no input_pairs = "request" shell_escape = yes } Module: Linked to module rlm_expr Module: Instantiating module "expr" from file /etc/freeradius/mods-enabled/expr Module: Linked to module rlm_expiration Module: Instantiating module "expiration" from file /etc/freeradius/mods-enabled/expiration expiration { reply-message = "Password Has Expired " } Module: Linked to module rlm_logintime Module: Instantiating module "logintime" from file /etc/freeradius/mods-enabled/logintime logintime { reply-message = "You are calling outside your allowed timespan " minimum-timeout = 60 } } radiusd: #### Loading Virtual Servers #### server { # from file /etc/freeradius/radiusd.conf modules { Module: Creating Auth-Type = digest Module: Creating Post-Auth-Type = REJECT Module: Checking authenticate {...} for more modules to load Module: Linked to module rlm_pap Module: Instantiating module "pap" from file /etc/freeradius/mods-enabled/pap pap { encryption_scheme = "auto" auto_header = no } Module: Linked to module rlm_chap Module: Instantiating module "chap" from file /etc/freeradius/mods-enabled/chap Module: Linked to module rlm_mschap Module: Instantiating module "mschap" from file /etc/freeradius/mods-enabled/mschap mschap { use_mppe = yes require_encryption = no require_strong = no with_ntdomain_hack = no allow_retry = yes } Module: Linked to module rlm_digest Module: Instantiating module "digest" from file /etc/freeradius/mods-enabled/digest Module: Linked to module rlm_unix Module: Instantiating module "unix" from file /etc/freeradius/mods-enabled/unix unix { radwtmp = "/var/log/freeradius/radwtmp" } Module: Linked to module rlm_eap Module: Instantiating module "eap" from file /etc/freeradius/eap.conf eap { default_eap_type = "md5" timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = 4096 } 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 CA_path = "/etc/freeradius/certs" pem_file_type = yes private_key_file = "/etc/freeradius/certs/server.key" certificate_file = "/etc/freeradius/certs/server.pem" CA_file = "/etc/freeradius/certs/ca.pem" private_key_password = "whatever" dh_file = "/etc/freeradius/certs/dh" random_file = "/dev/urandom" fragment_size = 1024 include_length = yes check_crl = no cipher_list = "DEFAULT" make_cert_command = "/etc/freeradius/certs/bootstrap" ecdh_curve = "prime256v1" cache { enable = no lifetime = 24 max_entries = 255 } verify { } ocsp { enable = no override_cert_url = yes url = "http://127.0.0.1/ocsp/" use_nonce = yes timeout = 0 softfail = no } } 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" soh = no } Module: Linked to sub-module rlm_eap_mschapv2 Module: Instantiating eap-mschapv2 mschapv2 { with_ntdomain_hack = no send_error = no } Module: Checking authorize {...} for more modules to load Module: Linked to module rlm_preprocess Module: Instantiating module "preprocess" from file /etc/freeradius/mods-enabled/preprocess preprocess { huntgroups = "/etc/freeradius/huntgroups" hints = "/etc/freeradius/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 /etc/freeradius/huntgroups reading pairlist file /etc/freeradius/hints Module: Linked to module rlm_realm Module: Instantiating module "suffix" from file /etc/freeradius/mods-enabled/realm realm suffix { format = "suffix" delimiter = "@" ignore_default = no ignore_null = no } Module: Linked to module rlm_files Module: Instantiating module "files" from file /etc/freeradius/mods-enabled/files files { usersfile = "/etc/freeradius/users" acctusersfile = "/etc/freeradius/acct_users" preproxy_usersfile = "/etc/freeradius/preproxy_users" compat = "no" } reading pairlist file /etc/freeradius/users reading pairlist file /etc/freeradius/acct_users reading pairlist file /etc/freeradius/preproxy_users Module: Checking preacct {...} for more modules to load Module: Linked to module rlm_acct_unique Module: Instantiating module "acct_unique" from file /etc/freeradius/mods-enabled/acct_unique acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, NAS-Identifier, NAS-Port" } Module: Checking accounting {...} for more modules to load Module: Linked to module rlm_detail Module: Instantiating module "detail" from file /etc/freeradius/mods-enabled/detail detail { detailfile = "/var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d" header = "%t" detailperm = 384 dirperm = 493 locking = no log_packet_header = no } Module: Linked to module rlm_attr_filter Module: Instantiating module "attr_filter.accounting_response" from file /etc/freeradius/mods-enabled/attr_filter attr_filter attr_filter.accounting_response { attrsfile = "/etc/freeradius/attrs.accounting_response" key = "%{User-Name}" relaxed = no } reading pairlist file /etc/freeradius/attrs.accounting_response Module: Checking session {...} for more modules to load Module: Linked to module rlm_radutmp Module: Instantiating module "radutmp" from file /etc/freeradius/mods-enabled/radutmp radutmp { filename = "/var/log/freeradius/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: Instantiating module "attr_filter.access_reject" from file /etc/freeradius/mods-enabled/attr_filter attr_filter attr_filter.access_reject { attrsfile = "/etc/freeradius/attrs.access_reject" key = "%{User-Name}" relaxed = no } reading pairlist file /etc/freeradius/attrs.access_reject } # modules } # server server dhcp { # from file /etc/freeradius/sites-enabled/dhcp modules { Module: Checking dhcp DHCP-Discover {...} for more modules to load Module: Linked to module rlm_passwd Module: Instantiating module "mac2ip" from file /etc/freeradius/mods-enabled/mac2ip passwd mac2ip { filename = "/etc/freeradius/mac2ip" format = "*DHCP-Client-Hardware-Address:=DHCP-Your-IP-Address" delimiter = "," ignorenislike = yes ignoreempty = yes allowmultiplekeys = no hashsize = 100 } rlm_passwd: nfields: 2 keyfield 0(DHCP-Client-Hardware-Address) listable: no Module: Linked to module rlm_always Module: Instantiating module "ok" from file /etc/freeradius/mods-enabled/always always ok { rcode = "ok" simulcount = 0 mpp = no } Module: Checking dhcp DHCP-Request {...} for more modules to load Module: Checking dhcp (null) {...} for more modules to load /etc/freeradius/sites-enabled/dhcp[153]: No name specified for Post-Auth-Type block } # modules } # server server inner-tunnel { # from file /etc/freeradius/sites-enabled/inner-tunnel modules { Module: Checking authenticate {...} for more modules to load Module: Checking authorize {...} for more modules to load 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 = "dhcp" ipaddr = 255.255.255.255 port = 67 } listen { type = "auth" ipaddr = 127.0.0.1 port = 18120 } Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on dhcp interface eth0 address 255.255.255.255 port 67 as server dhcp Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel Listening on proxy address * port 1814 Ready to process requests. Received DHCP-Discover of id 8e22cb4d from 0.0.0.0:68 to 255.255.255.255:67 DHCP-Opcode = Client-Message DHCP-Hardware-Type = Ethernet DHCP-Hardware-Address-Length = 6 DHCP-Hop-Count = 0 DHCP-Transaction-Id = 2384644941 DHCP-Number-of-Seconds = 0 DHCP-Flags = Broadcast DHCP-Client-IP-Address = 0.0.0.0 DHCP-Your-IP-Address = 0.0.0.0 DHCP-Server-IP-Address = 0.0.0.0 DHCP-Gateway-IP-Address = 0.0.0.0 DHCP-Client-Hardware-Address = 00:13:96:00:f9:84 DHCP-Message-Type = DHCP-Discover DHCP-Client-Identifier = 0x0100139600f98400 DHCP-IP-Address-Lease-Time = 4294967040 DHCP-IP-Address-Lease-Time = 4294967295 DHCP-Parameter-Request-List = DHCP-Subnet-Mask DHCP-Parameter-Request-List = DHCP-Router-Address DHCP-Parameter-Request-List = DHCP-Domain-Name-Server DHCP-Parameter-Request-List = DHCP-Domain-Name DHCP-Parameter-Request-List = DHCP-Bootp-Extensions-Path DHCP-Parameter-Request-List = DHCP-TFTP-Server-Name DHCP-Parameter-Request-List = DHCP-SIP-Servers-DHCP-Option DHCP-Parameter-Request-List = DHCP-HTTP-Proxy DHCP-Parameter-Request-List = 213 DHCP-Parameter-Request-List = 214 DHCP-Parameter-Request-List = 215 server dhcp { Trying sub-section dhcp DHCP-Discover {...} +- entering group DHCP-Discover {...} ++[reply] returns noop ++[reply] returns noop [mac2ip] Added DHCP-Your-IP-Address: '10.1.100.1' to reply_items ++[mac2ip] returns ok ++[ok] returns ok } # server dhcp DHCP-Subnet-Mask = 255.255.0.0 DHCP-Router-Address = 10.1.1.3 DHCP-Domain-Name-Server = 8.8.8.8 DHCP-IP-Address-Lease-Time = 7200 DHCP-DHCP-Server-Identifier = 10.1.2.6 Sending DHCP-Offer of id 8e22cb4d from 255.255.255.255:67 to 255.255.255.255:68 Finished request 1. Cleaning up request 1 ID -1910322355 with timestamp +78 Going to the next request Ready to process requests. Received DHCP-Discover of id 8e22cb4d from 0.0.0.0:68 to 255.255.255.255:67 DHCP-Opcode = Client-Message DHCP-Hardware-Type = Ethernet DHCP-Hardware-Address-Length = 6 DHCP-Hop-Count = 0 DHCP-Transaction-Id = 2384644941 DHCP-Number-of-Seconds = 0 DHCP-Flags = Broadcast DHCP-Client-IP-Address = 0.0.0.0 DHCP-Your-IP-Address = 0.0.0.0 DHCP-Server-IP-Address = 0.0.0.0 DHCP-Gateway-IP-Address = 0.0.0.0 DHCP-Client-Hardware-Address = 00:13:96:00:f9:84 DHCP-Message-Type = DHCP-Discover DHCP-Client-Identifier = 0x0100139600f98400 DHCP-IP-Address-Lease-Time = 4294967040 DHCP-IP-Address-Lease-Time = 4294967295 DHCP-Parameter-Request-List = DHCP-Subnet-Mask DHCP-Parameter-Request-List = DHCP-Router-Address DHCP-Parameter-Request-List = DHCP-Domain-Name-Server DHCP-Parameter-Request-List = DHCP-Domain-Name DHCP-Parameter-Request-List = DHCP-Bootp-Extensions-Path DHCP-Parameter-Request-List = DHCP-TFTP-Server-Name DHCP-Parameter-Request-List = DHCP-SIP-Servers-DHCP-Option DHCP-Parameter-Request-List = DHCP-HTTP-Proxy DHCP-Parameter-Request-List = 213 DHCP-Parameter-Request-List = 214 DHCP-Parameter-Request-List = 215 server dhcp { Trying sub-section dhcp DHCP-Discover {...} +- entering group DHCP-Discover {...} ++[reply] returns noop ++[reply] returns noop [mac2ip] Added DHCP-Your-IP-Address: '10.1.100.1' to reply_items ++[mac2ip] returns ok ++[ok] returns ok } # server dhcp DHCP-Subnet-Mask = 255.255.0.0 DHCP-Router-Address = 10.1.1.3 DHCP-Domain-Name-Server = 8.8.8.8 DHCP-IP-Address-Lease-Time = 7200 DHCP-DHCP-Server-Identifier = 10.1.2.6 Sending DHCP-Offer of id 8e22cb4d from 255.255.255.255:67 to 255.255.255.255:68 Finished request 2. Cleaning up request 2 ID -1910322355 with timestamp +138 Going to the next request Ready to process requests. dhcpdump confirm this: --------------------------------------------------------------------------- TIME: 2013-01-23 17:24:31.397 IP: 0.0.0.0 (0:13:96:0:f9:84) > 255.255.255.255 (ff:ff:ff:ff:ff:ff) OP: 1 (BOOTPREQUEST) HTYPE: 1 (Ethernet) HLEN: 6 HOPS: 0 XID: 8e22cb4d SECS: 0 FLAGS: 7f80 CIADDR: 0.0.0.0 YIADDR: 0.0.0.0 SIADDR: 0.0.0.0 GIADDR: 0.0.0.0 CHADDR: 00:13:96:00:f9:84:00:00:00:00:00:00:00:00:00:00 SNAME: . FNAME: . OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER) OPTION: 61 ( 8) Client-identifier 01:00:13:96:00:f9:84:00 OPTION: 51 ( 4) IP address leasetime -256 () OPTION: 51 ( 4) IP address leasetime -1 () OPTION: 55 ( 11) Parameter Request List 1 (Subnet mask) 3 (Routers) 6 (DNS server) 15 (Domainname) 18 (Extensions path) 66 (TFTP server name) 120 (SIP Servers DHCP Option) 135 (???) 213 (???) 214 (???) 215 (???) --------------------------------------------------------------------------- TIME: 2013-01-23 17:24:37.396 IP: 0.0.0.0 (0:13:96:0:f9:84) > 255.255.255.255 (ff:ff:ff:ff:ff:ff) OP: 1 (BOOTPREQUEST) HTYPE: 1 (Ethernet) HLEN: 6 HOPS: 0 XID: 8e22cb4d SECS: 0 FLAGS: 7f80 CIADDR: 0.0.0.0 YIADDR: 0.0.0.0 SIADDR: 0.0.0.0 GIADDR: 0.0.0.0 CHADDR: 00:13:96:00:f9:84:00:00:00:00:00:00:00:00:00:00 SNAME: . FNAME: . OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER) OPTION: 61 ( 8) Client-identifier 01:00:13:96:00:f9:84:00 OPTION: 51 ( 4) IP address leasetime -256 () OPTION: 51 ( 4) IP address leasetime -1 () OPTION: 55 ( 11) Parameter Request List 1 (Subnet mask) 3 (Routers) 6 (DNS server) 15 (Domainname) 18 (Extensions path) 66 (TFTP server name) 120 (SIP Servers DHCP Option) 135 (???) 213 (???) 214 (???) 215 (???) --------------------------------------------------------------------------- Thanks in advance.
hi, those ID values look a little 'wierd' - vary large and negative does the DHCP response leave the server? do you have anything like dHCP snooping on the network that might be blocking the responses from this new DHCP server .... or is the client getting its answers from a.n.another DHCP server and so not dealing with the FR response? alan
2013/1/23 <A.L.M.Buxey@lboro.ac.uk>:
hi,
those ID values look a little 'wierd' - vary large and negative
I don't understand where this values came from? which would be the normal values?
does the DHCP response leave the server? do you have anything like dHCP snooping on the network that might be blocking the responses from this new DHCP server .... or is the client getting its answers from a.n.another DHCP server and so not dealing with the FR response?
alan
I tried connecting the modem directly to the server, without a switch or any server that may cause any trouble. I got the same result, the server receives DISCOVER packet. Chechinkg the log on debug, it seems to send and OFFER (Sending DHCP-Offer of id 8e22cb4d from 255.255.255.255:67 to 255.255.255.255:68) but it doesn't, It's verified that it does not send it. What can I check, in order to find the problem? Thanks for your interest.
Leo Combes wrote:
2013/1/23 <A.L.M.Buxey@lboro.ac.uk>:
those ID values look a little 'wierd' - vary large and negative
I don't understand where this values came from? which would be the normal values?
It's fine. Don't worry about it.
does the DHCP response leave the server? do you have anything like dHCP snooping on the network that might be blocking the responses from this new DHCP server .... or is the client getting its answers from a.n.another DHCP server and so not dealing with the FR response?
alan
I tried connecting the modem directly to the server, without a switch or any server that may cause any trouble. I got the same result, the server receives DISCOVER packet. Chechinkg the log on debug, it seems to send and OFFER (Sending DHCP-Offer of id 8e22cb4d from 255.255.255.255:67 to 255.255.255.255:68) but it doesn't, It's verified that it does not send it.
What can I check, in order to find the problem?
Use tcpdump to see where the packets go. The code *should* work... Alan DeKok.
I apollogize for the late response, I have been very busy and I couldn't keep working on this. I found the problem! (at least it works now) I installed Freeradius from PPA. https://launchpad.net/~freeradius/+archive/stable DHCP functionality not work when installed from PPA, or at least the package version 2.2.0 + dfsg-ppa10 not work. Reason: installed and configured without errors, seems to respond correctly OFFER and ACK but this packets never leaves the network adapter. SOLUTION: install and configure from sources. I'm writing a how-to for setting freeradius as DHCP server, completely from scratch, for static IP allocation, with DHCP options and using Mysql. If you allow me, i'd like to post it in this mailing list for you to test and correct it. Thanks!
Hi,
I installed Freeradius from PPA. https://launchpad.net/~freeradius/+archive/stable
DHCP functionality not work when installed from PPA, or at least the package version 2.2.0 + dfsg-ppa10 not work. Reason: installed and configured without errors, seems to respond correctly OFFER and ACK but this packets never leaves the network adapter.
SOLUTION: install and configure from sources.
what configuration options are in the PPA version? something is not right there
I'm writing a how-to for setting freeradius as DHCP server, completely from scratch, for static IP allocation, with DHCP options and using Mysql. If you allow me, i'd like to post it in this mailing list for you to test and correct it.
...and it can go onto WIKI/HOWTO alan
> what configuration options are in the PPA version? something is not right there
Once installed, the configuration files in /etc/freeradius or
/etc/raddb are the same, or at least the most relevant ones to its
functionality.
I will compare one by one to see if I find any difference.
> ...and it can go onto WIKI/HOWTO
>
> alan
Install DHCP for static IP allocation in Freeradius.
Example based on Debian.
Freeradius as DHCP server for static ip allocation from MySQL, with
use of DHCP options.
Might work for provision of cable modems.
One important thing! (specially Ubuntu users): (*)
DHCP functionality will not work when installed from PPA, or at least
the package version 2.2.0 + dfsg-ppa10 not work.
Reason: I dont know. I installed and configured without errors, seems
to respond correctly OFFER and ACK but this packets never leaves the
network adapter.
This example assumes that:
The network adapter where is connected freeradius have the following settings:
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
Client mac-address is 00:11:22:00:33:44
Let's start:
>From sources:
- Download sources from Freeradius:
wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.0.tar.gz
- Unpack sources, then enter in new directory:
tar -xvzf freeradius-server-2.2.0.tar.gz
cd freeradius-server-2.2.0
- Configure it:
./configure --with-dhcp
- Add dictionary: (**)
edit share/dictionary (in sources files) and add a line containing
"$INCLUDE dictionary.dhcp" whithout quotes.
- If mysql is not installed, install it:
apt-get install mysql-server
- Also, with mysql need some extra packages: (***)
apt-get install mysql-devel libmysqld-dev libmysqlclient-dev
libmysqld-dev libmysqld-pic
- Compile:
make
make install (do as root)
- Modify radiusd.conf (the configuration files is located in
/usr/local/etc/raddb)
uncomment "$INCLUDE sql.conf"
set "user = root" and "group = root"
- Modify sql.conf
configure login/password for access to mysql database
leave dialup.conf included
- Create database "radius"
mysql -u user -p pass (login in mysql console)
create database radius
- Load schema for mysql
mysql -u user -p pass radius < schema.sql
- Add this in radius database:
mysql -u user -p pass (login in mysql console)
use radius;
INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`)
VALUES ('00:11:22:00:33:44', 'Cleartext-Password', ':=', '');
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`)
VALUES ('00:11:22:00:33:44', 'DHCP-Your-IP-Address', '=',
'192.168.10.10');
optionally included as example:
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`)
VALUES ('00:11:22:00:33:44', 'DHCP-Subnet-Mask', '=',
'255.255.255.0');
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`)
VALUES ('00:11:22:00:33:44', 'DHCP-Router-Address', '=',
'192.168.10.1');
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`)
VALUES ('00:11:22:00:33:44', 'DHCP-Bootp-Extensions-Path', '=',
'modem.acf');
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`)
VALUES ('00:11:22:00:33:44', 'DHCP-TFTP-Server-Name', '=',
'172.31.1.1');
- Modify /usr/local/etc/raddb/sql/dialup.conf, replace:
sql_user_name = "%{User-Name}"
for...
sql_user_name = "%{DHCP-Client-Hardware-Address}"
This use mac-address as username.
- create a /usr/local/etc/raddb/sites-enabled/dhcp_static and add this:
(you can find the original example in
/usr/local/etc/raddb/sites-available/dhcp)
server dhcp {
listen {
type = dhcp
ipaddr = 255.255.255.255
port = 67
interface = eth1
broadcast = yes
}
dhcp DHCP-Discover {
update reply {
DHCP-Message-Type = DHCP-Offer
}
update reply {
DHCP-Domain-Name-Server = 0.0.0.0
DHCP-IP-Address-Lease-Time = 7200
DHCP-DHCP-Server-Identifier = 192.168.10.1
}
sql.authorize
ok
}
dhcp DHCP-Request {
update reply {
DHCP-Message-Type = DHCP-Ack
}
update reply {
DHCP-Domain-Name-Server = 0.0.0.0
DHCP-IP-Address-Lease-Time = 7200
DHCP-DHCP-Server-Identifier = 192.168.10.1
}
sql.authorize
sql.post-auth
ok
}
dhcp {
reject
}
}
- Start testing:
/usr/local/sbin/radiusd -X
Troubleshooting:
- /usr/local/sbin/radiusd: error while loading shared libraries:
libfreeradius-radius-2.2.0.so: cannot open shared object file: No such
file or directory
this solves the problem:
/sbin/ldconfig -v
- Could not link driver rlm_sql_mysql: rlm_sql_mysql.so: cannot open
shared object file: No such file or directory
Missing mysql devel extra packages. Install before compile!
clarifications:
(*) - I installed PPA version in 3 different servers with no luck.
Same configuration, in sources version, works fine. Someone can
confirm this?
(**) - In http://freeradius.org/features/dhcp.html says "un-comment",
but this line not exist.
(***) - installed (mysql-devel libmysqld-dev libmysqlclient-dev
libmysqld-dev libmysqld-pic) packages, surely one or more of them are
not necessary. If anyone knows which of them are the strictly
necessary, tell me, so I remove the rest.
TIP: You can use dhcpdump to see DHCP request and responses in your server.
Leo Combes wrote:
One important thing! (specially Ubuntu users): (*) DHCP functionality will not work when installed from PPA, or at least the package version 2.2.0 + dfsg-ppa10 not work. Reason: I dont know. I installed and configured without errors, seems to respond correctly OFFER and ACK but this packets never leaves the network adapter.
That might be an Ubuntu security setting. It seems to work fine on my systems. So it's hard to track down what's happening on other systems. Alan DeKok.
Leo Combes wrote:
As additional information, I tried with PPA version in Debian and do not work (same problem). Maybe is a problem in my server.
Maybe. I've just been running it with an Ubuntu 12.04 system, and it seems to work for me. I didn't install selinux, firewalls, or anything else. I'd suggest trying the v2.x.x branch from git. I've put some more debugging messages in there (and cleaned others up). That should make it clear what's going on. Alan DeKok.
New article on wiki: http://wiki.freeradius.org/dhcp-for-static-ip-allocation Please let me know your thoughts. 2013/3/3 Alan DeKok <aland@deployingradius.com>:
Leo Combes wrote:
As additional information, I tried with PPA version in Debian and do not work (same problem). Maybe is a problem in my server.
Maybe. I've just been running it with an Ubuntu 12.04 system, and it seems to work for me. I didn't install selinux, firewalls, or anything else.
I'd suggest trying the v2.x.x branch from git. I've put some more debugging messages in there (and cleaned others up). That should make it clear what's going on.
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
participants (4)
-
A.L.M.Buxey@lboro.ac.uk -
Alan DeKok -
Leo Combes -
Olivier Beytrison