** Description changed:

  [impact]
  
  A bridged interface with static ipv4 address and gateway configuration
  will fail to properly add the route via the gateway, leaving the system
  without a globally working network.
  
  [test case]
  
  On a Focal system, remove all network configuration and create this
  netplan:
  
  network:
    version: 2
    renderer: networkd
    ethernets:
      enp4s0:
        dhcp4: false
    bridges:
      br0:
        interfaces: [enp4s0]
        dhcp4: no
        addresses: [192.168.0.4/24]
        gateway4: 192.168.0.1
        nameservers:
          search: [mydomain]
          addresses: [192.168.0.1,192.168.0.2,192.168.0.3]
  
  Replace the interface name 'enp4s0' with the actual interface name on
  the test system.
  
  Reboot the system, and check the route to the gateway, which will be
  missing:
  
  root@lp1860926-f:~# ip r
  192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.4
  
  The route is expected to be present, e.g.:
  
  ubuntu@lp1860926-e:~$ ip r
  default via 192.168.0.1 dev br0 proto static
  192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.4
  
  [test case, pre-focal]
  
- same netplan as above, but remove ethernets: section.  Reboot, and the
- bridge should have its address and route:
+ same netplan as above.  Reboot, and the bridge should have its address
+ and route:
  
  ubuntu@test-e:~$ ip a show br0
  3: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
group default qlen 1000
-     link/ether 56:11:da:23:bb:93 brd ff:ff:ff:ff:ff:ff
-     inet 192.168.0.4/24 brd 192.168.0.255 scope global br0
-        valid_lft forever preferred_lft forever
+     link/ether 56:11:da:23:bb:93 brd ff:ff:ff:ff:ff:ff
+     inet 192.168.0.4/24 brd 192.168.0.255 scope global br0
+        valid_lft forever preferred_lft forever
  ubuntu@test-e:~$ ip r
- default via 192.168.0.1 dev br0 proto static linkdown 
- 192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.4 linkdown 
- 
+ default via 192.168.0.1 dev br0 proto static linkdown
+ 192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.4 linkdown
  
  add and remove carrier, by adding and removing a slave interface:
  
  ubuntu@test-e:~$ sudo ip l set dev ens3 master br0 up
  ubuntu@test-e:~$ ip a show br0
  3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
group default qlen 1000
-     link/ether 56:11:da:23:bb:93 brd ff:ff:ff:ff:ff:ff
-     inet 192.168.0.4/24 brd 192.168.0.255 scope global br0
-        valid_lft forever preferred_lft forever
-     inet6 fe80::5411:daff:fe23:bb93/64 scope link 
-        valid_lft forever preferred_lft forever
+     link/ether 56:11:da:23:bb:93 brd ff:ff:ff:ff:ff:ff
+     inet 192.168.0.4/24 brd 192.168.0.255 scope global br0
+        valid_lft forever preferred_lft forever
+     inet6 fe80::5411:daff:fe23:bb93/64 scope link
+        valid_lft forever preferred_lft forever
  ubuntu@test-e:~$ sudo ip l set dev ens3 nomaster
- 
  
  the bridge no longer has its address after losing carrier:
  
  ubuntu@test-e:~$ ip a show br0
  3: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
group default qlen 1000
-     link/ether 56:11:da:23:bb:93 brd ff:ff:ff:ff:ff:ff
-     inet6 fe80::5411:daff:fe23:bb93/64 scope link 
-        valid_lft forever preferred_lft forever
- 
+     link/ether 56:11:da:23:bb:93 brd ff:ff:ff:ff:ff:ff
+     inet6 fe80::5411:daff:fe23:bb93/64 scope link
+        valid_lft forever preferred_lft forever
  
  [regression potential]
  
  Any regression would likely involve incorrectly configured network after
  an interface carrier gain/loss.
  
  [scope]
  
  This is needed for Focal, Eoan, and Bionic.
  
  While this only reproduces at boot for Focal, the general loss of
  configuration on carrier loss even when ConfigureWithoutCarrier=true is
  reproducable on all releases except Xenial, which does not have the
  ConfigureWithoutCarrier= parameter.
  
  [original description]
  
  Freshly installed Ubuntu 20.04 fully patched to days date with static IP
  address works fine and survives a reboot
  
  network:
    version: 2
    renderer: networkd
    ethernets:
      enp4s0:
        dhcp4: false
        addresses: [192.168.0.4/24]
        gateway4: 192.168.0.1
        nameservers:
          search: [mydomain]
          addresses: [192.168.0.1,192.168.0.2,192.168.0.3]
  
  however when converted to a bridged network for kvm
  
  network:
    version: 2
    renderer: networkd
    ethernets:
      enp4s0:
        dhcp4: false
    bridges:
      br0:
        interfaces: [enp4s0]
        dhcp4: no
        addresses: [192.168.0.4/24]
        gateway4: 192.168.0.1
        nameservers:
          search: [mydomain]
          addresses: [192.168.0.1,192.168.0.2,192.168.0.3]
  
  will not survive a reboot and required systemd-network to be restarted or
  @reboot /usr/sbin/netplan apply
  added to the crontab
  
  after a reboot the network can not b eaccseed and a
  systemctl status systemd-networkd produces
  
  systemd-networkd.service - Network Service
       Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; 
vendor preset: enabled)
       Active: active (running) since Sun 2020-01-26 16:36:28 UTC; 2min 27s ago
  TriggeredBy: ● systemd-networkd.socket
         Docs: man:systemd-networkd.service(8)
     Main PID: 979 (systemd-network)
       Status: "Processing requests..."
        Tasks: 1 (limit: 57662)
       Memory: 4.1M
       CGroup: /system.slice/systemd-networkd.service
               └─979 /lib/systemd/systemd-networkd
  
  Jan 26 16:38:02 firebolt systemd-networkd[979]: rtnl: received neighbor for 
link '5' we don't know about, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Link UP
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Gained carrier
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0: Link UP
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Link DOWN
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Lost carrier
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Kernel removed an 
address we don't remember: fe80::5054:ff:fed9:7e26/64 (valid forever), ignoring.
  
  systemctl restart systemd-networkd resolved the issue and a
  
  systemctl status systemd-network producessystemd-networkd.service - Network 
Service
       Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; 
vendor preset: enabled)
       Active: active (running) since Sun 2020-01-26 16:39:28 UTC; 41s ago
  TriggeredBy: ● systemd-networkd.socket
         Docs: man:systemd-networkd.service(8)
     Main PID: 1650 (systemd-network)
       Status: "Processing requests..."
        Tasks: 1 (limit: 57662)
       Memory: 1.6M
       CGroup: /system.slice/systemd-networkd.service
               └─1650 /lib/systemd/systemd-networkd
  
  Jan 26 16:39:28 firebolt systemd[1]: Starting Network Service...
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: netdev ready
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: Gained IPv6LL
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: Enumeration completed
  Jan 26 16:39:28 firebolt systemd[1]: Started Network Service.
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: netdev exists, using 
existing without changing its parameters
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: IPv6 successfully 
enabled
  
  a journalctl -u systemd-network produces
  
  Jan 26 16:36:28 firebolt systemd[1]: Starting Network Service...
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: netdev ready
  Jan 26 16:36:28 firebolt systemd-networkd[979]: Enumeration completed
  Jan 26 16:36:28 firebolt systemd-networkd[979]: wlp3s0: Interface name change 
detected, wlp3s0 has been renamed to wlan0.
  Jan 26 16:36:28 firebolt systemd[1]: Started Network Service.
  Jan 26 16:36:28 firebolt systemd-networkd[979]: wlan0: Interface name change 
detected, wlan0 has been renamed to wlp3s0.
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: rtnl: received neighbor 
message with invalid family, ignoring.
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: IPv6 successfully enabled
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: Link UP
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: Gained carrier
  Jan 26 16:36:28 firebolt systemd-networkd[979]: enp4s0: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:36:28 firebolt systemd-networkd[979]: enp4s0: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: rtnl: received neighbor 
message with invalid family, ignoring.
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: Lost carrier
  Jan 26 16:36:28 firebolt systemd-networkd[979]: enp4s0: Link UP
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: Gained carrier
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: Could not set route: 
Network is unreachable
  Jan 26 16:36:28 firebolt systemd-networkd[979]: br0: Failed
  Jan 26 16:36:30 firebolt systemd-networkd[979]: br0: Lost carrier
  Jan 26 16:36:31 firebolt systemd-networkd[979]: enp4s0: Gained carrier
  Jan 26 16:36:31 firebolt systemd-networkd[979]: br0: Gained carrier
  Jan 26 16:38:02 firebolt systemd-networkd[979]: rtnl: received neighbor for 
link '5' we don't know about, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0: rtnl: received 
neighbor message with invalid family, ignoring.
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Link UP
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Gained carrier
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0: Link UP
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Link DOWN
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Lost carrier
  Jan 26 16:38:02 firebolt systemd-networkd[979]: virbr0-nic: Kernel removed an 
address we don't remember: fe80::5054:ff:fed9:7e26/64 (valid forever), ignoring.
  Jan 26 16:39:28 firebolt systemd[1]: Stopping Network Service...
  Jan 26 16:39:28 firebolt systemd[1]: systemd-networkd.service: Succeeded.
  Jan 26 16:39:28 firebolt systemd[1]: Stopped Network Service.
  Jan 26 16:39:28 firebolt systemd[1]: Starting Network Service...
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: netdev ready
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: Gained IPv6LL
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: Enumeration completed
  Jan 26 16:39:28 firebolt systemd[1]: Started Network Service.
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: netdev exists, using 
existing without changing its parameters
  Jan 26 16:39:28 firebolt systemd-networkd[1650]: br0: IPv6 successfully 
enabled
  
  the network should restart properly after a reboot liek in earlier
  version of ubuntu 18.04 for example

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1860926

Title:
  Ubuntu 20.04  Systemd fails to configure bridged network

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1860926/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to