尝试连接到 wifi 时“通过本地选择中止身份验证(原因:3=DEAUTH_LEAVING)”

GPr*_*raz 17 wifi dhcp wlan

我在我的 PC 上安装了 64 位 Debian 9 stretch(GNOME 桌面)。安装 atheros 固件后自动检测到我的 USB 无线适配器 (TP-LINK TL-WN722N):

apt-get install firmware-atheros
Run Code Online (Sandbox Code Playgroud)

但是我无法连接到任何无线框架,无论它们是受密码保护还是不受保护。

我插上了我的USB。它被检测到,发送身份验证,得到身份验证,但立即中止身份验证。禁用 IPV6 并没有解决我的问题.. 这是我的dmesg报告:

[   59.880805] usb 1-1.4: new high-speed USB device number 4 using ehci-pci
[   60.005727] usb 1-1.4: New USB device found, idVendor=0cf3, idProduct=9271
[   60.005729] usb 1-1.4: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[   60.005731] usb 1-1.4: Product: USB2.0 WLAN
[   60.005732] usb 1-1.4: Manufacturer: ATHEROS
[   60.005734] usb 1-1.4: SerialNumber: 12345
[   60.324981] usb 1-1.4: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
[   60.325069] usbcore: registered new interface driver ath9k_htc
[   60.348095] usb 1-1.4: firmware: direct-loading firmware ath9k_htc/htc_9271-1.4.0.fw
[   60.629962] usb 1-1.4: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size: 51008
[   60.880826] ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits
[   61.111895] ath9k_htc 1-1.4:1.0: ath9k_htc: FW Version: 1.4
[   61.111897] ath9k_htc 1-1.4:1.0: FW RMW support: On
[   61.111899] ath: EEPROM regdomain: 0x809c
[   61.111900] ath: EEPROM indicates we should expect a country code
[   61.111901] ath: doing EEPROM country->regdmn map search
[   61.111911] ath: country maps to regdmn code: 0x52
[   61.111912] ath: Country alpha2 being used: CN
[   61.111912] ath: Regpair used: 0x52
[   61.122477] ieee80211 phy0: Atheros AR9271 Rev:1
[   61.185069] ath9k_htc 1-1.4:1.0 wlx18a6f7160a49: renamed from wlan0
[   61.224640] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
[   61.361032] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
[   61.535923] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
[   61.743450] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
[   69.190250] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
[   70.360621] wlx18a6f7160a49: authenticate with 74:23:44:dc:0f:d7
[   70.551637] wlx18a6f7160a49: send auth to 74:23:44:dc:0f:d7 (try 1/3)
[   70.556012] wlx18a6f7160a49: authenticated
[   75.555233] wlx18a6f7160a49: aborting authentication with 74:23:44:dc:0f:d7 by local choice (Reason: 3=DEAUTH_LEAVING)
[   76.872114] wlx18a6f7160a49: authenticate with 74:23:44:dc:0f:d7
[   77.061146] wlx18a6f7160a49: send auth to 74:23:44:dc:0f:d7 (try 1/3)
[   77.065158] wlx18a6f7160a49: authenticated
[   82.061225] wlx18a6f7160a49: aborting authentication with 74:23:44:dc:0f:d7 by local choice (Reason: 3=DEAUTH_LEAVING)
[   83.775718] wlx18a6f7160a49: authenticate with 74:23:44:dc:0f:d7
[   83.965040] wlx18a6f7160a49: send auth to 74:23:44:dc:0f:d7 (try 1/3)
[   83.969807] wlx18a6f7160a49: authenticated
[   88.969792] wlx18a6f7160a49: aborting authentication with 74:23:44:dc:0f:d7 by local choice (Reason: 3=DEAUTH_LEAVING)
[   91.207178] wlx18a6f7160a49: authenticate with 74:23:44:dc:0f:d7
[   91.395860] wlx18a6f7160a49: send auth to 74:23:44:dc:0f:d7 (try 1/3)
[   91.400263] wlx18a6f7160a49: authenticated
[   93.996839] wlx18a6f7160a49: aborting authentication with 74:23:44:dc:0f:d7 by local choice (Reason: 3=DEAUTH_LEAVING)
[   94.061841] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
[   94.233433] IPv6: ADDRCONF(NETDEV_UP): wlx18a6f7160a49: link is not ready
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会发生这种情况,也不知道为什么在一次尝试中多次中止。

编辑:iwconfig 报告:

enp3s0    no wireless extensions.

wlx18a6f7160a49  IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

lo        no wireless extensions.
Run Code Online (Sandbox Code Playgroud)

GPr*_*raz 16

不知何故,我的固件遇到了长接口名称的问题。所以我运行了这个命令来防止它:

ln -s /dev/null /etc/systemd/network/99-default.link
Run Code Online (Sandbox Code Playgroud)

它奏效了。

  • 虽然我同意这是一个功能性的解决方法,但如果有人能更好地解释“为什么”,那就太棒了……我的猜测是它与 NetworkManager 中的某些内容有关,但这纯粹是一种平底船。 (3认同)
  • 这适用于我的 Ralink MTK7601u 无线适配器。`$ sudo nmcli dev wifi connect MySSID` 引发错误消息,如`Error: Connection activation failed: (53) The Wi-Fi network could not be found.` dmesg 报告几乎相同。 (2认同)

小智 9

正如其他人所说,该问题是由设备获得的非标准名称引起的(即不是 wlan*)。链接 /dev/null 对我不起作用,所以我必须创建一个 udev 规则来重命名接口:

/etc/udev/rules.d/70-persistent-net.rules
Run Code Online (Sandbox Code Playgroud)

添加:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?\*", ATTRS{product}=="802.11 n WLAN", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"
Run Code Online (Sandbox Code Playgroud)

调整ATTRS{product}到您的特定设备。检查如何在此处找到它


rod*_*pes 5

正如其他人所说,该问题是由设备获取的非标准名称引起的(即不是 wlan*)。以下是使用systemd.networkdNetworkManager时设置网络接口名称的正确方法。

systemd.networkd

虽然链接到/dev/null可以解决问题,但正确的方法是创建.link file设备名称设置。

/etc/systemd/network/50-wlan.link使用以下内容创建:

[Match]
Type=wlan

[Link]
Name=wlan0
Run Code Online (Sandbox Code Playgroud)

重启或者重启网络查看结果:udevadm info /sys/class/net/wlan0 | grep ID_NET_NAME=

更多详细信息和调试信息可以在这里找到: https: //www.freedesktop.org/software/systemd/man/systemd.link.html

网络管理器

使用 NetworkManager 时,可以通过在 /etc/udev/rules.d 目录中创建规则来实现接口重命名。

/etc/udev/rules.d/70-rename-wlan.rules使用以下内容创建:

SUBSYSTEM=="net", ACTION=="add", KERNEL=="wlan*", NAME="wlan0"
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,您应该会wlan0reboot.

root@bananapi:~# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group 
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group 
Run Code Online (Sandbox Code Playgroud)

并且您可以使用 来连接到 wifi nmcli d wifi connect MEU_WIFI_SSID password MEU_PASSWORD。将nmcli保持连接并在重新启动后重新连接。