Bug 927586

Summary: wicked does not drop old config on network change
Product: [openSUSE] openSUSE Distribution Reporter: Peter Sütterlin <P.Suetterlin>
Component: BasesystemAssignee: wicked maintainers <wicked-maintainers>
Status: RESOLVED WONTFIX QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: bwiedemann, diego.ercolani, P.Suetterlin
Version: 13.2   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Peter Sütterlin 2015-04-17 10:16:32 UTC
I run a fresh installed 13.2 (including updates).  I use wicked to set up the ethernet interface for DHCP4, and run an openvpn via systemd.
I regularly change between networks, mostly with a suspend/resume cycle (i.e., suspend in work network, then resume at home).

After boot at home, config looks like this:
# ip addr show enp0s25
3: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.33/24 brd 192.168.1.255 scope global enp0s25
       valid_lft forever preferred_lft forever
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 enp0s25
10.0.0.0        192.168.1.120   255.255.252.0   UG    0      0        0 tun1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 enp0s25
192.168.1.120   0.0.0.0         255.255.255.255 UH    0      0        0 tun1

If I suspend, then resume at work, I can see that a new addres is acquired:
wickedd[905]: enp0s25: Notified neighbours about IP address 161.72.15.23
wickedd[905]: enp0s25: address 161.72.15.23 covered by a dhcp lease
wickedd[905]: enp0s25: Notified neighbours about IP address 161.72.15.23
wickedd[905]: route ipv4 0.0.0.0/0 via 161.72.15.1 dev enp0s25 type unicast table main scope universe protocol dh

But the old settings are also kept:
3: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.33/24 brd 192.168.1.255 scope global enp0s25
       valid_lft forever preferred_lft forever
    inet xx.xx.xx.23/24 brd xx.xx.xx.255 scope global enp0s25
       valid_lft forever preferred_lft forever
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         xx.xx.xx.1      0.0.0.0         UG    0      0        0 enp0s25
10.0.0.0        192.168.1.120   255.255.252.0   UG    0      0        0 tun1
xx.xx.xx.0      0.0.0.0         255.255.255.0   U     0      0        0 enp0s25
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 enp0s25
192.168.1.120   0.0.0.0         255.255.255.255 UH    0      0        0 tun1

ifconfig enp0s25 does not even show the newly acquired address, but only the old (first) one.  
Especially when switching from work to home, those residual configurations make my network nonfunctional until I manually restart wicked.service.
(A similar setup (using ifup/down and /etc/init.d/openvpn) worked flawless for many years in OS 12.3)
Comment 1 Bernhard Wiedemann 2015-04-20 09:43:52 UTC
I wonder if this starts to work if you change
/etc/wicked/common.xml:  <use-nanny>true</use-nanny>
Comment 2 Peter Sütterlin 2015-04-20 10:54:43 UTC
Sorry - thought I had mentioned it.  I tried both nanny and setting the interface to 'On cable connect' but have the same behavior.
Comment 3 Bernhard Wiedemann 2015-04-20 12:23:05 UTC
info was provided in comment 2
Comment 4 Diego Ercolani 2015-10-26 14:19:34 UTC
I record the same issue here:
I have a system (originally migrated from opensuse 13.1) where an interface renammed with udev (/etc/udev/rules.d/70-persistent-net.rules)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:02:00.0", ATTR{type}=="1", NAME="dmzlan"

Have a configuration to have "static" address:
(/etc/sysconfig/network/ifcfg-dmzlan)
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='172.30.1.18/24'
MTU=''
NAME='82545EM Gigabit Ethernet Controller (Copper)'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'

For debug purpose, I need to give the address via dhcp:
BOOTPROTO='dhcp'
BROADCAST=''
ETHTOOL_OPTIONS=''
#IPADDR='172.30.1.18/24'
MTU=''
NAME='82545EM Gigabit Ethernet Controller (Copper)'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'

but with:
wicked ifreload dmzlan
the interface don't ask for any address (I tested the dhcp with /usr/lib/wicked/bin/wickedd-dhcp4 --test dmzlan)
assistenza:~ # /usr/lib/wicked/bin/wickedd-dhcp4 --test dmzlan
Notice: dmzlan: Request to acquire DHCPv4 lease with UUID b4332e56-0c31-0300-cf08-000001000000
Notice: dmzlan: Committed DHCPv4 lease with address 192.168.99.118 (lease time 604800 sec, renew in 302400 sec, rebind in 529200 sec)
INTERFACE='dmzlan'
TYPE='dhcp'
FAMILY='ipv4'
UUID='b4332e56-0c31-0300-cf08-000001000000'
IPADDR='192.168.99.118/24'
NETMASK='255.255.255.0'
NETWORK='192.168.99.0'
BROADCAST='192.168.99.255'
PREFIXLEN='24'
GATEWAYS='192.168.99.1'
DNSDOMAIN='guest.ssis'
DNSSERVERS='208.91.112.53 208.91.112.52'
DNSSEARCH='guest.ssis'
CLIENTID='01:00:50:56:b7:2a:b4'
SERVERID='192.168.99.1'
ACQUIRED='1445868468'
LEASETIME='604800'
RENEWALTIME='302400'
REBINDTIME='529200'

In the log I have this errors:
Oct 26 14:58:02 assistenza wickedd[1114]: __ni_rtnl_send_newroute(ipv4 192.168.210.0/24 via 172.30.1.200 dev dmzlan type unicast table main scope universe protocol boot): ni_nl_talk failed [Unspecific failure]
Oct 26 14:58:02 assistenza wickedd[1114]: dmzlan: error updating interface config from ipv4:static lease
Oct 26 14:58:02 assistenza wickedd-nanny[1115]: device dmzlan: call to org.opensuse.Network.Addrconf.ipv4.static.requestLease() failed: General failure
Oct 26 14:58:02 assistenza wickedd-nanny[1115]: dmzlan: failed to bring up device, still continuing


(I have also a series of static routes that don't need to be applied when I use dhcp) (/etc/sysconfig/network/ifroute-dmzlan)
192.168.210.0 172.30.1.200 255.255.255.0 dmzlan 
192.168.211.0 172.30.1.200 255.255.255.0 dmzlan 
192.168.200.0 172.30.1.203 255.255.255.0 dmzlan 
192.168.10.0 172.30.1.4 255.255.255.0 dmzlan 
192.168.99.0 172.30.1.4 255.255.255.0 dmzlan 
192.168.0.0 172.30.1.203 255.255.255.0 dmzlan 
172.31.240.0 172.30.1.1 255.255.240.0 dmzlan 
172.16.6.0 172.30.1.201 255.255.255.0 dmzlan 
192.168.17.0 172.30.1.202 255.255.255.0 dmzlan 
10.166.160.32 172.30.1.202 255.255.255.252 dmzlan 
10.10.164.31 172.30.1.203 255.255.255.255 dmzlan 
10.1.99.0 172.30.1.210 255.255.255.0 dmzlan 
10.1.112.0 172.30.1.210 255.255.255.0 dmzlan 
172.28.240.0 172.30.1.4 255.255.255.240 dmzlan 

Notice:
I noticed that If I rename ifroute-dmzlan to ifroute-dmzlan.bak wicked raise up the interface so probably in my case the issue is related to the routes wich gateways are not reacheable with the new configuration.
Comment 5 Tomáš Chvátal 2018-04-12 14:03:22 UTC
This version of openSUSE changed to end-of-life (EOL [1]) status. As such
it is no longer maintained, which means that it will not receive any
further security or bug fix updates.
As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
openSUSE, or consider the bug still valid, please feel free to reopen this
bug against that version, or open a new ticket.

Thank you for reporting this bug and we are sorry it could not be fixed
during the lifetime of the release.

[1] https://en.opensuse.org/Lifetime