wpa_supplicant 偶尔需要手动重新关联

wpa_supplicant 偶尔需要手动重新关联

我最近在笔记本电脑上重新安装了 Debian 10。在此之前,我家的 AP 无线连接工作正常(无延迟、无断线……)。

但自从重新安装后,当我的笔记本电脑连接到 AP 时有时我的笔记本电脑无法通过无线接口连接任何东西

笔记本电脑是Debian 10

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

$ uname -a
Linux XXXX 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux

我在用着wpa_supplicant v2.8-开发连接到我的 AP 和isc-dhclient-4.4.1从中获取 IP 地址。

这个问题没有固定的频率。有时我的笔记本电脑 5 分钟内就会断网,有时几个小时都没有问题。

当我意识到我的笔记本电脑失去连接时,我只需执行sudo wpa_cli reassociatesudo wpa_cli reconfigure也可以工作),一切就会重新开始工作。

当我的笔记本电脑“断开连接”时,wpa_supplicant仍然连接到我家的 AP:

$ sudo wpa_cli status
bssid=b0:bb:e5:aa:bb:cc
freq=5260
ssid=MY-SSID
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.1.47
address=f4:8c:50:aa:bb:cc
uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ieee80211ac=1

iproute2仍显示现有的 IP 地址:

$ ip a s wlo1
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f4:8c:50:aa:bb:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.47/24 brd 192.168.1.255 scope global dynamic wlo1
       valid_lft 59381sec preferred_lft 59381sec

在我的家庭网络之外什么都无法访问:

$ ping -c4 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.
From 192.168.1.47 icmp_seq=1 Destination host unreachable
From 192.168.1.47 icmp_seq=2 Destination host unreachable
From 192.168.1.47 icmp_seq=3 Destination host unreachable
From 192.168.1.47 icmp_seq=4 Destination host unreachable

--- 9.9.9.9 ping statistics ---
4 packets transmitted, 0 received, 4 errors, 100% packet loss, time 54ms pipe 4

笔记本电脑仍具有其默认网关:

$ ip r
default via 192.168.1.254 dev wlo1  
192.168.1.0/24 dev wlo1 proto kernel scope link src 192.168.1.47

但甚至连 AP 都无法访问:

$ ping -c4 192.168.1.254
PING 192.168.1.254 (192.168.1.254) 56(84) bytes of data.
From 192.168.1.47 icmp_seq=1 Destination host unreachable
From 192.168.1.47 icmp_seq=2 Destination host unreachable
From 192.168.1.47 icmp_seq=3 Destination host unreachable
From 192.168.1.47 icmp_seq=4 Destination host unreachable

--- 9.9.9.9 ping statistics ---
4 packets transmitted, 0 received, 4 errors, 100% packet loss, time 36ms pipe 4

我必须输入以下wpa_cli内容才能将笔记本电脑重新关联到 AP:

$ sudo wpa_cli

wpa_cli v2.8-devel
Copyright (c) 2004-2019, Jouni Malinen <[email protected]> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'wlo1'

Interactive mode

> reassociate
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>SME: Trying to authenticate with b0:bb:e5:aa:bb:cc (SSID='MY-SSID' freq=5260 MHz)
<3>Trying to associate with b0:bb:e5:aa:bb:cc (SSID='MY-SSID' freq=5260 MHz)
<3>Associated with b0:bb:e5:aa:bb:cc
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>WPA: Key negotiation completed with b0:bb:e5:aa:bb:cc [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to b0:bb:e5:aa:bb:cc completed [id=0 id_str=]
>

此后,一切运行正常,直到下次断开连接。

但我不知道这个问题的原因是什么......

wpa_supplicant 配置文件非常精简(和重新安装之前一样,没有~50 个其他 AP 配置):

$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
update_config=1
p2p_disabled=1
fast_reauth=1

network={
    ssid="MY-SSID"
    psk="XXXXX"
}

我以与以前相同的方式启动 wpa_supplicant 守护进程:

sudo wpa_supplicant -B -i wlo1 -c /etc/wpa_supplicant/wpa_supplicant.conf

内核环缓冲区没有显示任何有趣的内容:

[64851.308454] wlo1: deauthenticating from b0:bb:e5:aa:bb:cc by local choice (Reason: 2=PREV_AUTH_NOT_VALID)
[64851.320788] wlo1: authenticate with b0:bb:e5:aa:bb:cc
[64851.328643] wlo1: send auth to b0:bb:e5:aa:bb:cc (try 1/3)
[64851.335289] wlo1: authenticated
[64851.336970] wlo1: associate with b0:bb:e5:aa:bb:cc (try 1/3)
[64851.340532] wlo1: RX ReassocResp from b0:bb:e5:aa:bb:cc (capab=0x511 status=0 aid=69)
[64851.343218] wlo1: associated
[64851.394031] wlo1: Limiting TX power to 23 (23 - 0) dBm as advertised by b0:bb:e5:aa:bb:cc

第一行取消认证是通过重新关联引起的wpa_cli。最后一行关于 wlo1(当连接丢失时)没有显示任何内容,并且在问题发生之前很久就出现了。

我不知道这里还能给出什么。我也不知道这里的问题是什么...

对于先前进行的研究:

  • wpa_supplicant 是唯一管理我的 AP 连接的软件(例如与 NetworkManager 没有冲突)
  • 我的 AP 上的其他设备没有问题
  • 如果没有手动操作,wpa_supplicant 将不会重新关联自身
  • 即使 NIC 正在使用,笔记本电脑也会断开连接
  • 有些帖子建议正确设置REGDOMAIN/etc/default/crda

什么都没起作用。所以如果这里有人知道我应该寻找什么...

或者有人可能有魔术吗?

祝你今天过得愉快!

相关内容