启用 wpa_supplicant 而不需要 NetworkManager

如果你像我一般,只会进出数个受 WPA 保护的无线网络,而且想笔记本在开机时连接到本地的无线网络,这里有一个简单的方法。

请注意你可以利用 NetworkManager 来达成目的,但它缺省不会在开机时连接到一个网络 —— NetworkManager 需要一位用户登录,并将金钥环的访问权赋予它,好让它能取回 WPA 金钥。

这里是一个启用 wpa_supplicant 而不需要 NetworkManager 的方法,并且令计算机在开机时连接。你有必要编辑配置文件,因此假若你不太乐意这样做,你应该考虑采用 NetworkManager

编辑 /etc/wpa_supplicant/wpa_supplicant.conf

你多数的网络都会需要在 wpa_supplicant.conf 内拥有一个如此的记录:

network={
        ssid="MYNETWORKSSID"
        scan_ssid=1
        key_mgmt=WPA-PSK
        psk="MYNETWORKPSK"
}

明显地,你必须以你想连接的网络的 SSID 及 PSK 来取代 MYNETWORKSSID 及 MYNETWORKPSK。

编辑 /etc/sysconfig/network-scripts/ifup-wireless

请在这个文件的底部加入下列内容:

if [ "$WPA" = "yes" -a -x /etc/init.d/wpa_supplicant ]; then
    /sbin/service wpa_supplicant start
fi

编辑 /etc/sysconfig/network-scripts/ifcfg-*

在 /etc/sysconfig/network-scripts 内有数个描述网络界面的文件,例如 ifcfg-eth0(大概是你的乙太网络),及一个名叫 ifcfg-wlan0 或 ifcfg-eth1 的文件,用来描述你的无线网络。

用来描述你的无线网络界面的文件应该含有以下一行:

TYPE=Wireless

请在这个文件的底部加入以下一行:

WPA=yes

编辑 /etc/rc.d/rc.local

我们现在已经设置 wpa_supplicant 在你的无线网络界面引导时一起引导。很不幸地,CentOS 的脚本引导次序并不正确 —— 它会尝试在 DBUS 引导前引导无线网络(并带动 wpa_supplicant),然而 wpa_supplicant 需要 DBUS 才能连作。

最简单快捷的解决方法就是在 /etc/rc.d/rc.local 的底部加入下面这行,让你的无线网络最迟引导:

/sbin/ifup eth1

(如果你的无线界面是 wlan0,这便是 /sbin/ifup wlan0)。

这样做会让所需的程序预先执行,然后在开机过程结束时引导无线界面及 wpa_supplicant。

在开机时停用界面及 wpa_supplicant

由於我们在相关的网络界面 ifup 脚本里直接引导 wpa_supplicant,我们无需在开机时利用 init 引导它。请这样停止它:

chkconfig wpa_supplicant off

你亦可以通过 Network Device Control 应用程序来阻止无线网络界面(eth1 或 wlan0)於开机时自动引导,这是由於我们在 rc.local 所做的改动会自行引导这个界面。

Translation of revision 5

zh/HowTos/Laptops/WpaSupplicant (last edited 2010-01-18 06:19:36 by TimothyLee)