Using multiple client classes with ISC DHCPd
Since the internet is lacking examples of how to use multiple classes with a single pool here is one:
class "mac-filtered-clients"
{
match binary-to-ascii (16, 8, ":", substring(hardware, 1, 6));
}
subclass "mac-filtered-clients" "50:7b:00:00:00:00"; # some cool host!
class "J-client" {
spawn with option agent.circuit-id;
match if (substring(option agent.circuit-id, 30, 9) = "foo-bar");
lease limit 1;
}
subnet 192.168.0.0 255.255.0.0 {
pool {
range 192.168.0.10 192.168.0.150;
allow members of "J-client";
allow members of "mac-filtered-clients";
}
}
This isn’t very special compared to a setup with just a single class but it can be confusing since debugging classes is a pita.. One pitfall I did run into was using the byte representation of the mac-addresses (without the quotes) and using match hardware;
. The example above works for me (tm).