wpa_supplicant 噩梦

mul*_*sen 6 wlan

我一直在摆弄 wpa 请求者好几天了,我终于到了在谷歌上找不到任何新线索的地步。所以问题来了:我刚刚在运行 debian wheezy 的台式电脑上安装了一个新的 tp-link tl-wn881nd pci-e wifi 卡。wlan0声称已连接(ish?见下文)到接入点,ifconfig报告我分配给它的正确静态 IP 地址,但是我无法 ping 接入点并syslog说握手有错误。

首先,我读过可能network-manager会搞砸的事情。我很确定这对我来说不是问题:

$ which NetworkManager
##### blank #####
$ dpkg -l | grep -i network-manager
rc network-manager           0.9.4.0-10    amd-64    network management framework (daemon and userspace tools)
ii network-manager-openvpn   0.9.4.0-1     amd-64    network management framework (OpenVPN plugin core)
Run Code Online (Sandbox Code Playgroud)

我的电脑规格是:

$ uname -a
Linux mypc 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
$ sudo dmidecode | grep -iA3 '^system information'
System Information
    Manufacturer: Dell Inc.                
    Product Name: OptiPlex 745                 
    Version: Not Specified
Run Code Online (Sandbox Code Playgroud)

和wifi卡规格是:

$ lspci | grep -i wireless
02:00.0 Network controller: Atheros Communications Inc. AR9287 Wireless Network Adapter (PCI-Express) (rev 01)
Run Code Online (Sandbox Code Playgroud)

我已确保 wifi 卡处于活动状态:

$ sudo ip link set wlan0 up
$ sudo ip link show wlan0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisk mq state DORMANT mode DORMANT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)

并且该卡能够找到我的 ssid:

$ sudo iw wlan0 scan
BSS xx:xx:xx:xx:xx:xx (on wlan0) -- associated
    TSF: 2639667559 ysec (0d, 00:43:59)
    freq:2412
    beacon interval: 100
    capability: ESS Privacy ShortSlotTime (0x0411)
    signal: -56.00 dBm
    last seen: 692 ms ago
    Information elements from Probe Response frame:
    SSID: aphanumeric_with_underscores
    Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0
    DS Parameter set: channel 1
    ERP: Use_Protection Barker_Preamble_Mode
    Extended supported rates: 6.0 12.0 24.0 48.0
    HT capabilities:
        Capabilities: 0x106e
            HT20/HT40
            SM Power Save disabled
            RX HT20 SGI
            RX HT40 SGI
            No RX STBC
            Max AMSDU length: 3839 bytes
            DSSS/CCK HT40
        Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
        Minimum RX AMPDU time spacing: 4 usec (0x05)
        HT RX MCS rate indexes supported: 0-7, 32
        HT TX MCS rate indexes are undefined
    HT operation:
        * primary channel: 1
        * secondary channel offset: no secondary
        * STA channel width 20MHz
        * RIFS: 0
        * HT protection: non-HT mixed
        * non-GF present: 1
        * OBSS non-GF present: 0
        * dual beacon: 0
        * dual CTS protection: 0
        * STBC beacon: 0
        * L-SIG TXOP Prot: 0
        * PCO active: 0
        * PCO phase: 0
    RSN:* Version: 1
        * Group cipher: CCMP
        * Pairwise ciphers: CCMP
        * Authentication suites: PSK
        * Capabilities: (0x0000)
    WMM:* Parameter version 1
        * BE: CW 15-1023, AIFSN 3
        * BK: CW 15-1023, AIFSN 7
        * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
        * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
    Extended capabilities: HT Information Exchange Supported
    Country: AL Environment: Indoor/Outdoor
        Channels [1 - 13] @ 15 dBm
Run Code Online (Sandbox Code Playgroud)

在某处读到您可以将 wpa_supplicant 选项直接放在 中/etc/network/interfaces,所以这是我的:

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

# don't use `auto wlan0` since this will infinitely try to connect at
# boot time, and i will have to remove the hard drive, mount it on
# another pc and remove `auto wlan0` from this file just to get a
# command prompt again!
iface wlan0 inet static
    wpa-ssid "aphanumeric_with_underscores"
    wpa-psk "my wpa2 password"
    wpa-ap-scan 1
    wpa-proto WPA2
    wpa-pairwise CCMP
    wpa-group CCMP
    wpa-key-mgmt WPA-PSK
    address 192.168.1.50
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

并注意目前没有wpa_supplicant.conf文件:

$ ls /etc/wpa_supplicant.conf
ls: cannot access /etc/wpa_supplicant.conf: No such file or directory
$ ls /etc/wpa_supplicant/*
action_wpa.sh  functions.sh  ifupdown.sh    
Run Code Online (Sandbox Code Playgroud)

现在如果重新启动wlan0界面:

$ sudo ifdown wlan0
$ sudo ifup wlan0
Run Code Online (Sandbox Code Playgroud)

已正确分配 IP 地址:

$ ifconfig
lo       ...

wlan0    Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
         inet addr 192.168.1.50  Bcast:192.168.1.255  Mask:255.255.255.0
         inet6 addr: fe80::16cc:20ff:feea:4578/64 Scope:Link
         UP BROADCAST MULTICAST  NTU:1500  Metric:1
         RX packets:3075 errors:0 dropped:0 overruns:0 frame:0
         TX packets:4028 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:347475 (339.3KiB)  TX bytes:586219 (572.4KiB)
Run Code Online (Sandbox Code Playgroud)

但问题是:wlan0接口似乎已启动,但我无法访问互联网,甚至无法 ping 接入点:

$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.50 icmp_seq=2 Destination Host Unreachable
From 192.168.1.50 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 0 received, +2 errors, 100% packet loss, time 2015ms
Run Code Online (Sandbox Code Playgroud)

当我查看时,/var/log/syslog我看到一些令人讨厌的错误:

Mar 18 01:23:11 mypc kernel: [  148.242137] wlan0: authenticate with xx.xx.xx.xx.xx.xx (try 1)
Mar 18 01:23:11 mypc kernel: [  148.244009] wlan0: authenticated
Mar 18 01:23:11 mypc kernel: [  148.265967] wlan0: associate with xx.xx.xx.xx.xx.xx (try 1)
Mar 18 01:23:11 mypc kernel: [  148.287770] wlan0: RX AssocResp from xx.xx.xx.xx.xx.xx (capab=0x411 status=0 aid=1)
Mar 18 01:23:11 mypc kernel: [  148.287774] wlan0: associated
Mar 18 01:23:11 mypc kernel: [  148.287774] wlan0: associated
Mar 18 01:23:11 mypc wpa_supplicant[4473]: wlan0: Associated with xx.xx.xx.xx.xx.xx
Mar 18 01:23:11 mypc kernel: [  148.297421] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Mar 18 01:23:11 mypc kernel: [  148.297651] cfg80211: Calling CRDA for country AL
Mar 18 01:23:11 mypc kernel: [  148.303008] cfg80211: Regulatory domain changed to country: AL
Mar 18 01:23:11 mypc kernel: [  148.303013] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Mar 18 01:23:11 mypc kernel: [  148.303018] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
Mar 18 01:23:11 mypc kernel: [  148.303022] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 01:23:11 mypc kernel: [  148.303026] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 01:23:11 mypc kernel: [  148.303029] cfg80211: (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2700 mBm)
Mar 18 01:23:19 mypc kernel: [  155.819739] wlan0: deauthenticated from xx:xx:xx:xx:xx:xx (Reason: 15)
Mar 18 01:23:19 mypc wpa_supplicant[4473]: wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
Mar 18 01:23:19 mypc wpa_supplicant[4473]: wlan0: CTRL-EVENT-DISCONNECTED bssid=xx:xx:xx:xx:xx:xx reason=15
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何解决这个问题并通过 ping 我的接入点wlan0


修改 1:尝试使用 dhcp 而不是静态 ip

/etc/network/interfaces是这样改变的:

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

# don't use `auto wlan0` since this will infinitely try to connect at
# boot time, and i will have to remove the hard drive, mount it on
# another pc and remove `auto wlan0` from this file just to get a
# command prompt again!
iface wlan0 inet dhcp
    wpa-ssid "aphanumeric_with_underscores"
    wpa-psk "my wpa2 password"
    wpa-ap-scan 1
    wpa-proto WPA2
    wpa-pairwise CCMP
    wpa-group CCMP
    wpa-key-mgmt WPA-PSK
Run Code Online (Sandbox Code Playgroud)

(请注意,wpa_supplicant.conf修改 1中仍然不存在),现在当我打开界面时,命令行上出现了一些新错误:

$ sudo ifup wlan0
Operation failed.
Failed to bring up wlan0
Run Code Online (Sandbox Code Playgroud)

并且 syslog 像以前一样一遍又一遍地显示相同的失败消息:

Mar 18 08:59:01 mypc kernel: [ 2493.163777] ADDRCONF(NETDEV_UP): wlan0: link is not ready
Mar 18 08:59:02 mypc wpa_supplicant[6151]: wlan0: SME: Trying to authenticate with xx:xx:xx:xx:xx:xx (SSID='alphanumeric_with_underscores' freq=2412 MHz)
Mar 18 08:59:02 mypc kernel: [ 2493.974111] wlan0: authenticate with xx:xx:xx:xx:xx:xx (try 1)
Mar 18 08:59:02 mypc kernel: [ 2493.976083] wlan0: authenticated         
Mar 18 08:59:02 mypc wpa_supplicant[6151]: wlan0: Trying to associate with xx:xx:xx:xx:xx:xx (SSID='aphanumeric_with_underscores' freq=2412 MHz)
Mar 18 08:59:02 mypc kernel: [ 2493.998016] wlan0: associate with xx:xx:xx:xx:xx:xx (try 1)
Mar 18 08:59:02 mypc kernel: [ 2494.019518] wlan0: RX ReassocResp from xx:xx:xx:xx:xx:xx (capab=0x411 status=0 aid=2)
Mar 18 08:59:02 mypc kernel: [ 2494.019523] wlan0: associated            
Mar 18 08:59:02 mypc wpa_supplicant[6151]: wlan0: Associated with xx:xx:xx:xx:xx:xx
Mar 18 08:59:02 mypc kernel: [ 2494.028721] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Mar 18 08:59:02 mypc kernel: [ 2494.028873] cfg80211: Calling CRDA for country: AL
Mar 18 08:59:02 mypc kernel: [ 2494.033830] cfg80211: Regulatory domain changed to country: AL
Mar 18 08:59:02 mypc kernel: [ 2494.033835] cfg80211:     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Mar 18 08:59:02 mypc kernel: [ 2494.033839] cfg80211:     (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:02 mypc kernel: [ 2494.033843] cfg80211:     (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:02 mypc kernel: [ 2494.033846] cfg80211:     (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:02 mypc kernel: [ 2494.033849] cfg80211:     (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2700 mBm)
Mar 18 08:59:09 mypc kernel: [ 2501.499716] wlan0: deauthenticated from xx:xx:xx:xx:xx:xx (Reason: 15)
Mar 18 08:59:09 mypc wpa_supplicant[6151]: wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
Mar 18 08:59:09 mypc wpa_supplicant[6151]: wlan0: CTRL-EVENT-DISCONNECTED bssid=xx:xx:xx:xx:xx:xx reason=15
Mar 18 08:59:09 mypc kernel: [ 2501.536289] cfg80211: Calling CRDA to update world regulatory domain
Mar 18 08:59:09 mypc kernel: [ 2501.541764] cfg80211: World regulatory domain updated:
Mar 18 08:59:09 mypc kernel: [ 2501.541770] cfg80211:     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Mar 18 08:59:09 mypc kernel: [ 2501.541775] cfg80211:     (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:09 mypc kernel: [ 2501.541779] cfg80211:     (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:09 mypc kernel: [ 2501.541782] cfg80211:     (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:09 mypc kernel: [ 2501.541786] cfg80211:     (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:09 mypc kernel: [ 2501.541790] cfg80211:     (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 08:59:09 mypc kernel: [ 2501.541794] cfg80211:     (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm)
Mar 18 08:59:10 mypc wpa_supplicant[6151]: wlan0: SME: Trying to authenticate with xx:xx:xx:xx:xx:xx (SSID='aphanumeric_with_underscores' freq=2412 MHz)
Mar 18 08:59:10 mypc kernel: [ 2502.434112] wlan0: authenticate with xx:xx:xx:xx:xx:xx (try 1)
Mar 18 08:59:10 mypc kernel: [ 2502.436071] wlan0: authenticated
etc
Run Code Online (Sandbox Code Playgroud)

并注意 eth0 与 dhcp 一起工作正常,因此 dhcp 本身没有问题。


修改 2:尝试使用 wpa_passphrase 中的 psk 哈希

$ wpa_passphrase myssid mypassword
network={
    ssid="myssid"
    #psk="mypassword"
    psk=xxxxxxxxxxxx...
}
Run Code Online (Sandbox Code Playgroud)

使用这个新的psk /etc/network/interfaces

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

# don't use `auto wlan0` since this will infinitely try to connect at
# boot time, and i will have to remove the hard drive, mount it on
# another pc and remove `auto wlan0` from this file just to get a
# command prompt again!
iface wlan0 inet dhcp
    wpa-ssid "aphanumeric_with_underscores"
    wpa-psk xxxxxxxxxxxxxxxx
    wpa-ap-scan 1
    wpa-proto WPA2
    wpa-pairwise CCMP
    wpa-group CCMP
    wpa-key-mgmt WPA-PSK
Run Code Online (Sandbox Code Playgroud)

再试一次:

$ sudo iplink set wlan0 down
$ sudo iplink set wlan0 up
$ sudo ifup wlan0
cat: /var/run/wpa_supplicant.wlan0.pid: No such file or directory
Operation failed.
Failed to bring up wlan0.
Run Code Online (Sandbox Code Playgroud)

嗯,那个时候有趣的错误。调查:

$ sudo su
# cd /var/run/wpa_supplicant/
# ls -l
total 0
srwxrwx--- 1 root root 0 Mar 18 09:26 wlan0
# cat wlan0 
cat: wlan0: No such device or address
Run Code Online (Sandbox Code Playgroud)

/var/log/syslog 仍然显示相同的错误。


修改3:设置一个非常基础的ssid和密码

我将 ssidabc和密码设置为abcdefgh

$ wpa_passphrase abc abcdefgh
network={
    ssid="abc"
    #psk="abcdefgh"
    psk=ba89407e92b8efec11c227e3cce9f25c8dcc4b3651fe2be02d91d9ebda96e913
}
Run Code Online (Sandbox Code Playgroud)

但无论我输入了这些预共享密钥中的哪一个,结果都与修改 1 和修改 2 的结果相同 /etc/network/interfaces

$ sudo ip link set wlan0 down                                                   
$ sudo ip link set wlan0 up                                                     
$ sudo ip link show wlan0                                                       
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff                          
$ sudo ifdown wlan0                                                             
ifdown: interface wlan0 not configured                                          
$ sudo rm /var/run/wpa_supplicant/wlan0                                         
$ sudo ifup wlan0                                                               
wpa_supplicant: ctrl_interface socket not found at /var/run/wpa_supplicant/wlan0
run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1     
Operation failed.                                                               
Failed to bring up wlan0.
Run Code Online (Sandbox Code Playgroud)

修改4:在命令行的调试模式下使用wpa_supplicant

/etc/network/interfaces以下位置删除所有 wpa 设置:

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface wlan0 inet dhcp
Run Code Online (Sandbox Code Playgroud)

现在创建wpa_supplicant.conf文件:

$ sudo sh -c 'wpa_passphrase abc abcdefgh > /etc/wpa_supplicant/wpa_supplicant.conf'
Run Code Online (Sandbox Code Playgroud)

编辑文件以包含以下信息:

ap_scan=1
ctrl_interface=DIR=/var/run/wpa_supplicant
ctrl_interface_group=0
network={
    proto=WPA2
    pairwise=CCMP
    group=CCMP
    key_mgmt=WPA-PSK
    ssid="abc"
    #psk="abcdefgh"
    psk=ba89407e92b8efec11c227e3cce9f25c8dcc4b3651fe2be02d91d9ebda96e913
}
Run Code Online (Sandbox Code Playgroud)

wpa_supplicant直接运行:

$ sudo ip link show wlan0
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
$ sudo ip link set wlan0 up
$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with xx:xx:xx:xx:xx:xx (SSID='abc' freq=2412 MHz)
wlan0: Associated with 00:00:00:00:00:00
wlan0: CTRL-EVENT-DISCONNECTED bssid=xx:xx:xx:xx:xx:xx reason=0
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with xx:xx:xx:xx:xx:xx (SSID='abc' freq=2412 MHz)
wlan0: Associated with 00:00:00:00:00:00
wlan0: CTRL-EVENT-DISCONNECTED bssid=xx:xx:xx:xx:xx:xx reason=0
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWSCAN]: Device or resource busy
wlan0: Failed to initiate AP scan
wlan0: Trying to associate with xx:xx:xx:xx:xx:xx (SSID='abc' freq=2412 MHz)
wlan0: Associated with 00:00:00:00:00:00
wlan0: CTRL-EVENT-DISCONNECTED bssid=xx:xx:xx:xx:xx:xx reason=0
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
^Cwlan0: CTRL-EVENT-TERMINATING - signal 2 received
Run Code Online (Sandbox Code Playgroud)

再次,调试详细一点:

$ sudo wpa_supplicant -d -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -f /tmp/wpa_supplicant.tl-wn881nd.errors
Run Code Online (Sandbox Code Playgroud)

看到这里的输出。

ioctl[SIOCSIWENCODEEXT]: Invalid argument它看起来像有可能是无线网卡和内核之间的不兼容?如果是这样,我该如何诊断和解决这个问题?

mul*_*sen 2

该死的 wifi 卡没有正确插入 pci-express 插槽!我把它拿出来,吹掉插槽上的灰尘,然后这次用力地把它推了进去。现在一切正常:

# the wifi led is not lit up on the outside of the pc case

$ sudo ip link show wlan0
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
$ sudo ip link set wlan0 up

# now the wifi led is lit up on the outside of the pc case

$ sudo ip link show wlan0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with 00:60:64:4c:37:fc (SSID='abc' freq=2412 MHz)
wlan0: Associated with 00:60:64:4c:37:fc
wlan0: WPA: Key negotiation completed with 00:60:64:4c:37:fc [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 00:60:64:4c:37:fc completed (auth) [id=0 id_str=]
wlan0: CTRL-EVENT-DISCONNECTED bssid=00:60:64:4c:37:fc reason=0
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with 00:60:64:4c:37:fc (SSID='abc' freq=2412 MHz)
wlan0: Associated with 00:60:64:4c:37:fc
wlan0: WPA: Key negotiation completed with 00:60:64:4c:37:fc [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 00:60:64:4c:37:fc completed (reauth) [id=0 id_str=]
$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=254 time=0.510 ms
64 bytes from 192.168.1.1: icmp_req=2 ttl=254 time=0.578 ms
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.510/0.544/0.578/0.034 ms
Run Code Online (Sandbox Code Playgroud)

正确的/var/log/syslog看起来像这样:

Mar 18 13:38:19 mypc kernel: [  542.538613] wlan0: authenticate with 00:60:64:4c:37:fc (try 1)
Mar 18 13:38:19 mypc kernel: [  542.540517] wlan0: authenticated         
Mar 18 13:38:19 mypc kernel: [  542.540553] wlan0: associate with 00:60:64:4c:37:fc (try 1)
Mar 18 13:38:19 mypc kernel: [  542.563331] wlan0: RX AssocResp from 00:60:64:4c:37:fc (capab=0x411 status=0 aid=3)
Mar 18 13:38:19 mypc kernel: [  542.563336] wlan0: associated            
Mar 18 13:38:19 mypc kernel: [  542.573034] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Mar 18 13:38:19 mypc kernel: [  542.573220] cfg80211: Calling CRDA for country: AL
Mar 18 13:38:19 mypc kernel: [  542.578955] cfg80211: Regulatory domain changed to country: AL
Mar 18 13:38:19 mypc kernel: [  542.578960] cfg80211:     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Mar 18 13:38:19 mypc kernel: [  542.578965] cfg80211:     (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
Mar 18 13:38:19 mypc kernel: [  542.578969] cfg80211:     (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 13:38:19 mypc kernel: [  542.578972] cfg80211:     (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm)
Mar 18 13:38:19 mypc kernel: [  542.578976] cfg80211:     (5490000 KHz - 5710000 KHz @ 80000 KHz), (N/A, 2700 mBm)
Run Code Online (Sandbox Code Playgroud)

这些行只出现一次 - 它们不再一遍又一遍地重复syslog

:)

wpa_supplicant.conf请注意,如果我删除文件并将所有内容放入其中,它现在也可以正常工作/etc/network/interfaces

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

# don't use `auto wlan0` since this will infinitely try to connect at
# boot time, and i will have to remove the hard drive, mount it on
# another pc and remove `auto wlan0` from this file just to get a
# command prompt again!
iface wlan0 inet static
    wpa-ssid "aphanumeric_with_underscores"

    # both the plaintext password and the ascii-hex hash from
    # wpa_passphrase work fine for me here:
    wpa-psk "my wpa2 password"

    wpa-ap-scan 1
    wpa-proto WPA2
    wpa-pairwise CCMP
    wpa-group CCMP
    wpa-key-mgmt WPA-PSK
    address 192.168.1.50
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
and note that there is currently no wpa_supplicant.conf file:

$ ls /etc/wpa_supplicant.conf
ls: cannot access /etc/wpa_supplicant.conf: No such file or directory
$ ls /etc/wpa_supplicant/*
action_wpa.sh  functions.sh  ifupdown.sh  
Run Code Online (Sandbox Code Playgroud)