我有一台带有 Linux3.2 内核的 Debian 7 机器和一个带有 Atheros 芯片组 (D-Link DWA-16 Xtreme N Dual Band) 的 USB wifi 适配器,理论上来说应该管用。
事实上,我设法与 NetworkManager 建立了 wifi 通信,并且它或多或少工作正常大约 30 分钟,但随后断开连接并且无法重新建立连接。
我无法重新建立与 NetworkManager 的连接,它成功关联并进行身份验证,开始 4 向握手,但随后由于以下原因取消身份验证原因15(4次握手超时)。
然后我尝试通过旧方法ifupdown
通过在以下位置创建一个条目来执行相同的操作/etc/network/interfaces
:
allow-hotplug wlan1
iface wlan1 inet static
wpa-ssid MyNet
wpa-psk <My key hash generated by `wpa_passphrase MyNet key`>
address 192.168.1.2
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers a.b.c.d
当我 时sudo ifup wlan1
,它表现得合理,直到:
wpa_supplicant[8258]: wlan1: Associated with <router's MAC>
wpa_supplicant[3402]: wlan1: No network configuration found for the current AP
(从 /var/log/syslog
)。Wireshark
看到 ARP 包从我的 wifi 适配器发送到路由器,但路由器没有回复。
您对这意味着什么以及如何解决此问题有任何想法吗?
解决方案:
感谢 peterph 的建议,我尝试在前台和后台创建wpa_supplicant.conf
并wpa_supplicant
作为独立程序运行,然后wpa-conf wpa_supplicant.conf
在/etc/network/interfaces
.
sudo wpa_supplicant -iwlan1 -c/etc/wpa_supplicant/wpa_supplicant.conf -d
sudo wpa_supplicant -iwlan1 -c/etc/wpa_supplicant/wpa_supplicant.conf -B
当我杀死一个正在运行的NetworkManager
.看来是有干扰了。
第二个问题是四次握手失败。当我在接入点上禁用 MAC 地址过滤时,一切顺利。我的 wifi 接口的 MAC 在可用 MAC 列表中,但由于某种原因它仍然无法与路由器上的 MAC 过滤连接。
更新2:问题又回来了。四次握手再次失败。重新加载驱动程序没有帮助。
答案1
这种问题最好分成独立的部分。在这种情况下,ifupdown
完全规避并手动执行所有步骤 - 即:
wpa_supplicant
使用适当的配置文件运行连接建立后,运行 dhcp 客户端,
要检查如何ifupdown
运行wpa_supplicant
- 它必须在文件中传递某种配置,您可以拦截 - 检查运行ps fax | grep wpa_supplicant
时的输出ifupdown
- 选项的参数-c
是(可能是即时生成的)的名称配置文件。
如果您出于某种原因决定转用ifupdown
,您可能会对wicd
,它由一个由各种 UI(ncurses、GTK、Qt)控制的守护进程组成。
顺便说一句,一些 DHCP 客户端能够通过wpa_supplicant
自己生成来建立无线连接(我见过dhcpcd
这样做)——当人们尝试调试连接问题时,这可能会非常有趣(并且会造成干扰)。
答案2
这是我在调试不稳定的无线设备时尝试的顺序。
- 重启可以解决问题吗?
尝试卸载与无线设备相关的内核驱动程序。具有以下效果:
$ lsmod | grep iw iwlagn 209751 0 iwlcore 195714 1 iwlagn mac80211 229095 2 iwlagn,iwlcore cfg80211 134981 3 iwlagn,iwlcore,mac80211 $ sudo rmmod iwlagn $ sudo rmmod iwlcore $ modprobe iwlagn
调查与通过 报告的无线设备相关的任何消息
dmesg
。例如:$ dmesg ... ... [207981.191849] mac80211: Unknown parameter `ieee80211_disable_40mhz_24ghz:Disable' [207988.895378] mac80211: `Disable' invalid for parameter `ieee80211_disable_40mhz_24ghz' [208280.841725] iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree:d [208280.841727] iwlagn: Copyright(c) 2003-2010 Intel Corporation [208280.841826] iwlagn 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [208280.841857] iwlagn 0000:03:00.0: setting latency timer to 64 [208280.842798] iwlagn 0000:03:00.0: Detected Intel(R) Centrino(R) Wireless-N 1000 BGN, REV=0x6C [208280.863413] iwlagn 0000:03:00.0: Tunable channels: 13 802.11bg, 0 802.11a channels [208280.863582] iwlagn 0000:03:00.0: irq 48 for MSI/MSI-X [208280.898025] iwlagn 0000:03:00.0: loaded firmware version 128.50.3.1 build 13488 [208280.898725] phy1: Selected rate control algorithm 'iwl-agn-rs' [208281.154937] ADDRCONF(NETDEV_UP): wlan0: link is not ready [208282.101156] wlan0: authenticate with 30:46:9a:47:4c:d4 (try 1) [208282.104128] wlan0: authenticated [208282.104164] wlan0: associate with 30:46:9a:47:4c:d4 (try 1) [208282.106911] wlan0: RX AssocResp from 30:46:9a:47:4c:d4 (capab=0x411 status=0 aid=3) [208282.106914] wlan0: associated [208282.111520] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [208292.608637] wlan0: no IPv6 routers present
答案3
也有很长一段时间的hand shake
+FAIL
问题。 ( gentoo
| Arch
) 论坛中的任何解决方案都不stackexchange
适合我。
我使用的是最基本的Linux ,void
仅使用必要的程序dhcpcd
。wpa_supplicant
最终奏效的方法花了我很长时间,但没有其他机会,因为:
- LAN 电缆母头连接器也被损坏,没有任何更换部件可以从 DigiKey|Farnell|Reichelt|Conrad|Mouser|Amazon 的任何电子经销商处获得,因为它是半高变体,没有部件标签|编号|提示。
- 将单股线焊接到主板上,真是一个疯狂的努力,不要在家里这样做哈哈,在工作时,需要细(非常细)的柔性电线,以免短路或断裂!
- Lenovo 引导加载程序中不支持硬编码的替换
WLAN chip
(以排除损坏的硬件) 。hardware whitelist
是的,真的很棒,兼容,但只是没有列出,因此失败了,哇,只是哇。Hard coded white list
!联想!常识?
因此,经过大量的试验和错误,调试时间出现了另一个修复(可能性),我想与社区分享。
每次重新启动后都适用的解决方案: 1
sudo wpa_cli # fail
sudo xbps-install -Syv NetworkManager
sudo ln -s /etc/sv/NetworkManager /var/service/
2(开机后可能会自动运行。)
sudo sv up NetworkManager
sudo wpa_cli # works half way (scan possible but association fails)
sudo sv down NetworkManager
sudo wpa_cli # fail
sudo sv restart dhcpd
sudo wpa_cli # works
确保 dhcpcd、wpa_supplicant、正确的网络接口已启动|并运行,并且 /etc/wpa_supplicant/wpa_supplication.conf 中使用网络接口(例如 wlan0 或 wlp2s),id est:
sudo vi /etc/sv/wpa_supplicant/run # Change all occurrences of the default interface name like e.g. "wlan0" to the correct interface as shown by ip link command, exempli gratia "wlp2s".
看来 NetworkManager 有一定的效果,那就是修复!我还没有时间去调查它到底是什么。