(re)starting networkd removes still-valid RFC 4941 ipv6 addrs

Bug #1839231 reported by Shivaram Lingamneni
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
systemd (Ubuntu)
Won't Fix
Undecided
Unassigned

Bug Description

I updated my Ubuntu 18.04.2 server from systemd 237-3ubuntu10.24 to 237-3ubuntu10.25. This caused a restart of systemd-networkd, breaking all TCP-over-IPv6 connections.

apt history entry:

Start-Date: 2019-08-06 19:46:21
Commandline: apt-get dist-upgrade -y
Requested-By: shivaram (1000)
Upgrade: libsystemd0:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), udev:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), libudev1:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), systemd-sysv:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), libpam-systemd:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), systemd:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), libnss-systemd:amd64 (237-3ubuntu10.24, 237-3ubuntu10.25), base-files:amd64 (10.1ubuntu2.5, 10.1ubuntu2.6)
End-Date: 2019-08-06 19:54:17

systemd journal output:

Aug 06 19:47:40 pentos systemd[1]: Reloading.
Aug 06 19:47:57 pentos systemd[1]: Reexecuting.
Aug 06 19:47:58 pentos systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hie
Aug 06 19:47:58 pentos systemd[1]: Detected architecture x86-64.
Aug 06 19:47:58 pentos systemd[1]: Stopping Network Service...
Aug 06 19:47:58 pentos systemd[1]: Stopped Network Service.
Aug 06 19:47:58 pentos systemd[1]: Starting Network Service...
Aug 06 19:47:59 pentos systemd-networkd[11513]: ens5: Gained IPv6LL
Aug 06 19:47:59 pentos systemd-networkd[11513]: Enumeration completed
Aug 06 19:47:59 pentos systemd[1]: Started Network Service.
Aug 06 19:47:59 pentos systemd-networkd[11513]: lo: Link is not managed by us
Aug 06 19:47:59 pentos systemd-networkd[11513]: ens5: DHCPv4 address 192.168.1.103/24 via 192.168.1.1
Aug 06 19:47:59 pentos dbus-daemon[947]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.2341' (uid=100 pid=11513 comm="/lib/systemd/systemd-network
Aug 06 19:47:59 pentos systemd-networkd[11513]: ens5: Configured

Tags: ddstreet
Revision history for this message
Dan Streetman (ddstreet) wrote :

upgrading systemd does restart networkd, but it should not remove any existing managed configuration while restarting (or stopping). For example:

ubuntu@lp1839231:~$ sudo systemctl start systemd-networkd
ubuntu@lp1839231:~$ ip a show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:e8:e2:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.25/24 brd 192.168.122.255 scope global dynamic ens3
       valid_lft 3537sec preferred_lft 3537sec
    inet6 fe80::5054:ff:fee8:e23f/64 scope link
       valid_lft forever preferred_lft forever
ubuntu@lp1839231:~$ sudo systemctl stop systemd-networkd
Warning: Stopping systemd-networkd.service, but it can still be activated by:
  systemd-networkd.socket
ubuntu@lp1839231:~$ ip a show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:e8:e2:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.25/24 brd 192.168.122.255 scope global dynamic ens3
       valid_lft 3529sec preferred_lft 3529sec
    inet6 fe80::5054:ff:fee8:e23f/64 scope link
       valid_lft forever preferred_lft forever
ubuntu@lp1839231:~$ sudo systemctl start systemd-networkd
ubuntu@lp1839231:~$ ip a show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:e8:e2:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.25/24 brd 192.168.122.255 scope global dynamic ens3
       valid_lft 3599sec preferred_lft 3599sec
    inet6 fe80::5054:ff:fee8:e23f/64 scope link
       valid_lft forever preferred_lft forever

What specific config is in your networkd config files? What specific interface(s) or address(es) are you having trouble with?

Changed in systemd (Ubuntu):
status: New → Incomplete
Revision history for this message
Shivaram Lingamneni (slingamn) wrote :
Download full text (5.5 KiB)

Thanks! This system is using netplan, with ipv6-privacy enabled in netplan (subsequent to the fix in bug #1750392):

root@pentos:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens5:
      dhcp4: true
      ipv6-privacy: true

The issue reproduces with the ens5 interface. Stopping systemd-networkd does not change any addresses, but starting it again removes all the "deprecated" addresses, even if they are in use by TCP connections:

root@pentos:~# 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: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether [mac-redacted] brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.103/24 brd 192.168.1.255 scope global dynamic ens5
       valid_lft 52839sec preferred_lft 52839sec
    inet6 [redacted-ipv6-/64]:8d03:bfce:131d:190/64 scope global temporary dynamic
       valid_lft 596sec preferred_lft 596sec
    inet6 [redacted-ipv6-/64]:306e:2bf2:9d28:ef32/64 scope global temporary deprecated dynamic
       valid_lft 596sec preferred_lft 0sec
    inet6 [redacted-ipv6-/64]:c060:f52:5638:10e9/64 scope global temporary deprecated dynamic
       valid_lft 596sec preferred_lft 0sec
    inet6 [redacted-ipv6-/64]:d941:e7ff:cc75:9968/64 scope global temporary deprecated dynamic
       valid_lft 596sec preferred_lft 0sec
    inet6 [redacted-ipv6-/64]:2dae:1ae3:c572:ed57/64 scope global temporary deprecated dynamic
       valid_lft 596sec preferred_lft 0sec
    inet6 [redacted-ipv6-/64]:90ec:5051:54de:f345/64 scope global temporary deprecated dynamic
       valid_lft 596sec preferred_lft 0sec
    inet6 [redacted-ipv6-/64]:5497:3bdc:6452:c67f/64 scope global temporary deprecated dynamic
       valid_lft 596sec preferred_lft 0sec
    inet6 [redacted-ipv6-/64]:[slaac-redacted]/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 596sec preferred_lft 596sec
    inet6 fe80::[ll-redacted]/64 scope link
       valid_lft forever preferred_lft forever
root@pentos:~# systemctl stop systemd-networkd
root@pentos:~# 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: ens5: <BROA...

Read more...

Dan Streetman (ddstreet)
summary: - updating bionic to 237-3ubuntu10.25 restarts systemd-networkd
+ (re)starting networkd removes still-valid RFC 4941 ipv6 addrs
Changed in systemd (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
Dan Streetman (ddstreet) wrote :

This appears to need patching upstream; have you opened a bug there yet?

Dan Streetman (ddstreet)
tags: added: ddstreet
Revision history for this message
Nick Rosbrook (enr0n) wrote :

Please re-open if this is still an issue on newer releases.

Changed in systemd (Ubuntu):
status: Confirmed → Won't Fix
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.