To have various IP ranges in the same subnet and assign the IP Address depending of the device type that sends the request.

Bill Shirley bill at c3po.polymerindustries.biz
Thu Aug 8 05:50:01 UTC 2019


Here's a couple of classes you might find useful:
class "mobile_device" {
     match if (
         option vendor-class-identifier ~~ "android"
         or option host-name ~~ "android"
         or option host-name ~~ "iphone"
         or option host-name ~~ "samsung-"
         or option host-name ~~ "galaxy"
         or option host-name ~~ "ipod"
         or option host-name ~~ "ipad"
         or option host-name ~~ "watch"
         or option host-name ~~ "nintendo 3ds"
     );
}
class "Microsoft" {
     match if substring(option vendor-class-identifier, 0, 4) = "MSFT";
     set member_of = "Microsoft";
}
The first class uses the regexp operator ~~ (case insensitive).  There is also the
case sensitive operator ~=.

On the subject of implicit deny for a pool with only "allow members":
I classify most of my devices (i.e. Panasonic, Ricoh, Canon, Linux, Microsoft) to assign
them to a specific pool (i.e Printers, Linux, Microsoft, mobile_device).  Then I have an
"uncategorized" pool for those devices that aren't in a currently defined class so that they
will get an address.  If later I change a class to include a device (say Epson), that device
will request its previous address on renew and *will get it* if my "uncategorized" pool doesn't
have a 'deny members of "Epson"' configuration line.

TL;DR - If a device requests a renewal of an address and there is no "deny members" for
the pool, it will be granted.

dhcp-server-4.3.6-10.fc27.x86_64

Bill

On 8/7/2019 8:42 AM, Juan Antonio García Moreno wrote:
> Hi Simon,
>
> Too much thanks by your anotation about the Hosts Declarations. I will keep them in mind and I will change it.
>
> About the Hosts Classifications, I have tested this and works for me:
>
> ------------------------------------------------------------------------------
> class "smartphones" {
>   match if substring(option vendor-class-identifier,0,13) = "android-dhcp-" or
>            substring(option vendor-class-identifier,0,7) = "HUAWEI:" or
>            substring(option vendor-class-identifier,0,7) = "dhcpcd-";
> }
> ------------------------------------------------------------------------------
>
> That is the same that this:
>
> ------------------------------------------------------------------------------
> class "smartphones" {
>   match option vendor-class-identifier;
> }
>
> subclass "smartphones" "android-dhcp-9"
> subclass "smartphones" "android-dhcp-8.1.0"
> subclass "smartphones" "android-dhcp-7.0"
> subclass "smartphones" "HUAWEI:android:FIG-L11"
> subclass "smartphones" "HUAWEI:android:QC_Reference_Phone"
> subclass "smartphones" "dhcpcd-5.5.6"
> ------------------------------------------------------------------------------
>
> And I can change it to:
>
> ------------------------------------------------------------------------------
> class "smartphones" {
>   match option vendor-class-identifier;
> }
>
> include smartphones.cfg
>
> * smartphones.cfg file containing the subclass lines.
> ------------------------------------------------------------------------------
>
> But, is there any way to minimize the number of lines to include in the smartphones.cfg file using some kind of wildcard or 
> expression/function like "substring()" used in the Class Declaration?
>
> Another question:
>
> The iPhones and the iPads not send the "vendor-class-identifier" option in the DHCP Discover Packet.
>
> Could I classify iPhones and iPads taking into account some other parameter of the DHCP Discover Packet?
>
>
> Best regards
>
>
>
> El lun., 5 ago. 2019 a las 19:35, Simon Hobson (<dhcp1 at thehobsons.co.uk <mailto:dhcp1 at thehobsons.co.uk>>) escribió:
>
>     Juan Antonio García Moreno <jagarcia at emergya.com <mailto:jagarcia at emergya.com>> wrote:
>
>     > I relly have some hosts declarations, but I don't have put these in the post.
>
>     Ah yes, about that ... see below !
>
>     > subnet 10.53.0.0 netmask 255.255.0.0 {
>     >
>     >   default-lease-time 86400;
>     >   max-lease-time 172800;
>     >
>     >   option broadcast-address 10.53.255.255;
>     >   option routers 10.53.1.1;
>     >
>     >   # Unknown Clients Range.
>     >   pool {
>     >     deny members of "smartphones";
>     >     range 10.53.33.1 10.53.35.254;
>     >   }
>     >
>     >   # Smartphones Range.
>     >   pool {
>     >     allow members of "smartphones";
>     >     range 10.53.10.2 10.53.11.254;
>     >   }
>     >
>     >   host PC-01 {
>     >     hardware ethernet ff:ff:ff:ff:ff:01;
>     >     fixed-address 10.53.100.5;
>     >   }
>     >
>     >   host PC-02 {
>     >     hardware ethernet ff:ff:ff:ff:ff:02;
>     >     fixed-address 10.53.100.6;
>     >   }
>     >
>     > }
>
>     That is another common mistake. Host declarations are always global in scope even though you might think that putting them
>     inside a subnet declaration would tie them to that subnet. So even though declared inside one subnet, they will be "known"
>     in any subnet - which in itself can cause considerable confusion.
>     But what really makes life "interesting" (see https://en.wikipedia.org/wiki/May_you_live_in_interesting_times) is that
>     should a host be connected to a different network, it will inherit option values from the subnet where it is defined. Thus
>     you find yourself with a client that's been given an address by DHCP, but the gateway address it's been given is in a
>     completely different subnet !
>
>
>     > And too, howto fill a text file with the "vendor-class-identifier" of the smartphones and include in the DHCP Server
>     config to match the smartphones devices too.
>
>     It's a simple scripting exercise to take a text file containing one string per line, and build a config file snippet. You
>     can then use an include statement to incorporate that config snippet into the daemon config.
>
>     _______________________________________________
>     dhcp-users mailing list
>     dhcp-users at lists.isc.org <mailto:dhcp-users at lists.isc.org>
>     https://lists.isc.org/mailman/listinfo/dhcp-users
>
>
>
> -- 
> EMERGYA <http://www.emergya.com/>
> *Juan García*
> *Dto. de Soporte Interno*
> *EMERGYA INGENIERÍA*
> *m:* +34 954 517 577
> *p:* +34 954 517 577
> *e:*jagarcia at emergya.com <mailto:jagarcia at emergya.com>
> linkedin icon <https://www.linkedin.com/company/emergya> facebook icon <https://www.facebook.com/Emergya> twitter icon 
> <https://twitter.com/emergya>youtube icon <https://www.youtube.com/channel/UCU0ISPwk1pcOWwjpX63gN_A>
>
>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/dhcp-users/attachments/20190808/1d242c1e/attachment-0001.html>


More information about the dhcp-users mailing list