[Bug 1937110] Re: dhcp option 121 & 249
Mauricio Faria de Oliveira
1937110 at bugs.launchpad.net
Wed Feb 15 15:26:14 UTC 2023
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 at 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 removed: verification-needed verification-needed-focal verification-needed-jammy
** Tags added: verification-done verification-done-focal verification-done-jammy
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to the bug report.
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
More information about the foundations-bugs
mailing list