需要重启网络接口并杀死wpa_supplicant,如何解决?

Nik*_*man 5 networking wpa-supplicant

我的工作场所对他们的 WiFi 网络使用 802.11x 身份验证,每天有几次我从网络启动,需要执行以下操作:

  1. 禁用网络
  2. 须藤杀 -9
  3. 重启网络

此时,机器就可以正常连接网络了。我在系统日志中没有看到任何奇怪之处,并且我正在运行 Ubuntu 12.04(64 位)。可能有什么问题?

小智 13

我有同样的问题。事实证明,当存在多个接入点 (AP) 时,网络管理员在切换接入点 (AP) 时有点过分热情。你有两个选择

  1. 使用 iwlist 找出有多少 AP:

    root@debian:/home/nofrills# iwlist wlan0 scan
    
    Scan completed :
      Cell 01 - Address: 00:1E:58:A1:41:87
                ESSID:"iiserk_wireless"
                Mode:Managed
                Frequency:2.462 GHz (Channel 11)
                Quality:4/5  Signal level:-64 dBm  Noise level:-92 dBm
                IE: IEEE 802.11i/WPA2 Version 1
                    Group Cipher : TKIP
                    Pairwise Ciphers (2) : TKIP CCMP
                    Authentication Suites (1) : 802.1x
                   Preauthentication Supported
                Encryption key:on
                Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                          12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                          48 Mb/s; 54 Mb/s
    
      Cell 02 - Address: 00:1E:58:A1:54:7B
                ESSID:"iiserk_wireless"
                #More such details
    
    Run Code Online (Sandbox Code Playgroud)

    然后记下具有最高Quality的单元格的地址。那是离你最近的AP。然后单击网络管理器小程序,选择“编辑连接”并转到列出的 wifi 网络。将出现一个标题为“BSSID”的文本框。在那里粘贴单元格地址。

  2. 否则,您可以完全放弃网络管理器并使用 wpa_supplicant(网络管理器无论如何都会在幕后使用它)。只需创建一个配置文件并以这种方式编辑您的 /etc/network/interfaces :

    auto lo
    iface lo inet loopback
    
    auto wlan0
    iface wlan0 inet dhcp
        pre-up wpa_supplicant -B -Dwext -i wlan0 -c/etc/wpa_supplicant.conf
        post-down killall -q wpa_supplicant 
    
    Run Code Online (Sandbox Code Playgroud)

选项 1 不是很有用,除非您大部分时间都在大致相同的工作地点工作。选项 2 是我现在正在使用的,而且效果很好。但是wifi在挂起/恢复后不会自动重新连接,因此您需要/etc/init.d/networking/restart手动运行。

如果您喜欢整洁地做事,作为通用killall命令的替代,您可以使用 WPA 特定工具wpa_client

wpa_cli -i wlan0 terminate
Run Code Online (Sandbox Code Playgroud)