[Bug 1836695] Re: systemd fails to setup static routes at boot when using DHCP
Launchpad Bug Tracker
1836695 at bugs.launchpad.net
Mon Feb 17 10:07:54 UTC 2020
This bug was fixed in the package systemd - 237-3ubuntu10.39
---------------
systemd (237-3ubuntu10.39) bionic; urgency=medium
[ Dariusz Gadomski ]
* d/p/lp1762391/0001-Call-getgroups-to-know-size-of-supplementary-groups-.patch,
d/p/lp1762391/0002-user-util-tweak-to-in_gid.patch,
d/p/lp1762391/0003-user-util-Add-helper-functions-for-gid-lists-operati.patch,
d/p/lp1762391/0004-execute-Restore-call-to-pam_setcred.patch,
d/p/lp1762391/0005-execute-Detect-groups-added-by-PAM-and-merge-them-wi.patch,
d/p/lp1762391/0006-test-Add-tests-for-gid-list-ops.patch,
d/p/lp1762391/0007-execute-add-const-to-array-parameters-where-possible.patch,
d/p/lp1762391/0008-execute-allow-pam_setcred-to-fail-ignore-errors.patch:
- Restore call to pam_setcred (LP: #1762391)
[ Ioanna Alifieraki ]
* d/p/lp1860548/0001-Revert-Replace-use-of-snprintf-with-xsprintf.patch,
d/p/lp1860548/0002-job-truncate-unit-description.patch:
- use snprintf instead of xsprintf (LP: #1860548)
[ Dan Streetman ]
* d/p/lp1833193-network-update-address-when-static-address-was-alrea.patch:
- Update lft when static addr was cfg by dhcp (LP: #1833193)
* d/p/lp1849261/0001-core-when-we-can-t-enqueue-OnFailure-job-show-full-e.patch,
d/p/lp1849261/0002-core-don-t-trigger-OnFailure-deps-when-a-unit-is-goi.patch:
- Only trigger OnFailure= if Restart= is not in effect (LP: #1849261)
* d/p/lp1671951-network-set-ipv6-mtu-after-link-up-or-device-mtu-cha.patch:
- set ipv6 mtu at correct time (LP: #1671951)
* d/p/lp1845909/0001-networkd-honour-LinkLocalAddressing.patch,
d/p/lp1845909/0002-networkd-fix-link_up-12505.patch,
d/p/lp1845909/0003-network-do-not-send-ipv6-token-to-kernel.patch,
d/p/lp1845909/0004-network-rename-linux_configure_after_setting_mtu-to-linux.patch,
d/p/lp1845909/0005-network-add-link-setting_genmode-flag.patch,
d/p/lp1845909/0006-network-if-ipv6ll-is-disabled-enumerate-tentative-ipv6-ad.patch,
d/p/lp1845909/0007-network-drop-foreign-config-after-addr_gen_mode-has-been-.patch,
d/p/lp1845909/0008-network-drop-IPv6LL-address-when-LinkLocalAddressing.patch:
- if LinkLocalAddressing=no prevent creation of ipv6ll (LP: #1845909)
* d/p/lp1859862-network-Do-not-disable-IPv6-by-writing-to-sysctl.patch:
- enable ipv6 when needed (LP: #1859862)
* d/p/lp1836695-networkd-Add-back-static-routes-after-DHCPv4-lease-e.patch:
- (re)add static routes after getting dhcp4 addr (LP: #1836695)
* d/t/storage:
- fix buggy test (LP: #1831459)
- without scsi_debug, skip test (LP: #1847816)
-- Dan Streetman <ddstreet at canonical.com> Thu, 06 Feb 2020 10:00:49
-0500
** Changed in: systemd (Ubuntu Bionic)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1836695
Title:
systemd fails to setup static routes at boot when using DHCP
Status in netplan:
Invalid
Status in systemd package in Ubuntu:
Fix Released
Status in systemd source package in Bionic:
Fix Released
Status in systemd source package in Disco:
Won't Fix
Status in systemd source package in Eoan:
Fix Released
Bug description:
[impact]
a systemd-networkd configuration that uses ipv4 dhcp but ignores the
dhcp-provided route, and instead sets up a static route, and also does
not include a static ipv4 address, fails to actually create the static
route.
This is due to networkd attempting to set up the static route before
the dhcp ipv4 address is assigned, and the kernel does not allow
creation of the route before setting up corresponding ipv4 address.
this results in a network that does have the dhcp-provided ipv4
address, but is missing both its dhcp-provided route (because networkd
is configured to ignore it) and the static route (because networkd was
not able to create it).
[test case]
(remove or unconfigure netplan, so it will not conflict with this
manual networkd configuration)
create a networkd config file, e.g.:
$ cat /etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
DHCP=ipv4
[Route]
Destination=10.0.0.0/8
Gateway=10.202.51.1
[DHCP]
UseRoutes=false
then *reboot* the system, and check that the static route was not applied:
$ ip r
10.202.51.0/24 dev eth0 proto kernel scope link src 10.202.51.254
note that because networkd does not remove ipv4 addresses that it manages (including dhcpv4 addresses), restarting networkd after the initial boot
will correctly create the static route, e.g.:
ubuntu at lp1836695-b:~$ ip r
10.202.51.0/24 dev eth0 proto kernel scope link src 10.202.51.254
ubuntu at lp1836695-b:~$ sudo systemctl restart systemd-networkd
ubuntu at lp1836695-b:~$ ip r
10.0.0.0/8 via 10.202.51.1 dev eth0 proto static
10.202.51.0/24 dev eth0 proto kernel scope link src 10.202.51.254
[regression potential]
adjusting how networkd works always carries the risk of breaking
networking.
TBD detailed regression potential after analyzing fix.
[other info]
original description:
--
Consider the following setup:
network:
version: 2
renderer: networkd
ethernets:
ens4:
dhcp-identifier: mac
dhcp4: yes
dhcp4-overrides:
use-dns: no
use-ntp: no
send-hostname: no
use-hostname: no
use-routes: no
routes:
- to: 10.0.0.0/8
via: 10.50.0.1
optional: true
Thus I only need to get the IP address by DHCP, then add some static
routes. This setup doesn't work. Apparently `routes` keyword only
works when using static addresses.
To manage notifications about this bug go to:
https://bugs.launchpad.net/netplan/+bug/1836695/+subscriptions
More information about the foundations-bugs
mailing list