Package: ifupdown Version: 0.8.35+b1 Severity: important Trying to bring up any wireless interface on a network with WPA auth fails in a very peculiar way: the interface gets correctly configured, including WPA auth, DHCP manages to get an IP, and then an error about failure to bring up wpa_supplicant causes the interface to be brought down.
wpa_supplicant: /sbin/wpa_supplicant daemon failed to start run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1 ifup: failed to bring up *** Debugging `ifup -v wlan=***` gives the following log: -- Log: ifup: reading directory /etc/network/interfaces.d ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: parsing file /etc/network/interfaces.d/*** ifup: configuring interface wlan0=*** (inet) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/bridge run-parts: executing /etc/network/if-pre-up.d/ethtool run-parts: executing /etc/network/if-pre-up.d/hostapd run-parts: executing /etc/network/if-pre-up.d/wireless-tools run-parts: executing /etc/network/if-pre-up.d/wpasupplicant wpa_supplicant: wpa-driver nl80211,wext (default) wpa_supplicant: /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -C /run/wpa_supplicant wpa_supplicant: creating sendsigs omission pidfile: /run/sendsigs.omit.d/wpasupplicant.wpa_supplicant.wlan0.pid wpa_supplicant: ctrl_interface socket located at /run/wpa_supplicant/wlan0 wpa_supplicant: configuring network block -- 0 wpa_supplicant: wpa-ssid "***" -- OK wpa_supplicant: wpa-psk ***** -- OK wpa_supplicant: enabling network block 0 -- OK /sbin/dhclient -4 -v -i -pf /run/dhclient.wlan0.pid -lf /var/lib/dhcp/dhclient.wlan0.leases -I -df /var/lib/dhcp/dhclient6.wlan0.leases wlan0 Internet Systems Consortium DHCP Client 4.4.1 Copyright 2004-2018 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/wlan0/e8:2a:ea:ab:36:3c Sending on LPF/wlan0/e8:2a:ea:ab:36:3c Sending on Socket/fallback DHCPREQUEST for 192.168.0.3 on wlan0 to 255.255.255.255 port 67 DHCPREQUEST for 192.168.0.3 on wlan0 to 255.255.255.255 port 67 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5 DHCPOFFER of 192.168.0.3 from 192.168.0.1 DHCPREQUEST for 192.168.0.3 on wlan0 to 255.255.255.255 port 67 DHCPACK of 192.168.0.3 from 192.168.0.1 RTNETLINK answers: File exists bound to 192.168.0.3 -- renewal in 21269 seconds. /bin/run-parts --exit-on-error --verbose /etc/network/if-up.d run-parts: executing /etc/network/if-up.d/000resolvconf run-parts: executing /etc/network/if-up.d/00check-network-cable run-parts: executing /etc/network/if-up.d/10check-duplicate-ip run-parts: executing /etc/network/if-up.d/10check-duplicate-ip6 run-parts: executing /etc/network/if-up.d/20static-routes run-parts: executing /etc/network/if-up.d/30check-gateway run-parts: executing /etc/network/if-up.d/avahi-autoipd run-parts: executing /etc/network/if-up.d/avahi-daemon run-parts: executing /etc/network/if-up.d/ethtool run-parts: executing /etc/network/if-up.d/mountnfs run-parts: executing /etc/network/if-up.d/openvpn run-parts: executing /etc/network/if-up.d/wpasupplicant ifup: configuring interface wlan0=marfib (inet) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/bridge run-parts: executing /etc/network/if-pre-up.d/ethtool run-parts: executing /etc/network/if-pre-up.d/hostapd run-parts: executing /etc/network/if-pre-up.d/wireless-tools run-parts: executing /etc/network/if-pre-up.d/wpasupplicant wpa_supplicant: terminating wpa_supplicant daemon via pidfile /run/wpa_supplicant.wlan0.pid Stopped /sbin/wpa_supplicant (pid 2590). wpa_supplicant: removing /run/sendsigs.omit.d/wpasupplicant.wpa_supplicant.wlan0.pid wpa_supplicant: wpa-driver nl80211,wext (default) wpa_supplicant: /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -C /run/wpa_supplicant wpa_supplicant: /sbin/wpa_supplicant daemon failed to start run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1 ifup: failed to bring up marfib -- So the failure is coming from wpa_supplicant's pre-up script being run _after_ the up script. To verify this, I tried patching the wpasupplicant script so that it checks if it's being run in pre-up for the second time, and if so run the post-up commands instead, and this hack works around the issue. Is it normal for the pre-up scripts to be run again post-up? -- Package-specific info: --- /etc/network/interfaces: # interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d --- /etc/network/interfaces.d/***: iface *** inet dhcp test wireless essid *** dns-search *** dns-nameserver 192.168.0.2 192.168.0.1 wpa-essid *** wpa-psk *** (and several other similar ones) --- /etc/network/interfaces.d/wlan: mapping wlan0 script /usr/sbin/guessnet-ifupdown map verbose: true map syslog: true map default: none map iwscan-tries: 5 map *** *** *** *** *** --- up and down scripts installed: /etc/network/if-down.d: total 12 -rwxr-xr-x 1 root root 1015 Apr 13 2015 avahi-autoipd -rwxr-xr-x 1 root root 372 Jul 4 2016 openvpn -rwxr-xr-x 1 root root 256 Jul 20 2013 resolvconf lrwxrwxrwx 1 root root 32 Aug 8 15:59 wpasupplicant -> ../../wpa_supplicant/ifupdown.sh /etc/network/if-post-down.d: total 4 lrwxrwxrwx 1 root root 23 Oct 10 2018 avahi-daemon -> ../if-up.d/avahi-daemon lrwxrwxrwx 1 root root 29 Jan 28 2019 bridge -> /lib/bridge-utils/ifupdown.sh lrwxrwxrwx 1 root root 25 Aug 8 15:59 hostapd -> ../../hostapd/ifupdown.sh -rwxr-xr-x 1 root root 1409 Mar 24 2016 wireless-tools lrwxrwxrwx 1 root root 32 Aug 8 15:59 wpasupplicant -> ../../wpa_supplicant/ifupdown.sh /etc/network/if-pre-up.d: total 12 lrwxrwxrwx 1 root root 29 Jan 28 2019 bridge -> /lib/bridge-utils/ifupdown.sh -rwxr-xr-x 1 root root 344 Jan 28 2014 ethtool lrwxrwxrwx 1 root root 25 Aug 8 15:59 hostapd -> ../../hostapd/ifupdown.sh -rwxr-xr-x 1 root root 4191 Sep 15 2018 wireless-tools lrwxrwxrwx 1 root root 32 Aug 8 15:59 wpasupplicant -> ../../wpa_supplicant/ifupdown.sh /etc/network/if-up.d: total 72 -rwxr-xr-x 1 root root 817 Jul 20 2013 000resolvconf -rwxr-xr-x 1 root root 4359 May 29 2016 00check-network-cable -rwxr-xr-x 1 root root 4341 Oct 1 2014 00check-network-cable.dpkg-old -rwxr-xr-x 1 root root 5521 Feb 6 2018 10check-duplicate-ip -rwxr-xr-x 1 root root 3848 Feb 6 2016 10check-duplicate-ip6 -rwxr-xr-x 1 root root 4919 Feb 6 2018 20static-routes -rwxr-xr-x 1 root root 4566 Apr 10 2014 30check-gateway -rwxr-xr-x 1 root root 923 Apr 13 2015 avahi-autoipd -rwxr-xr-x 1 root root 484 Mar 6 2013 avahi-daemon -rwxr-xr-x 1 root root 1685 Sep 22 2014 ethtool -rwxr-xr-x 1 root root 4937 Aug 22 17:39 mountnfs -rwxr-xr-x 1 root root 385 Jul 4 2016 openvpn lrwxrwxrwx 1 root root 32 Aug 8 15:59 wpasupplicant -> ../../wpa_supplicant/ifupdown.sh -- System Information: Debian Release: bullseye/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'oldoldstable'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.2.0-2-amd64 (SMP w/8 CPU cores) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages ifupdown depends on: ii adduser 3.118 ii iproute2 5.3.0-1 ii libc6 2.29-2 ii lsb-base 11.1.0 Versions of packages ifupdown recommends: ii isc-dhcp-client [dhcp-client] 4.4.1-2 Versions of packages ifupdown suggests: ii ppp 2.4.7-2+4.1+b1 pn rdnssd <none> -- Configuration Files: /etc/default/networking changed: CONFIGURE_INTERFACES=no WAIT_ONLINE_METHOD=ifup WAIT_ONLINE_TIMEOUT=1 -- no debconf information