dhclient -1 exits 0 when no lease found

Bug #1633619 reported by Scott Moser
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
isc-dhcp (Ubuntu)
Confirmed
Medium
Stéphane Graber

Bug Description

I've tried this in containers of xenial, trusty and yakkety.

i've created a lxc network that does not have dhcp4.

See https://github.com/lxc/lxd/issues/2481 for some info on how to do that.

Then, I launch an instance:

$ lxc launch ubuntu-daily:xenial --profile=sm-test-profile2 x1
% killall dhclient
% dhclient -r eth0
% dhclient -1 -v eth0
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:16:3e:b8:e6:70
Sending on LPF/eth0/00:16:3e:b8:e6:70
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0xc08cb53c)

DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4 (xid=0xc08cb53c)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 9 (xid=0xc08cb53c)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 19 (xid=0xc08cb53c)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 (xid=0xc08cb53c)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 12 (xid=0xc08cb53c)
..
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

% echo $?
0
% ps axw | grep dhcl
  356 ? Ss 0:00 dhclient -1 -v eth0

the man page says of the '-1' option:
       -1 Try to get a lease once. On failure exit with code 2. In
              DHCPv6 this sets the maximum duration of the initial exchange to
              timeout (from dhclient.conf with a default of sixty seconds).

ProblemType: Bug
DistroRelease: Ubuntu 16.10
Package: isc-dhcp-client 4.3.3-5ubuntu15
ProcVersionSignature: Ubuntu 4.8.0-22.24-generic 4.8.0
Uname: Linux 4.8.0-22-generic x86_64
NonfreeKernelModules: zfs zunicode zcommon znvpair zavl
ApportVersion: 2.20.3-0ubuntu8
Architecture: amd64
CurrentDesktop: Unity
Date: Fri Oct 14 16:59:45 2016
DhclientLeases:

EcryptfsInUse: Yes
InstallationDate: Installed on 2015-07-23 (449 days ago)
InstallationMedia: Ubuntu 15.10 "Wily Werewolf" - Alpha amd64 (20150722.1)
SourcePackage: isc-dhcp
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Scott Moser (smoser) wrote :
description: updated
Revision history for this message
Scott Moser (smoser) wrote :

for reference, you can make it fail faster like this in /etc/dhcp/dhclient.conf

timeout 3;
retry 3;
#reboot 10;
select-timeout 5;
initial-interval 1;

Scott Moser (smoser)
Changed in isc-dhcp (Ubuntu):
importance: Undecided → Medium
status: New → Confirmed
Revision history for this message
Steve Langasek (vorlon) wrote :

Here is the behavior on either 14.04 or 16.04:

# dhclient -1 -v virbr0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/52:54:00:05:e1:f3
Sending on LPF/virbr0/52:54:00:05:e1:f3
Sending on Socket/fallback
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 3 (xid=0xe7ef8212)
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 1 (xid=0xe7ef8212)
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
# ps awxfu|grep dh.*virbr
root 16796 0.0 0.0 8868 792 pts/36 S+ 05:31 0:00 | | \_ grep dh.*virbr
root 16772 0.0 0.0 10220 4368 ? Ss 05:30 0:00 \_ dhclient -1 -v virbr0
#

Not only does it not return the documented exit code, it also backgrounds itself and continues polling. So the -1 option seems to be completely broken.

I've looked at the source package, and this is due to debian/patches/onetry_retry_after_initial_success. The addition of this patch isn't documented in the changelog, there are no referenced bugs, and the patch description doesn't make sense to me; assigning to stgraber, who is listed as the author of this patch.

Changed in isc-dhcp (Ubuntu):
assignee: nobody → Stéphane Graber (stgraber)
Revision history for this message
Steve Langasek (vorlon) wrote :

According to the bzr history in lp:ubuntu/wily/isc-dhcp, this patch is related to bug #974284:

committer: Stéphane Graber <email address hidden>
branch nick: isc-dhcp
timestamp: Wed 2012-09-12 17:30:23 -0400
message:
  Set onetry = 0 early enough to actually work. (LP: #974284)

And Scott, you filed that bug; it seems the current behavior is exactly what you requested?

Revision history for this message
Scott Moser (smoser) wrote :

Steve,
Good sleuthing.

Bug 974284 has good info in it.

This is definitely tricky.
I think we have the following cases to consider and may be at odds.
a.) dhclient -1 should exit failure as documented.
b.) we need a reliable point in boot where all static networking is configured.
c.) Ill timed reboot (or recovery from lab power failure)
    a system is configured for dhcp is rebooted while the dhcp server is unavailable.
    It seems better for this system to keep trying to get an IP address as otherwise
    the system will be offline forever.
d.) Any dhcp server downtime and failed lease renewal.
    a system is configured for dhcp and initially succeeds, but while re-trying a lease
    the dhcp server is down for scheduled maintenance. A failure to release here
    results in system offline if dhclient takes down the interface.
    This is mentioned at https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/838968/comments/11

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.