different ip address between clients restarts

Radoslav Pešek radoslav.pesek at stuba.sk
Mon Jul 10 09:43:49 UTC 2017


Hi, has anybody any ideas on this issue? If you need more info let me know.

Thanks, Rado.


On 06/29/2017 11:14 AM, Radoslav Pešek wrote:
> Hi and thanks for your reply, but this shouldn't cause the problem, or 
> maybe I don't understand what you mean. My clients get ips from the 
> same pool (which is the pool they should get it from), but they don't 
> get ip they previously had leased - and, according to the following, 
> dhcp server should grant this address 
> (https://www.ietf.org/rfc/rfc2131.txt):
>
> 4.3.1 DHCPDISCOVER message
>
>    When a server receives a DHCPDISCOVER message from a client, the
>    server chooses a network address for the requesting client.  If no
>    address is available, the server may choose to report the problem to
>    the system administrator. If an address is available, the new address
>    SHOULD be chosen as follows:
>
>       o The client's current address as recorded in the client's current
>         binding, ELSE
>
>       o The client's previous address as recorded in the client's (now
>         expired or released) binding, if that address is in the server's
>         pool of available addresses and not already allocated, ELSE
>
>       o The address requested in the 'Requested IP Address' option, if 
> that
>         address is valid and not already allocated, ELSE
>
>       o A new address allocated from the server's pool of available
>         addresses; the address is selected based on the subnet from which
>         the message was received (if 'giaddr' is 0) or on the address of
>         the relay agent that forwarded the message ('giaddr' when not 0).
>
>
> But I don't know how far isc dhcp implementation conforms to this rfc.
>
> Thanks again, Rado.
>
>
> On 06/29/2017 01:49 AM, Bill Shirley wrote:
>> It has been my experience that if a client does a DHCPREQUEST, the 
>> server will grant
>> the lease even if the Class and pool 'allow members' do not match. 
>> Only if there is an
>> explicit 'deny members' on the pool will it DHCPNAK.
>>
>> However, if a client does a DHCPDISCOVER the server will allocate 
>> only from pools that
>> meet the 'allow members' and 'deny members' requirements.
>>
>> Bill
>>
>>
>> On 6/28/2017 5:36 AM, Radoslav Pešek wrote:
>>> Hallo list, I have dhcp servers (Debian 8.5, version 4.3.1, failover 
>>> mode, ddns-update-style interim) and (at least) for certain clients 
>>> they don't keep ip address between clients' restarts.
>>>
>>> Its maybe related to another issue I posted few days ago - 
>>> https://lists.isc.org/pipermail/dhcp-users/2017-June/020652.html - 
>>> but the solution only helped for problem with weird hostname value 
>>> in dhcp replies, not for this issue as I hoped.
>>>
>>> So, it's in failover mode (interim) with clients getting ip 
>>> addresses from range. The pool shouldn't be exhausted as I see this 
>>> in logs:
>>>
>>> Jun 27 10:08:39 s3 dhcpd: balancing pool b8107778 
>>> poschodia_a_studenti  total 21  free 4  backup 5  lts 0 max-own (+/-)1
>>> Jun 27 10:08:39 s3 dhcpd: balanced pool b8107778 
>>> poschodia_a_studenti  total 21  free 4  backup 5  lts 0 max-misbal 1
>>>
>>> and when I restart test client several times within say few hours it 
>>> gets same ip address it had few restarts ago. It is even asking in 
>>> DHCP DISCOVER message for its current ip address but the server 
>>> decides to lease another one (no DHCP NAK message). The default and 
>>> max lease times for these clients are both set to 2592000.
>>>
>>> These are records in dhcpd.leases when I restart test client (those 
>>> log lines are perhaps my misconfiguration in dhcpd.conf or what, but 
>>> I had this issue even before I added logging so it's not related):
>>>
>>> lease XXX.XXX.XXX.232 {
>>>   starts 3 2017/06/28 07:29:45;
>>>   ends 3 2017/06/28 08:28:38;
>>>   tstp 3 2017/06/28 08:28:38;
>>>   tsfp 6 2017/08/12 07:29:45;
>>>   cltt 3 2017/06/28 07:29:45;
>>>   binding state released;
>>>   next binding state free;
>>>   hardware ethernet aa:bb:cc:dd:ee:ff;
>>>   client-hostname "vm102";
>>> }
>>> lease XXX.XXX.XXX.232 {
>>>   starts 3 2017/06/28 07:29:45;
>>>   ends 3 2017/06/28 08:28:38;
>>>   tstp 3 2017/06/28 08:28:38;
>>>   tsfp 3 2017/06/28 08:28:38;
>>>   atsfp 3 2017/06/28 08:28:38;
>>>   cltt 3 2017/06/28 07:29:45;
>>>   binding state free;
>>>   hardware ethernet aa:bb:cc:dd:ee:ff;
>>> }
>>> lease XXX.XXX.XXX.231 {
>>>   starts 3 2017/06/28 08:29:03;
>>>   ends 3 2017/06/28 08:59:03;
>>>   tstp 5 2017/07/28 08:44:03;
>>>   tsfp 3 2017/06/28 08:08:55;
>>>   cltt 3 2017/06/28 08:29:03;
>>>   binding state active;
>>>   next binding state expired;
>>>   hardware ethernet aa:bb:cc:dd:ee:ff;
>>>   set mac_6 = "02";
>>>   client-hostname "vm102";
>>>   on release {
>>>     log (error, "=============[ START COMMIT ]================");
>>>     log (error, "host-decl-name: ");
>>>     log (error, host-decl-name);
>>>     log (error, "option host-name: ");
>>>     log (error,
>>>         option host-name);
>>>     log (error, "config-option server.ddns-hostname: ");
>>>     log (error,
>>>         option host-name);
>>>     log (error, "config-option server.ddns-hostname: ");
>>>     log (error,
>>>         config-option server.ddns-hostname);
>>>     log (error, "============[ END COMMIT ]==================");
>>>   }
>>> }
>>> lease XXX.XXX.XXX.231 {
>>>   starts 3 2017/06/28 08:29:03;
>>>   ends 3 2017/06/28 08:59:03;
>>>   tstp 5 2017/07/28 08:44:03;
>>>   tsfp 3 2017/06/28 08:08:55;
>>>   cltt 3 2017/06/28 08:29:03;
>>>   binding state active;
>>>   next binding state expired;
>>>   hardware ethernet aa:bb:cc:dd:ee:ff;
>>>   set ddns-txt = "000b7fa68b3f8b2e4967e49ff0faef4cf6";
>>>   set ddns-fwd-name = "vm102.some.domain.";
>>>   set mac_6 = "02";
>>>   client-hostname "vm102";
>>>   on release {
>>>     log (error, "=============[ START COMMIT ]================");
>>>     log (error, "host-decl-name: ");
>>>     log (error, host-decl-name);
>>>     log (error, "option host-name: ");
>>>     log (error,
>>>         option host-name);
>>>     log (error, "config-option server.ddns-hostname: ");
>>>     log (error,
>>>         config-option server.ddns-hostname);
>>>     log (error, "============[ END COMMIT ]==================");
>>>   }
>>> }
>>> lease XXX.XXX.XXX.231 {
>>>   starts 3 2017/06/28 08:29:03;
>>>   ends 3 2017/06/28 08:59:03;
>>>   tstp 5 2017/07/28 08:44:03;
>>>   tsfp 3 2017/06/28 08:08:55;
>>>   cltt 3 2017/06/28 08:29:03;
>>>   binding state active;
>>>   next binding state expired;
>>>   binding state active;
>>>   next binding state expired;
>>>   hardware ethernet aa:bb:cc:dd:ee:ff;
>>>   set ddns-rev-name = "231.XXX.XXX.XXX.in-addr.arpa.";
>>>   set ddns-txt = "000b7fa68b3f8b2e4967e49ff0faef4cf6";
>>>   set ddns-fwd-name = "vm102.some.domain.";
>>>   set mac_6 = "02";
>>>   client-hostname "vm102";
>>>   on release {
>>>     log (error, "=============[ START COMMIT ]================");
>>>     log (error, "host-decl-name: ");
>>>     log (error, host-decl-name);
>>>     log (error, "option host-name: ");
>>>     log (error,
>>>         option host-name);
>>>     log (error, "config-option server.ddns-hostname: ");
>>>     log (error,
>>>         config-option server.ddns-hostname);
>>>     log (error, "============[ END COMMIT ]==================");
>>>   }
>>> }
>>> lease XXX.XXX.XXX.231 {
>>>   starts 3 2017/06/28 08:29:03;
>>>   ends 3 2017/06/28 08:59:03;
>>>   tstp 5 2017/07/28 08:44:03;
>>>   tsfp 5 2017/07/28 08:44:03;
>>>   atsfp 5 2017/07/28 08:44:03;
>>>   cltt 3 2017/06/28 08:29:03;
>>>   binding state active;
>>>   next binding state expired;
>>>   hardware ethernet aa:bb:cc:dd:ee:ff;
>>>   set ddns-rev-name = "231.XXX.XXX.XXX.in-addr.arpa.";
>>>   set ddns-txt = "000b7fa68b3f8b2e4967e49ff0faef4cf6";
>>>   set ddns-fwd-name = "vm102.some.domain.";
>>>   set mac_6 = "02";
>>>   client-hostname "vm102";
>>>   on release {
>>>     log (error, "=============[ START COMMIT ]================");
>>>     log (error, "host-decl-name: ");
>>>     log (error, host-decl-name);
>>>     log (error, "option host-name: ");
>>>     log (error,
>>>         option host-name);
>>>     log (error, "config-option server.ddns-hostname: ");
>>>     log (error,
>>>         config-option server.ddns-hostname);
>>>     log (error, "============[ END COMMIT ]==================");
>>>   }
>>> }
>>>
>>> Do you see anything wrong there?
>>>
>>> Thanks for any insights, Rado.
>>>
>>>
>>> _______________________________________________
>>> 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
>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users



More information about the dhcp-users mailing list