> 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.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to