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

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to isc-dhcp in Ubuntu.
https://bugs.launchpad.net/bugs/1937110

Title:
  dhcp option 121 & 249

Status in subiquity:
  New
Status in isc-dhcp package in Ubuntu:
  Fix Released
Status in isc-dhcp source package in Focal:
  Fix Committed
Status in isc-dhcp source package in Jammy:
  Fix Committed

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?

To manage notifications about this bug go to:
https://bugs.launchpad.net/subiquity/+bug/1937110/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to