#858070 ifupdown: ifdown puts the interface down before removing the IPv6 addresses

Package:
ifupdown
Source:
ifupdown
Description:
high level tools to configure network interfaces
Submitter:
Daniel Haid
Date:
2024-07-10 13:15:03 UTC
Severity:
normal
Tags:
#858070#5
Date:
2017-03-17 22:48:30 UTC
From:
To:
Dear Maintainer,

when both IPv4 and IPv6 are statically configured, ifdown first removes
the IPv4 addresses, then puts the interfaces down, and then tries to
remove the IPv6 addresses, which results in the error message
   "RTNETLINK answers: Cannot assign requested address".

Here is the verbose output:

root@host:~# ifdown -v ens2
ifdown: reading directory /etc/network/interfaces.d
ifdown: parsing file /etc/network/interfaces.d/ens2
ifdown: configuring interface ens2=ens2 (inet)
/bin/run-parts --verbose /etc/network/if-down.d
/bin/ip addr del 10.0.0.1/255.255.255.255 broadcast 10.0.0.1 dev ens2 label ens2
/bin/ip link set dev ens2 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens2=ens2 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d
/bin/ip -6 addr del fd00::1/128  dev ens2
RTNETLINK answers: Cannot assign requested address
/bin/ip link set dev ens2 down
/bin/run-parts --verbose /etc/network/if-post-down.d

#858070#10
Date:
2023-01-07 04:33:57 UTC
From:
To:
Debian Bug #858070 remains in ifdown version 0.8.36

Multipe static IPv4 and IPv6 address are affected because interface is flushed AND downed AFTER EVERY address delete.

admin@hef1v10:~$ cat /etc/network/interfaces.d/ens224
allow-hotplug ens224

iface ens224 inet static
        address 64.62.193.70/28

iface ens224 inet static
        address 64.62.193.74/28

iface ens224 inet static
        address 64.62.193.75/28

iface ens224 inet static
        address 64.62.193.76/28

iface ens224 inet static
        address 64.62.193.77/28

iface ens224 inet static
        address 64.62.193.78/28

iface ipv6all inet6 static
        accept_ra 0     # Accept router advertisements 0=off
        autoconf 0      # Perform stateless autoconfiguration 0=off
        dad-attempts 0  # Duplicate Address Detection attempts
        privext 0       # Privacy extensions (RFC3041) 0=off

iface ens224 inet6 static inherits ipv6all
        address 2001:470:44:2::403e:c146/64

iface ens224 inet6 static inherits ipv6all
        address 2001:470:44:2::403e:c14a/64

iface ens224 inet6 static inherits ipv6all
        address 2001:470:44:2::403e:c14e/64

iface ens224 inet6 static inherits ipv6all
        address 2001:470:44:2:20c:29ff:fe60:aa05/64

iface ens224 inet6 static inherits ipv6all
        address 2001:470:44:2:20c:29ff:feba:79b3/64

iface ens224 inet6 static inherits ipv6all
        address 2001:470:44:2:20c:29ff:fee1:45b7/64


admin@hef1v10:~$ sudo ifdown --version
ifdown version 0.8.36

Copyright (c) 1999-2009 Anthony Towns
              2010-2015 Andrej Shadura
              2015-2017 Guus Sliepen

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.



admin@hef1v10:~$ sudo ifdown --verbose ens224
ifdown: parsing file /etc/network/interfaces.d/ens224
ifdown: configuring interface ens224=ens224 (inet)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip addr del 64.62.193.70/255.255.255.240 broadcast 64.62.193.79     dev ens224 label ens224
/sbin/ip -4 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip addr del 64.62.193.74/255.255.255.240 broadcast 64.62.193.79     dev ens224 label ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -4 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip addr del 64.62.193.75/255.255.255.240 broadcast 64.62.193.79     dev ens224 label ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -4 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip addr del 64.62.193.76/255.255.255.240 broadcast 64.62.193.79     dev ens224 label ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -4 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip addr del 64.62.193.77/255.255.255.240 broadcast 64.62.193.79     dev ens224 label ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -4 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip addr del 64.62.193.78/255.255.255.240 broadcast 64.62.193.79     dev ens224 label ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -4 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip -6 addr del 2001:470:44:2::403e:c146/64  dev ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -6 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip -6 addr del 2001:470:44:2::403e:c14a/64  dev ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -6 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip -6 addr del 2001:470:44:2::403e:c14e/64  dev ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -6 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip -6 addr del 2001:470:44:2:20c:29ff:fe60:aa05/64  dev ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -6 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip -6 addr del 2001:470:44:2:20c:29ff:feba:79b3/64  dev ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -6 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface ens224=ens224 (inet6)
/bin/run-parts --verbose /etc/network/if-down.d

/sbin/ip -6 addr del 2001:470:44:2:20c:29ff:fee1:45b7/64  dev ens224
RTNETLINK answers: Cannot assign requested address
/sbin/ip -6 addr flush dev ens224
/sbin/ip link set dev ens224 down
/bin/run-parts --verbose /etc/network/if-post-down.d

#858070#15
Date:
2024-07-10 12:54:09 UTC
From:
To:
  I just started looking into this, due to seeing spurious RTNETLINK
messages during `ifdown lan0` on my setup.  Running

	ifdown --verbose lan0

yields:

ifdown: parsing file /etc/network/interfaces.d/000-lo
ifdown: parsing file /etc/network/interfaces.d/010-lan0
ifdown: configuring interface lan0=lan0 (inet)
run-parts --verbose /etc/network/if-down.d
run-parts: executing /etc/network/if-down.d/resolved
 ip route del default via 192.168.1.1  dev lan0 2>&1 1>/dev/null || true
ip addr del 192.168.1.124/255.255.255.0 broadcast 192.168.1.255           dev la
ip -4 addr flush dev lan0
ip link set dev lan0 down
run-parts --verbose /etc/network/if-post-down.d
ifdown: configuring interface lan0=lan0 (inet6)
run-parts --verbose /etc/network/if-down.d
run-parts: executing /etc/network/if-down.d/resolved
 ip -6 route del default via 2001:4d48:ad5d:de00::1  dev lan0
RTNETLINK answers: No such process
ip -6 addr del 2001:4d48:ad5d:de02::1/56  dev lan0
RTNETLINK answers: Cannot assign requested address
ip -6 addr flush dev lan0
ip link set dev lan0 down
run-parts --verbose /etc/network/if-post-down.d

  If I run the `ip ...` commands for the IPv4 part of this *without* the
`ip link set dev lan0 down` then the IPv6 `ip ...` commands complete
without any RTNETLINK messages.

  This is with ifupdown 0.8.41:

ii  ifupdown       0.8.41       amd64        high level tools to configure netwo

  At least now I know the cause and can just choose to ignore these
messages when they show up in logcheck output (which is every day,
because this is my "backup copy of backups" server which comes up/down
once a day).
  I would prefer this bug be fixed so that I still have visibity on "you
DO need to correct something" RTNETLINK messages without having these
ones repeatedly.  Either the logic needs to know it'll be performing
more configuration on the same interface, and thus don't set the link
down until the last of those... or if that's complicated, then maybe an
interface configuration option to remove all the actual configuration
but leave the link up ?