您的位置:首页 > 运维架构 > Linux

CentOS 命令行下连接加密模式为 WPAWPA2-PSK 的无线网络

2015-07-08 10:27 579 查看
CentOS 最小化安装后如何配置和连接无线网络,当时的情况是路由器使用的 WEP 加密方式,所以设置密码的时候可以直接使用明文密码。后来当把路由器的加密模式设置为 WPA/WPA2-PSK的时候,发现已经无法连接无线网络了,原因是当使用 WPA/WPA2-PSK 加密模式之后客户端不能直接发送明文密码,而是要使用加密之后的密码,既然我们知道了原因我,们该怎么做呢。
首先我们要安装一个帮我们生成加密密码并配置网卡的工具包 wpa_supplicant
yum install -y wpa_supplicant
然后找到我们路由的 ESSID,比如我是 long,然后生成密码配置文件,

wpa_passphrase long 'my password'
它会输出如下内容

network={
ssid="long"
#psk="my password"
psk=350fb537ccec9b6de427eb4a43b7e02ae0492a59ce0a095ac6b527aef2c40f94
}
将输入的内容追加到 /etc/wpa_supplicant/wpa_supplicant.conf
或者直接执行

wpa_passphrase long 'my password' >> /etc/wpa_supplicant/wpa_supplicant.conf
再把其中 ssid= 和 psk= 加入到wlan0 的配置文件,或执行一下命令

wpa_passphrase long 'my password' | grep -v '{\|}' >> /etc/sysconfig/network-scripts/ifcfg-wlan0
echo 'WPA=yes' >> /etc/sysconfig/network-scripts/ifcfg-wlan0
我的配置文件内容如下:

DEVICE=wlan0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.5
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
WPA=yes
SSID="long"
PSK=350fb537ccec9b6de427eb4a43b7e02ae0492a59ce0a095ac6b527aef2c40f94
然后,我们可以启动网络设备

ifup wlan0
再启动 wpa_supplicant

wpa_supplicant -iwlan0 -B -c /etc/wpa_supplicant/wpa_supplicant.conf
我们需要随机启动的话,加入到 /etc/rc.local

cat >> /etc/rc.local<<EOF
wpa_supplicant -iwlan0 -B -c /etc/wpa_supplicant/wpa_supplicant.conf
EOF
参考地址:http://zpz.name/2292/

不依赖 NetworkManager 启用 wpa_supplicant,更新版

参考:http://wiki.centos.org/zh/HowTos/Laptops/WpaSupplicant
此更新是个较为简单的方法令 wifi 界面在开机的过程中自动连接。原有的版本已收录在下文供参考。
为何要有更新版?
较易实践
更完整的指引
无须修改在系统更新时会被复盖的文件
支持以 service network restart 重新连接
编辑 /etc/sysconfig/network-scripts/ifcfg- 档
执行 iwconfig 来找出 wifi 设备。在这个样例输出,wlan0 是唯一支持 wifi 的设备。

# iwconfig
lo no wireless extensions.

wlan0 IEEE 802.11bgn ESSID:"NETWORKSSID"
Mode:Managed Frequency:2.462 GHz Access Point: 68:7F:74:AD:F3:3C
Bit Rate=54 Mb/s Tx-Power=16 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=50/70 Signal level=-60 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:90 Missed beacon:0

eth0 no wireless extensions.

pan0 no wireless extensions.

virbr0 no wireless extensions.

virbr0-nic no wireless extensions.

#
编辑这个界面的 ifcfg。就以 wlan0 为例:

/etc/sysconfig/network-scripts/ifcfg-wlan0
确保 ONBOOT 这个选择已被启用。

ONBOOT="yes"
编辑 /etc/sysconfig/wpa_supplicant
请确保你的设备已包含在此文件的 INTERFACES 行内。在这个例子中,wlan0 是唯一获 wpasupplicant 支持的设备。
备注:首先要安装yum install -y wpa_supplicant
# Use the flag "-i" before each of your interfaces, like so:
# INTERFACES="-ieth1 -iwlan0"
INTERFACES="-iwlan0"
编辑 /etc/wpa_supplicant/wpa_supplicant.conf

你多数的网络都需要在 wpa_supplicant.conf 内拥有如下的设置一则。请为每个网络填入相属的 NETWORKSSID 及 NETWORKPSK 数值。请以你选用它们的优先次序来进行排序。

network={
ssid="NETWORKSSID"
scan_ssid=1
key_mgmt=WPA-PSK
psk="NETWORKPSK"
}
以下样例是一个不采用预先共享金钥的网络。要是它被放置于 any 网络之前,它会比其它公开网络获优先选用。

network={
ssid="PUBLIC"
key_mgmt=NONE
}
最后一个选项(你或许不想选用它)可让你连接至任何公开网络。这个选项在酒店很奏效,但可能会连接至不理想的网络。

network={
key_mgmt=NONE
}
编辑 /etc/rc5.d/S09prepnet

贴入以下文字来创建一个新文件,它会执行 wifi 连接所须的后台服务。

cat > /etc/init.d/prepnet <<EoT
#!/bin/sh

/etc/init.d/messagebus start
/etc/init.d/wpa_supplicant start
killall dhclient >/dev/null 2>&1
EoT
chmod a+rx /etc/init.d/prepnet
ln -s /etc/init.d/prepnet /etc/rc3.d/S09prepnet
ln -s /etc/init.d/prepnet /etc/rc5.d/S09prepnet
设置在开机时执行的服务

Paste the following commands to configure services.

chkconfig messagebus off
chkconfig wpa_supplicant off
chkconfig NetworkManager off
chkconfig network on
重新开机来启用它

下次重新开机的时候,你的 wifi 连接在网络服务引导时便会被启用。

新增或编辑 wifi 网络

如果你需要新增或编辑 wifi 网络,请改动 wpa_supplilcant.conf。

/etc/wpa_supplicant/wpa_supplicant.conf
接着重新引导 wpa_supplicant 及 network 服务。

service wpa_supplicant restart
service network restart
不依赖 NetworkManager 启用 wpa_supplicant,原装版

如果你像我一般,只会进出数个受 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 所做的改动会自行引导这个界面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: