dhcp option 121 & 249

Bug #1937110 reported by sascha arthur
26
This bug affects 4 people
Affects Status Importance Assigned to Milestone
subiquity
New
Undecided
Unassigned
isc-dhcp (Ubuntu)
Fix Released
High
Steve Langasek
Focal
Fix Released
Medium
Mauricio Faria de Oliveira
Jammy
Fix Released
Medium
Steve Langasek

Bug Description

[Impact]

 * DHCP classless static routes aren't applied
   by dhclient at the initramfs (e.g., ip=dhcp).

 * This happens as rfc3442-classless-routes is
   not copied to /etc/dhcp/dhclient-exit-hooks.d/
   in the initramfs.

 * On Jammy, if such DHCP option(s) are present
   in the DHCP server response, the DHCP client
   ignores the 'routers' option from the server,
   thus leaving no routes configured.

 * On Focal, the older code still adds 'routers',
   which is slightly better, but still does not
   add the classless static routes.

[Test Plan]

 * Use LXD container/VMs for DHCP server/client,
   configure the DHCP server with option 121,
   and some sample classless static routes.
   (see comments #12/jammy and #13/focal).

[Regression Potential]

 * Acquisition of DHCP leases/routes at initramfs
   with ip=dhcp.

 * The code/script is not new, and is exercised
   normally during on rootfs (ie, post-initramfs)
   when dhclient is run.

 * It's also been in the initramfs in Kinetic
   already, since on Aug 2022; giving it tests.

[Original Description]
Hello,

I'm running into issues with subiquity on a cloud provider. The cloud provider is using an on-link L3 gateway.

His DHCP response looks like this:

OPTION: 53 ( 1) DHCP message type 5 (DHCPACK)
OPTION: 54 ( 4) Server identifier 172.31.1.1
OPTION: 51 ( 4) IP address leasetime 86400 (24h)
OPTION: 1 ( 4) Subnet mask 255.255.255.255
OPTION: 3 ( 4) Routers 172.31.1.1
OPTION: 6 ( 12) DNS server ....
OPTION: 121 ( 14) Classless Static Route 20ac1f0101000000 .......
         0000ac1f0101 ......
OPTION: 249 ( 14) MSFT - Classless route 20ac1f0101000000 .......
         0000ac1f0101 ......

Im booting the subiquity process with an patched ipxe (https://github.com/ipxe/ipxe/pull/104) like this:

#!ipxe
kernel .../vmlinuz initrd=initrd root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=https://cdimage.ubuntu.com/ubuntu-server/focal/daily-live/current/focal-live-server-amd64.iso autoinstall ds=nocloud-net;s=.../...-ad-78/ cloud-config-url=/dev/null
initrd .../initrd
boot

initrd/vmlinuz is extracted right out of focal-live-server-amd64.iso

Sadly subiquity is stuck with a broken network (because of missing dhcp option 121/249 support). It happens when its running the /init from the kernel right after kernel is booted, i guess even before the subiquity is started(?).

After further debugging, it looks like the provided kernel 5.4.80 #90 Ubuntu, is using busybox 1.30.1-4ubuntu~6.3 which includes isc-dhclient-4.4.1 which is lacking the given options.

Would be awesome if this could be fixed.. maybe just a simple busybox compile option?

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in busybox (Ubuntu):
status: New → Confirmed
Revision history for this message
Mathew Binkley (mathew-binkley) wrote :

I just wanted to say that we are also hitting the same problem (lack of dhcp option 121/249). So Subiquity connects to the network, but can't get a default route and thus fails.

Couple this with the removal of debian-installer support from Ubuntu, and we can no longer install Ubuntu Jammy LTS. This is a showstopper bug for us.

Dan Bungert (dbungert)
tags: added: rls-kk-incoming
Revision history for this message
sascha arthur (sarthur) wrote (last edit ):

Funny thing is that the rfc 3442 is from 2002.

Thats what makes me wonder of the missing support till today...

My workarround till today is to unzip the iso -> kernel+initrd, patch the initrd, and use the patched initrd.

I would not recommend anyone to do it like that, only if theres no other options..

Revision history for this message
Matt Heller (matthew-f-heller) wrote :

The Ubuntu Jammy installer initrd is missing the /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes hook for dhclient. The /sbin/dhclient-script included in the initrd assumes the hook is present and if the "rfc3442_classless_static_routes" DHCP is sent by the DHCP server it ignores the the "routers" DHCP option and defers to the rfc3442 hook to setup the routing ...except that hook is missing so ultimately no routing is configured if the rfc3442 option 121 ("classless-static-routes" w/ ISC dhcpd) exists in the DHCP response. This means networking doesn't function and we cannot install Ubuntu.

My colleague tested modifying the initrd by adding the /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes file and reports that works.

--Matt

# from the initrd rescue shell
(initramfs) ls /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes
ls: cannot access /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes: No such file or directory

# showing that the "routers" option is ignored if rfc3442 info is sent
(initramfs) grep -C1 classless /sbin/dhclient-script

            # if we have $new_rfc3442_classless_static_routes then we have to
            # ignore $new_routers entirely
            if [ ! "$new_rfc3442_classless_static_routes" ]; then
                    # set if_metric if IF_METRIC is set or there's more than one router
--
        if [ -z "$new_routers" ] || ping -q -c 1 "${new_routers%% *}"; then
            # if we have $new_rfc3442_classless_static_routes then we have to
            # ignore $new_routers entirely
            if [ ! "$new_rfc3442_classless_static_routes" ]; then
                    if [ -n "$alias_ip_address" ] &&

Revision history for this message
Matt Heller (matthew-f-heller) wrote :

I'll also add that installers for past LTS Ubuntu releases do work in our environment.

I opened up the Focal initrd.gz we use for PXE based installs (I think it was from the mini.iso which I guess is now classified as a "Legacy Image", http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso). What I found is that it also is missing /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes HOWEVER it has an older /sbin/dhclient-script that does NOT have the code that ignores "routers" option values when the RFC 3442 option 121 is present in the response. As a result it does configure the default route based on the DHCP "routers" value but ignores the RFC 3442 info. In our environment this means the routing is sub-optimal but networking still largely functions and thus Focal installation "works".

The original poster reports trouble with Focal installer I don't know if the difference is because they use a different Focal .iso or because perhaps they strongly require the RFC 3442 routes for networking to function in their environment.

My recollection regarding the changes in the newer dhclient-script is that it that ignoring the "routers" option if the client supports and uses the RFC 3442 routes option is the behavior specified in RFC 3442, that the behavior of the old version to sort-of merge the "routers" option and the RFC 3442 option 121 together was non-compliant. Though as it turns out if the "rfc3442-classless-routes" hook file is accidentally missing then that makes the behavior of the newer, more correct dhclient-script version worse.

--Matt

tags: added: fr-2416
Changed in busybox (Ubuntu):
importance: Undecided → High
Changed in busybox (Ubuntu Jammy):
importance: Undecided → High
status: New → Confirmed
milestone: none → ubuntu-22.04.1
tags: removed: rls-kk-incoming
Steve Langasek (vorlon)
affects: busybox (Ubuntu Jammy) → isc-dhcp (Ubuntu Jammy)
Revision history for this message
Steve Langasek (vorlon) wrote :

The change is trivial and I'm going to upload it to the jammy SRU queue, but we need a test case in order for this SRU to be accepted. If someone affected by this bug can please detail how to reproduce the issue *without* having to first generate a new installer image, that would be useful.

It's possible to test the network in the regular initramfs by booting with 'ip=dhcp break=bottom' - but need a dhcp server config to go with it that will reproduce the problem.

Changed in isc-dhcp (Ubuntu Jammy):
status: Confirmed → Incomplete
Changed in isc-dhcp (Ubuntu):
assignee: nobody → Steve Langasek (vorlon)
Changed in isc-dhcp (Ubuntu Jammy):
assignee: nobody → Steve Langasek (vorlon)
Changed in isc-dhcp (Ubuntu):
status: Confirmed → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package isc-dhcp - 4.4.1-2.3ubuntu6

---------------
isc-dhcp (4.4.1-2.3ubuntu6) kinetic; urgency=medium

  * Include /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes in the
    initramfs. LP: #1937110.

 -- Steve Langasek <email address hidden> Fri, 05 Aug 2022 23:58:14 +0000

Changed in isc-dhcp (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Steve Langasek (vorlon) wrote : Proposed package upload rejected

An upload of isc-dhcp to jammy-proposed has been rejected from the upload queue for the following reason: "reuploading with the correct fix from kinetic".

Revision history for this message
Robie Basak (racb) wrote :

Progress to fix this in Jammy is still blocked on a test plan.

tags: added: foundations-todo
Changed in isc-dhcp (Ubuntu Jammy):
milestone: ubuntu-22.04.1 → none
tags: removed: fr-2416
Revision history for this message
Timo Aaltonen (tjaalton) wrote :

echoing that the test plan is still missing

tags: removed: foundations-todo
Revision history for this message
Steve Langasek (vorlon) wrote :

sascha, are you able to provide information about a reproducer environment for this? I'd like to see this fixed but we need to have a way to make sure the change actually fixes things.

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :
Download full text (7.2 KiB)

Reproducer with DHCP server/client on LXD. [Jammy]

Bridge
---

 sudo ip link add jammybr type bridge
 sudo ip link set jammybr up

LXD container for DHCP server with classless static routes option
---

 lxc init ubuntu:jammy jammy-dhcpd
 lxc config device add jammy-dhcpd eth0 nic nictype=bridged parent=jammybr
 lxc config device add jammy-dhcpd eth1 nic nictype=bridged parent=lxdbr0

 lxc start jammy-dhcpd
 lxc shell jammy-dhcpd

 dhclient eth1

...

 ip addr add 10.11.12.13/24 dev eth0

 apt install -y isc-dhcp-server

 echo 'INTERFACESv4="eth0"' >>/etc/default/isc-dhcp-server

 cat <<EOF >>/etc/dhcp/dhcpd.conf
 option rfc3442-classless-static-routes code 121 = array of integer 8;

 subnet 10.11.12.0 netmask 255.255.255.0 {

   range 10.11.12.100 10.11.12.110;

   option routers 10.11.12.13;

   option rfc3442-classless-static-routes
     0, 10, 11, 12, 200,
     8, 1, 10, 11, 12, 208,
     16, 2, 1, 10, 11, 12, 216,
     24, 3, 2, 1, 10, 11, 12, 224,
     32, 4, 3, 2, 1, 10, 11, 12, 232;
 }
 EOF

 systemctl restart isc-dhcp-server.service

LXD VM for DHCP client
---

 lxc init ubuntu:jammy jammy-dhclient --vm
 lxc config device add jammy-dhclient eth0 nic nictype=bridged parent=jammybr
 # no regular lxdbr0 bridge / internet access.

 lxc start jammy-dhclient
 lxc shell jammy-dhclient

 # ip link
 ...
 2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
     link/ether 00:16:3e:e8:3e:4d brd ff:ff:ff:ff:ff:ff

 # ip addr
 ...
 2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
     link/ether 00:16:3e:e8:3e:4d brd ff:ff:ff:ff:ff:ff
     inet 10.11.12.102/24 metric 100 brd 10.11.12.255 scope global dynamic enp5s0
        valid_lft 551sec preferred_lft 551sec
     inet6 fe80::216:3eff:fee8:3e4d/64 scope link
        valid_lft forever preferred_lft forever

 # ip route
 default via 10.11.12.200 dev enp5s0 proto dhcp src 10.11.12.102 metric 100
 1.0.0.0/8 via 10.11.12.208 dev enp5s0 proto dhcp src 10.11.12.102 metric 100
 2.1.0.0/16 via 10.11.12.216 dev enp5s0 proto dhcp src 10.11.12.102 metric 100
 3.2.1.0/24 via 10.11.12.224 dev enp5s0 proto dhcp src 10.11.12.102 metric 100
 4.3.2.1 via 10.11.12.232 dev enp5s0 proto dhcp src 10.11.12.102 metric 100
 10.11.12.0/24 dev enp5s0 proto kernel scope link src 10.11.12.102 metric 100
 10.11.12.200 dev enp5s0 proto dhcp scope link src 10.11.12.102 metric 100
 10.11.12.208 dev enp5s0 proto dhcp scope link src 10.11.12.102 metric 100
 10.11.12.216 dev enp5s0 proto dhcp scope link src 10.11.12.102 metric 100
 10.11.12.224 dev enp5s0 proto dhcp scope link src 10.11.12.102 metric 100
 10.11.12.232 dev enp5s0 proto dhcp scope link src 10.11.12.102 metric 100

Ok, all good from booted system's perspective.

Let's check at initramfs time, manually.

The classless routes aren't added if you run dhclient at the current version.

 cat <<EOF >/etc/default/grub.d/99-grub-initrd.cfg
 GRUB_FORCE_PARTUUID=
 GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT console=ttyS0 break=bottom"
 EOF

 update-grub && poweroff

 lxc start --console jammy-dhclient

 (initramfs) ip addr
 1: l...

Read more...

description: updated
Changed in isc-dhcp (Ubuntu Focal):
status: New → In Progress
importance: Undecided → Medium
assignee: nobody → Mauricio Faria de Oliveira (mfo)
Changed in isc-dhcp (Ubuntu Jammy):
status: Incomplete → In Progress
importance: High → Medium
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :
Download full text (7.3 KiB)

Reproducer with DHCP server/client on LXD. [Focal]

Bridge
---

 sudo ip link add focalbr type bridge
 sudo ip link set focalbr up

LXD container for DHCP server with classless static routes option
---

 lxc init ubuntu:focal focal-dhcpd
 lxc config device add focal-dhcpd eth0 nic nictype=bridged parent=focalbr
 lxc config device add focal-dhcpd eth1 nic nictype=bridged parent=lxdbr0

 lxc start focal-dhcpd
 lxc shell focal-dhcpd

 dhclient eth1

...

 ip addr add 10.11.12.13/24 dev eth0

 apt install -y isc-dhcp-server

 echo 'INTERFACESv4="eth0"' >>/etc/default/isc-dhcp-server

 cat <<EOF >>/etc/dhcp/dhcpd.conf
 option rfc3442-classless-static-routes code 121 = array of integer 8;

 subnet 10.11.12.0 netmask 255.255.255.0 {

   range 10.11.12.100 10.11.12.110;

   option routers 10.11.12.13;

   option rfc3442-classless-static-routes
     0, 10, 11, 12, 200,
     8, 1, 10, 11, 12, 208,
     16, 2, 1, 10, 11, 12, 216,
     24, 3, 2, 1, 10, 11, 12, 224,
     32, 4, 3, 2, 1, 10, 11, 12, 232;
 }
 EOF

 systemctl restart isc-dhcp-server.service

LXD VM for DHCP client
---

 lxc init ubuntu:focal focal-dhclient --vm
 lxc config device add focal-dhclient eth0 nic nictype=bridged parent=focalbr
 # no regular lxdbr0 bridge / internet access.

 lxc start focal-dhclient
 lxc shell focal-dhclient

 # ip link
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
     link/ether 00:16:3e:36:6b:c8 brd ff:ff:ff:ff:ff:ff

 # ip addr
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
 2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
     link/ether 00:16:3e:36:6b:c8 brd ff:ff:ff:ff:ff:ff
     inet 10.11.12.101/24 brd 10.11.12.255 scope global dynamic enp5s0
        valid_lft 582sec preferred_lft 582sec
     inet6 fe80::216:3eff:fe36:6bc8/64 scope link
        valid_lft forever preferred_lft forever

 # ip route
 default via 10.11.12.200 dev enp5s0 proto dhcp src 10.11.12.101 metric 100
 1.0.0.0/8 via 10.11.12.208 dev enp5s0 proto dhcp src 10.11.12.101 metric 100
 2.1.0.0/16 via 10.11.12.216 dev enp5s0 proto dhcp src 10.11.12.101 metric 100
 3.2.1.0/24 via 10.11.12.224 dev enp5s0 proto dhcp src 10.11.12.101 metric 100
 4.3.2.1 via 10.11.12.232 dev enp5s0 proto dhcp src 10.11.12.101 metric 100
 10.11.12.0/24 dev enp5s0 proto kernel scope link src 10.11.12.101

Ok, all good from booted system's perspective.

Let's check at initramfs time, manually.

The classless routes aren't added if you run dhclient at the current version.

 cat <<EOF >/etc/default/grub.d/99-grub-initrd.cfg
 GRUB_FORCE_PARTUUID=
 GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT console=ttyS0 break=bottom"
 EOF

 update-grub && p...

Read more...

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Uploaded to Jammy/Focal.

Revision history for this message
sascha arthur (sarthur) wrote :

Thanks for updating the version.

Lately we just wasted 4 workdays pitfalling again over the issue, without remembering it.

We lately tried if its fixed.

Sadly its still not fixed in

http://cdimage.ubuntu.com/cdimage/ubuntu-server/jammy/daily-live/current/jammy-live-server-amd64.iso

with sha

f2a1fca61a38d71b7f9d0aaebcd534710f6ef543366d203ada5cf676a4fb4219

Still we can confirm, that the default route is missing.

DHCP works perfectly fine, but the default route is missing if one of those options is provided by isc-dhcp:

option rfc3442-classless-static-routes 0,10,141,255,254;
option ms-classless-static-routes 0,10,141,255,254;

sadly it seems the dhcp-client is even internally crashing, without changing the return code / putting an error message on the console.

removing both of the dhcp options, let the dhcp install the default route again.

Revision history for this message
Steve Langasek (vorlon) wrote :

There is no reason to expect this to be fixed in the daily jammy image.

Progress on fixing this was blocked for months for lack of a test case.

A prospective fix has been uploaded to the queue. Daily server images won't include the fix until it has been reviewed by the SRU team, accepted into the -proposed pocket, tested, and promoted to the -updates pocket.

Revision history for this message
Łukasz Zemczak (sil2100) wrote : Please test proposed package

Hello sascha, or anyone else affected,

Accepted isc-dhcp into jammy-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/isc-dhcp/4.4.1-2.3ubuntu2.4 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-jammy to verification-done-jammy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-jammy. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in isc-dhcp (Ubuntu Jammy):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-jammy
Revision history for this message
Łukasz Zemczak (sil2100) wrote :

Hello sascha, or anyone else affected,

Accepted isc-dhcp into focal-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/isc-dhcp/4.4.1-2.1ubuntu5.20.04.5 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-focal to verification-done-focal. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-focal. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in isc-dhcp (Ubuntu Focal):
status: In Progress → Fix Committed
tags: added: verification-needed-focal
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Verification done on jammy
(full steps on comment #12)

$ lxc shell jammy-dhcpd

# add-apt-repository -yp proposed

# apt policy isc-dhcp-client
isc-dhcp-client:
  Installed: 4.4.1-2.3ubuntu2.3
  Candidate: 4.4.1-2.3ubuntu2.4
  Version table:
     4.4.1-2.3ubuntu2.4 500
        500 http://archive.ubuntu.com/ubuntu jammy-proposed/main amd64 Packages
...

# apt download isc-dhcp-client
# python3 -m http.server
...

$ lxc shell jammy-dhclient

# wget 10.11.12.13:8000/isc-dhcp-client_4.4.1-2.3ubuntu2.4_amd64.deb
# dpkg -i isc-dhcp-client_4.4.1-2.3ubuntu2.4_amd64.deb

# lsinitramfs /boot/initrd.img-$(uname -r) | grep dhclient-exit-hooks.d
#

# update-initramfs -u

# lsinitramfs /boot/initrd.img-$(uname -r) | grep dhclient-exit-hooks.d
etc/dhcp/dhclient-exit-hooks.d
etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes

# cat <<EOF >/etc/default/grub.d/99-grub-initrd.cfg
GRUB_FORCE_PARTUUID=
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT console=ttyS0 ip=dhcp break=init"
EOF

# update-grub && poweroff

$ lxc start --console jammy-dhclient
...
(initramfs) ip addr
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq qlen 1000
    link/ether 00:16:3e:f4:45:97 brd ff:ff:ff:ff:ff:ff
    inet 10.11.12.102/24 brd 10.11.12.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fef4:4597/64 scope link
       valid_lft forever preferred_lft forever

(initramfs) ip route
default via 10.11.12.13 dev eth0
1.0.0.0/8 via 10.11.12.208 dev eth0
2.1.0.0/16 via 10.11.12.216 dev eth0
3.2.1.0/24 via 10.11.12.224 dev eth0
4.3.2.1 via 10.11.12.232 dev eth0
10.11.12.0/24 dev eth0 scope link src 10.11.12.102

(initramfs) exit

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Verification done on focal
(full steps on comment #13)

$ lxc shell focal-dhcpd

# add-apt-repository -y 'deb http://archive.ubuntu.com/ubuntu focal-proposed main'

root@focal-dhcpd:~# apt policy isc-dhcp-client
isc-dhcp-client:
  Installed: 4.4.1-2.1ubuntu5.20.04.4
  Candidate: 4.4.1-2.1ubuntu5.20.04.5
  Version table:
     4.4.1-2.1ubuntu5.20.04.5 500
        500 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 Packages
...

# apt download isc-dhcp-client
# python3 -m http.server
...

$ lxc shell focal-dhclient

# wget 10.11.12.13:8000/isc-dhcp-client_4.4.1-2.1ubuntu5.20.04.5_amd64.deb
# dpkg -i isc-dhcp-client_4.4.1-2.1ubuntu5.20.04.5_amd64.deb

# lsinitramfs /boot/initrd.img-$(uname -r) | grep dhclient-exit-hooks.d
#

# update-initramfs -u

# lsinitramfs /boot/initrd.img-$(uname -r) | grep dhclient-exit-hooks.d
etc/dhcp/dhclient-exit-hooks.d
etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes

# cat <<EOF >/etc/default/grub.d/99-grub-initrd.cfg
GRUB_FORCE_PARTUUID=
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT console=ttyS0 ip=dhcp break=init"
EOF

# update-grub && poweroff

$ lxc start --console focal-dhclient
...
(initramfs) ip addr
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq qlen 1000
    link/ether 00:16:3e:3b:52:42 brd ff:ff:ff:ff:ff:ff
    inet 10.11.12.102/24 brd 10.11.12.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe3b:5242/64 scope link
       valid_lft forever preferred_lft forever

(initramfs) ip route
default via 10.11.12.13 dev eth0
1.0.0.0/8 via 10.11.12.208 dev eth0
2.1.0.0/16 via 10.11.12.216 dev eth0
3.2.1.0/24 via 10.11.12.224 dev eth0
4.3.2.1 via 10.11.12.232 dev eth0
10.11.12.0/24 dev eth0 scope link src 10.11.12.102

(initramfs) exit

tags: added: verification-done verification-done-focal verification-done-jammy
removed: verification-needed verification-needed-focal verification-needed-jammy
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package isc-dhcp - 4.4.1-2.3ubuntu2.4

---------------
isc-dhcp (4.4.1-2.3ubuntu2.4) jammy; urgency=medium

  [ Mauricio Faria de Oliveira ]
  * Prevent race condition that might ignore DHCP OFFERs/ACKs
    when dhclient receives DHCP traffic noise. (LP: #1926139)
    The previous/racy behavior can be switched back on with
    the 'DHCP_FD_FLAGS_POKE=0' environment variable or
    the 'dhcp.fd_flags_poke=0' kernel cmdline option.
    - d/p/lp1926139-watch-socket-fd-later.patch: fix, switches.
    - d/apparmor/sbin.dhclient,usr.sbin.dhcpd: /proc/cmdline r.

  [ Steve Langasek ]
  * Include /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes
    in the initramfs. (LP: #1937110)
    - d/initramfs-tools/share/hooks/zz-dhclient: copy_exec it.

 -- Mauricio Faria de Oliveira <email address hidden> Tue, 31 Jan 2023 18:54:40 -0300

Changed in isc-dhcp (Ubuntu Jammy):
status: Fix Committed → Fix Released
Revision history for this message
Brian Murray (brian-murray) wrote : Update Released

The verification of the Stable Release Update for isc-dhcp has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package isc-dhcp - 4.4.1-2.1ubuntu5.20.04.5

---------------
isc-dhcp (4.4.1-2.1ubuntu5.20.04.5) focal; urgency=medium

  [ Mauricio Faria de Oliveira ]
  * Prevent race condition that might ignore DHCP OFFERs/ACKs
    when dhclient receives DHCP traffic noise. (LP: #1926139)
    The previous/racy behavior can be switched back on with
    the 'DHCP_FD_FLAGS_POKE=0' environment variable or
    the 'dhcp.fd_flags_poke=0' kernel cmdline option.
    - d/p/lp1926139-watch-socket-fd-later.patch: fix, switches.
    - d/apparmor/sbin.dhclient,usr.sbin.dhcpd: /proc/cmdline r.

  [ Steve Langasek ]
  * Include /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes
    in the initramfs. (LP: #1937110)
    - d/initramfs-tools/share/hooks/zz-dhclient: copy_exec it.

 -- Mauricio Faria de Oliveira <email address hidden> Tue, 31 Jan 2023 19:10:35 -0300

Changed in isc-dhcp (Ubuntu Focal):
status: Fix Committed → Fix Released
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.