这个问题困扰了我好几周,最终某个地方看到了这句话 Enabling wpa_supplicant without NetworkManager,于是问题解决了。
先说说我的问题,我用了两款USB无线网卡—— TOTOLINK N500UA 和 linksys wusb 600N,在Ubuntu下点右上角的网络图标选择wifi热点,可以连上也可以上网。
但是我使用wpa_supplicant -iwlan2 -Dnl80211 -c wpa_supplicant.conf 不管是WEP/WPA/WPA2加密方式都有问题。
我都快被下面这个打印给逼疯了:
WPA: 4-Way Handshake failed - pre-shared key may be incorrect
期间尝试过wireshark 抓包,4-way handshake就只能到第二步(只能抓2个包),但是用Ubuntu系统自带的网络图标选择wifi热点去连,就能抓4个包。
搜索了无数次,有怀疑过wpa_supplicant.conf的配置、驱动不匹配等,还去官网下了包wpa_supplicant编译了一把(原本是用apt-get安装的),依旧有问题。
不怕大家笑话,我都想亲自计算一下4-way handshake中的各种数据,看到底哪里不对,找半天每找到怎么算。
一气之下,执行了一把sudo apt-get remove wpasupplicant顺带把下面的包都给卸载了
network-manager network-manager-gnome wpasupplicant
然后使用我自己编译的wpa_supplicant去连,发现居然连上了,提升Connected。
可惜,我当时没在意,我在意的是我一卸载wpa_supplicant没办法上网了,我又ifconfig eth0 up; udhcpc -i eth0 后把network-manager装了一把。
然后用我自己的wpa_supplicant又提示WPA: 4-Way Handshake failed - pre-shared key may be incorrect
后来由于其他的事情,这个事就耽搁了一段时间。后来我使用我自己的TOTOLINK N500UA一连问题依旧,我就知道这肯定不是网卡的问题了。
没有任何办法之后,我想起之前我成功的连过一次,看能不能复现一下。我又重新卸载了一把network-manager,然后调用wpa_supplicant命令,果然连上了!
在网上一查,发现了这句话:Enabling wpa_supplicant without NetworkManager
意思就是在没有NetworkManager的情况下打开wpa_supplicant,原因呢就是NetworkManager会干扰wpa_supplicant,具体怎么干扰就不清楚了,希望了解的筒子给解答一下。
Ubuntu下wpa_supplicant使用:http://www.linuxdiyf.com/linux/7509.html
Linux无线网络设置(wpa_supplicant的使用):http://www.linuxdiyf.com/linux/4376.html