different ip address between clients restarts

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

different ip address between clients restarts

Radoslav Pešek
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
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: different ip address between clients restarts

Bill Shirley-2
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
> [hidden email]
> https://lists.isc.org/mailman/listinfo/dhcp-users

_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: different ip address between clients restarts

Radoslav Pešek
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
>> [hidden email]
>> https://lists.isc.org/mailman/listinfo/dhcp-users
>
> _______________________________________________
> dhcp-users mailing list
> [hidden email]
> https://lists.isc.org/mailman/listinfo/dhcp-users

_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: different ip address between clients restarts

Radoslav Pešek
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
>>> [hidden email]
>>> https://lists.isc.org/mailman/listinfo/dhcp-users
>>
>> _______________________________________________
>> dhcp-users mailing list
>> [hidden email]
>> https://lists.isc.org/mailman/listinfo/dhcp-users
>
> _______________________________________________
> dhcp-users mailing list
> [hidden email]
> https://lists.isc.org/mailman/listinfo/dhcp-users

_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: different ip address between clients restarts

perl-list
It might help to send some logs from each time the client got an address as the lease file information isn't really useful in this case.  A snippit of your config showing the relevant subnet(s) might be useful also.


From: "Radoslav Pešek" <[hidden email]>
To: [hidden email]
Sent: Monday, July 10, 2017 5:43:49 AM
Subject: Re: different ip address between clients restarts
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
>>> [hidden email]
>>> https://lists.isc.org/mailman/listinfo/dhcp-users
>>
>> _______________________________________________
>> dhcp-users mailing list
>> [hidden email]
>> https://lists.isc.org/mailman/listinfo/dhcp-users
>
> _______________________________________________
> dhcp-users mailing list
> [hidden email]
> https://lists.isc.org/mailman/listinfo/dhcp-users

_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users


_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users