linux 无线上网(network manager+wpa_supplicant )

来源:互联网 发布:mysql官方文档 编辑:程序博客网 时间:2024/05/17 04:07
如果要通过network manager+wpa_supplicant的话可以参考
http://www.ces.clemson.edu/linux/nm.shtml
但必须参考http://live.gnome.org/NetworkManagerHardware,查看被networkmanager支持的硬件

Using wpa_supplicant on Linux to Connect to the
University of Birmingham (Bham) Campus WirelessNetwork(大学设置指引)
http://www.cs.bham.ac.uk/~axs/laptop/wpa/

在你的笔记型(或桌上)计算机上运用无线网络(官方含各种经测试的网卡)
http://wiki.centos.org/zh/HowTos/Laptops/Wireless#head-2a7bdc6b191f12f16cb4d17a
34e75dfce097e60a

Enabling wpa_supplicant withoutNetworkManager(官方文档,涉及网卡的WPA设置)
http://wiki.centos.org/HowTos/Laptops/WpaSupplicant

Linux无线网络配置(两种系统的设置简要步骤)
http://hi.baidu.com/chinakkmm/blog/item/fba3bf298e595a96023bf669.html

Gentoo Linux文档--无线网络(非常详细的配置解释)
http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=4&chap=4#doc_chap4

在 Linux 下访问无线局域网
http://www.linuxfocus.org/ChineseGB/December2004/article361.shtml

Fedora Core 3 T42 Automatic Network Access
http://www.ces.clemson.edu/linux/auto_connect.shtml


#lspci       通过此命令便列出大部分硬件信息
从列出的结果中可以找到无线网卡的型号为 Intel PRO/Wireless 2200BG
2. 下载无线网卡的驱动
在 google 中很容易检索到这款网卡的驱动 , 于是下载了 ipw2200-1.2.2.tgz 的驱动包
3. 解压并安装驱动
#tar –zxvf ipw2200-1.2.2.tgz
#cd ipw2200-1.2.2
#make install
执行命令后会在此目录生成一个名为 ipw2200.ko 的驱动文件
4. 将驱动文件拷贝到驱动模块目录
#cp ipw2200.ko /lib/modules/2.6.18-128.el5/kernel/drivers/net
也可放在 wireless 目录
5. 加载驱动模块
#insmod/lib/modules/2.6.18-128.el5/kernel/drivers/net/ipw2200.ko
或此命令: #modprobe ipw2200
6. 查看模块是否成功加载
#lsmod | grep ipw2200

在http://wiki.centos.org/zh/HowTos/Laptops/Wireless#head-2a7bdc6b191f12f16cb4d17a34e75dfce097e60a
看到我的无线网卡是应该可以支持的,使用ipw2200驱动

以下是实操
lspci

04:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG[Calexico2] Network Connection (rev 05)
安装kernel-devel gcc
解压驱动ipw2200-1.2.0.tgz
cdintel_ipw2200_120
cdipw2200-1.2.0
make install
mkdir -p/root/intel_ipw2200_120/ipw2200-1.2.0/tmp/.tmp_versions
cp/lib/modules/2.6.18-194.17.4.el5/net/ieee80211/.tmp_versions/*.mod/root/intel_ipw2200_120/ipw2200-1.2.0/tmp/.tmp_versions
cp: cannot stat`/lib/modules/2.6.18-194.17.4.el5/net/ieee80211/.tmp_versions/*.mod':No such file or directory
make: [modules] Error 1 (ignored)
cp/lib/modules/2.6.18-194.17.4.el5/net/ieee80211/.tmp_versions/../Modules.symvers/root/intel_ipw2200_120/ipw2200-1.2.0
cp: cannot stat`/lib/modules/2.6.18-194.17.4.el5/net/ieee80211/.tmp_versions/../Modules.symvers':No such file or directory
make: [modules] Error 1 (ignored)
make -C /lib/modules/2.6.18-194.17.4.el5/buildM=/root/intel_ipw2200_120/ipw2200-1.2.0MODVERDIR=/root/intel_ipw2200_120/ipw2200-1.2.0/tmp/.tmp_versionsmodules
make[1]: Entering directory`/usr/src/kernels/2.6.18-194.17.4.el5-i686'
  Building modules, stage 2.
  MODPOST
make[1]: Leaving directory`/usr/src/kernels/2.6.18-194.17.4.el5-i686'
install -d/lib/modules/2.6.18-194.17.4.el5/kernel/drivers/net/wireless/
install -m 644 -c ipw2200.ko/lib/modules/2.6.18-194.17.4.el5/kernel/drivers/net/wireless/
/sbin/depmod -a 2.6.18-194.17.4.el5
Don't forget to copy firmware to your hotplug's firmware directoryand have the
hotplug tools in place.
See INSTALL for more information.
可见它已经将编译出来的ipw2200.ko拷到/lib/modules/2.6.18-194.17.4.el5/kernel/drivers/net/wireless/了,当然不放心可以自己拷一次
另外重要一点就是
解压ipw2200-fw-3.0.tgz到/lib/firmware/,这个可以从其官网http://ipw2200.sourceforge.net/上下载

ls /lib/firmware/
ipw2200-bss.fw  ipw2200-ibss.fw ipw2200-sniffer.fw  LICENSE.ipw2200-fw


rmmod ipw2200.ko
lsmod | grep ipw2200查看是否成功加载
insmod/lib/modules/2.6.18-194.17.4.el5/kernel/drivers/net/wireless/ipw2200.ko插入mod
modprobe ipw2200
modinfo可以查看该驱动的信息及开关参数
iwlist eth1 scanning
iwconfig eth1
ifup eth1
dhclient eth1
service wpa_supplicant start
service network restart
yum install wpa_supplicant
yum install wpa_gui

mode:设置无线网卡的工作模式,可以是
Ad- hoc:不带AP的点对点无线网络
Managed:通过多个AP组成的网络,无线设备可以在这个网络中漫游
Master:设置该无线网卡为一个AP
Repeater:设置为无线网络中继设备,可以转发网络包
Secondary:设置为备份的AP/Repeater
Monitor:监听模式
Auto:由无线网卡自动选择工作模式



[root@linuxhk1080 ipw2200-1.2.0]# dmesg | grep ipw2200
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver,1.2.0mprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2915ABG NetworkConnection
ipw2200: Detected geography ZZA (11 802.11bg channels, 13 802.11achannels)
需要注意的文件/etc/modprobe.conf
options ipw2200 hwcrypto=1 associate=0 led=1
使用硬件加密 不自动连接AP 打开LED灯
先建好/etc/wpa_supplicant.conf,再用wpa_supplicant -i eth1 -D wext -c/etc/wpa_supplicant.conf -d调试
SIOCGIWRANGE: WE(compiled)=20 WE(source)=18 enc_capa=0xf
  capabilities: key_mgmt 0xf enc 0xf
WEXT: Operstate: linkmode=1, operstate=5
Own MAC address: 00:**:f0:**:**:03
wpa_driver_wext_set_wpa
Device eth1 kernel driver name: ipw2200.
wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0 seq_len=0key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0 seq_len=0key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0 seq_len=0key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0 seq_len=0key_len=0
wpa_driver_wext_set_countermeasures
wpa_driver_wext_set_drop_unencrypted
Setting scan request: 0 sec 100000 usec
ctrl_interface_group=10 (from group name 'wheel')
Added interface eth1
RTM_NEWLINK: operstate=0 ifi_flags=0x1002 ()
Wireless event: cmd=0x8b06 len=8
RTM_NEWLINK: operstate=0 ifi_flags=0x1002 ()
RTM_NEWLINK, IFLA_IFNAME: Interface 'eth1' added
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'eth1' added
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'eth1' added
State: DISCONNECTED -> SCANNING
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=16):
    ** ** ** 61 ** 6f ** 63 ** 72 ** ** 77 69 **69   ******_****_****
Trying to get current scan results first without requesting a newscan to speed up initial association
Received 809 bytes of scan results (3 BSSes)
Scan results: 3
Selecting BSS from priority group 0
Try to find WPA-enabled AP
0: 00:**:0e:**:5d:** ssid='<hidden>'wpa_ie_len=26 rsn_ie_len=0 caps=0x11
   skip - SSID mismatch
由于3.0的firmware不能匹配隐藏了SSID,下载了最新版的3.1后问题解决.

wpa_supplicant服务
服务的配置文件/etc/sysconfig/wpa_supplicant
# Use the flag "-i" before each of your interfaces, like so:
 INTERFACES="-i eth1 -i wlan0"
INTERFACES="-i eth1"

# Use the flag "-D" before each driver, like so:
 DRIVERS="-D wext"
DRIVERS="-D wext"

# Other arguments
 -u   Enable the D-Bus interface(required for use with NetworkManager)
 -f   Log to/var/log/wpa_supplicant.log
#OTHER_ARGS="-u -f /var/log/wpa_supplicant.log"
OTHER_ARGS="-f /var/log/wpa_supplicant.log"
关闭u参数,避免dbus_bus_get[ctrl_iface_dbus]错误,因为这里不需要用到NetworkManager服务
注意修改其中的网卡接口,驱动试过改成ipw但没必要
配置文件/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="******_****_****"
scan_ssid=1
pairwise=CCMP TKIP
group=CCMP TKIP
proto=WPA
key_mgmt=WPA-PSK
psk=d*******************************************bfe****4ccb
}
不要随便启用networkmanager,它会修改很多配置好的文件,至少DNS会被改

配置文件/etc/sysconfig/network-scripts/ifup-wireless在结尾处添加
if [ "$WPA" = "yes" -a -x /etc/init.d/wpa_supplicant ]; then
   /sbin/service wpa_supplicant start
fi
这样在使用ipupeth1时能自动调用wpa_supplicant服务,不必将wpa_supplicant服务加入开机启动,如果能连接上还必须手动让其再获取一次IP地址
配置文件/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=yes
MODE=managed
在结尾处添加
TYPE=Wireless
WPA=yes
为解决ifdown后再up时死机问题
配置文件/etc/sysconfig/network-scripts/ifdown
在OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-${DEVICETYPE}"前添加
# is the device wireless?
is_wireless_device ${DEVICE} && ../ifdown-wireless
新增配置文件/etc/sysconfig/network-scripts/ifdown-wireless
#!/bin/bash

if [ "$WPA" = "yes" -a -x /etc/init.d/wpa_supplicant ]; then
   /sbin/service wpa_supplicant stop
fi
或者
if [ "$WPA" = "yes" -a -x /usr/local/bin/wpa_supplicant ];then
    killallwpa_supplicant
    rm -r/var/run/wpa_supplicant
fi
为其添加执行权限
#可有可无,没有的话无法用wpa_cli terminate来关闭wpa_supplicantctrl_interface=/var/run/wpa_supplicant# 确保只有root用户能读取WPA的配置,可有可无,尤其是在嵌入式设备上ctrl_interface_group=0# 使用wpa_supplicant来扫描和选择AP,也可以设置成0或2,但只有1才能正确工作ap_scan=1network={#AP的名字   ssid="my_network"#AP的key   psk="my_key"}
    配置文件弄好后就可以运行wpa_supplicant了。在那之前当然要先插好无线网卡,载入驱动:

bash# insmod zd1211b.ko
bash# ifconfig eth1 up

bash# wpa_supplicant -B -ieth1 -Dzydas -c/etc/wpa_supplicant.conf
    
   参数-B代表后台运行,-ieth1代表使用设备eth1,-Dzydas代表网卡芯片是zydas,-c指定配置文件。
   接下来就可以看下网络是否连通了:

bash# iwconfig
bash# udhcpc -i eth1 -n

以下 : From http://blog.chinaunix.net/u1/38994/showart_1161421.html

bash# wpa_cli -ieth1 scan //搜索无线网
bash# wpa_cli -ieth1 scan_results //显示搜索结果

bash# wpa_cli -ieth1 add_network
bash# iwconfig eth1 essid "you_wifi_net"
bash# wpa_cli -ieth1 password 0 "password"
bash# wpa_cli -ieth1 enable_network

0 0
原创粉丝点击