Selecting fixed or dynamic address based on vendor-class-identifier
Sten Carlsen
stenc at s-carlsen.dk
Tue Oct 22 00:44:59 UTC 2013
On 22/10/13 02.43, Sten Carlsen wrote:
>
> On 22/10/13 02.32, Glenn Satchell wrote:
>> Hi Anders
>>
>> Without the host statement, ie assuming you were using a dynamic address
>> in both subnets this would be easy. Allow pxeclient class in one pool and
>> deny it in the other.
> You would also need to allow/deny known-clients, allow members of ...
> does not deny known clients.
I was thinking if there was still a host statement.
>> class "pxeclient" {
>> match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
>> }
>>
>> shared-network all {
>> subnet 192.168.254.0 netmask 255.255.255.0 {
>> pool {
>> allow members of "pxeclient";
>> range 192.168.254.100 192.168.254.109;
>> }
>> }
>>
>> subnet 192.168.255.0 netmask 255.255.255.0 {
>> pool {
>> deny members of "pxeclient";
>> range 192.168.255.100 192.168.255.109;
>> }
>> }
>> }
>>
>> With the host statement, anything in there applies whether we are
>> pxe-booting or normal booting, so need to be careful how we do things.
>> That's why you can't put ignore-booting in the host statement as it will
>> apply in both cases. I'm not entirely sure this will work, but it might
>> give you an idea.
>>
>> host boottest {
>> hardware ethernet 02:13:10:07:11:58;
>> if substring (option vendor-class-identifier, 0, 9) != "PXEClient" {
>> fixed-address 192.168.255.12;
>> }
>> }
>>
>> fixed-address has higher preference than dynamic address.
>>
>> Not sure if you can do this, it's only a siggestion, but maybe just let
>> clients pxe-boot using their fixed ip-address? Add the details for boot
>> server and filename to the pxeclient class. It would make the dhcpd.conf
>> much simpler.
>>
>> regards,
>> -glenn
>>
>> On Tue, October 22, 2013 2:24 am, Sten Carlsen wrote:
>>> My take on this would be to test this:
>>>
>>> class "pxeclient" {
>>> match if substring (option vendor-class-identifier, 0, 9) =
>>> "PXEClient";
>>> }
>>>
>>> host boottest {
>>> hardware ethernet 02:13:10:07:11:58;
>>> fixed-address 192.168.255.12;
>>> }
>>>
>>>
>>> shared-network all{
>>> subnet 192.168.254.0 netmask 255.255.255.0 {
>>> pool {
>>> allow members of "pxeclient";
>>> range 192.168.254.100 192.168.254.109;
>>> }
>>> }
>>>
>>> subnet 192.168.255.0 netmask 255.255.255.0 {
>>> deny members of "pxeclient"; }
>>> }
>>>
>>> The uncertain point here is that in a shared network there is really
>>> nothing to tell which subnet the host belongs to, no DHCP-Relays etc.
>>> This should work if a class has higher preference than a host statement.
>>>
>>> I don't know the answer to that, I would have to test it.
>>>
>>> On 21/10/13 17.06, Anders Blomdell wrote:
>>>> I would like the ISC dhcpd server to hand out either a dynamic ip
>>>> address or
>>>> a fixed address based on the vendor-class-identifier (I want a dynamic
>>>> address
>>>> from one subnet during pxeboots and a [possibly] fixed address from
>>>> another
>>>> subnet otherwise). I have been able to do it by running two instances
>>>> of the
>>>> dhcp server on the interface, but not by using shared-network.
>>>>
>>>> The working configuration consists of /tmp/254.conf:
>>>>
>>>> class "pxeclient" {
>>>> match if substring (option vendor-class-identifier, 0, 9) =
>>>> "PXEClient";
>>>> }
>>>>
>>>> subnet 192.168.254.0 netmask 255.255.255.0 {
>>>> pool {
>>>> allow members of "pxeclient";
>>>> range 192.168.254.100 192.168.254.109;
>>>> }
>>>> }
>>>>
>>>> and /tmp/255.conf:
>>>>
>>>> host boottest {
>>>> hardware ethernet 02:13:10:07:11:58;
>>>> fixed-address 192.168.255.12;
>>>> if substring(option vendor-class-identifier, 0, 9) = "PXEClient" {
>>>> ignore booting;
>>>> }
>>>> }
>>>> subnet 192.168.255.0 netmask 255.255.255.0 {
>>>> }
>>>>
>>>> when running both of them with:
>>>> /usr/sbin/dhcpd -d -cf /tmp/254.conf -lf /tmp/254.lease --no-pid
>>>> /usr/sbin/dhcpd -d -cf /tmp/255.conf -lf /tmp/255.lease --no-pid
>>>>
>>>> I get the following expected result:
>>>>
>>>> # PXE-booting
>>>> DHCPDISCOVER from 02:13:10:07:11:58 via eth0
>>>> DHCPOFFER on 192.168.254.100 to 02:13:10:07:11:58 via eth0
>>>> # Ordinary boot
>>>> DHCPDISCOVER from 02:13:10:07:11:58 via eth0
>>>> DHCPOFFER on 192.168.255.12 to 02:13:10:07:11:58 via eth0
>>>>
>>>> But I'm not able to achieve it with just one instance of dhcpd,
>>>> the reason seems to be that the 'ignore booting' will be active
>>>> for both subnets when the machine is PXE-booting and hence it will
>>>> not get an address from the pool.
>>>>
>>>> Anybody that has a good idea on how to solve this?
>>>>
>>>> Regards
>>>>
>>>> Anders
>>>>
>>> --
>>> Best regards
>>>
>>> Sten Carlsen
>>>
>>> No improvements come from shouting:
>>>
>>> "MALE BOVINE MANURE!!!"
>>>
>>> _______________________________________________
>>> dhcp-users mailing list
>>> dhcp-users at lists.isc.org
>>> https://lists.isc.org/mailman/listinfo/dhcp-users
>> _______________________________________________
>> dhcp-users mailing list
>> dhcp-users at lists.isc.org
>> https://lists.isc.org/mailman/listinfo/dhcp-users
>
> --
> Best regards
>
> Sten Carlsen
>
> No improvements come from shouting:
>
> "MALE BOVINE MANURE!!!"
>
>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users
--
Best regards
Sten Carlsen
No improvements come from shouting:
"MALE BOVINE MANURE!!!"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/dhcp-users/attachments/20131022/41d38c86/attachment-0001.html>
More information about the dhcp-users
mailing list