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

Reply via email to