Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1487518
  • 博文数量: 267
  • 博客积分: 3010
  • 博客等级: 少校
  • 技术积分: 3089
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-05 17:09
个人简介

尊天命,尽人事

文章分类

全部博文(267)

文章存档

2017年(6)

2015年(4)

2014年(27)

2013年(52)

2012年(59)

2011年(120)

分类: Android平台

2013-04-09 17:17:30

最近在公司做一些路由器功能的实现。板子是现成的,在其之上跑一个Linux操作系统,我的主要任务就是利用一些工具让板子的路由和无线接入功能运 作起来。其中在做无线接入的功能使用hostapd来实现。hostapd是一个带加密功能的无线接入点程序,是Linux操作系统上构件无线接入点的一 个比较方便的工具,支持IEEE 802.11协议和IEEE 802.1X/WPA/WPA2/EAP/RADIUS加密。hostapd的官方介绍请看,具体的配置方法和含义在有比较详尽的介绍。

首先需要从上获得hostapd的源程序,通过修改Makefile文件将其移植到板子上,然后最关键的一步就是配置hostapd的配置文件了。源程序里面包含了一个hostapd.conf文件(也可以从获得),这个文件很大,里面的配置项相当的多,从简单到高级。但一般地我们能够使用到的功能只是其中很少的一部分,下面介绍一下我认为最常用的一些配置选项。首先介绍一些基本的配置项:

点击(此处)折叠或打开

  1. ssid=test
  2. hw_mode=g
  3. channel=10
  4. interface=wlan0
  5. #bridge=br0
  6. driver=nl80211
  7. ignore_broadcast_ssid=0
  8. macaddr_acl=0
  9. #accept_mac_file=/etc/hostapd.accept
  10. #deny_mac_file=/etc/hostapd.deny

上面列出的配置基本上是必须的,其中:

  • ssid:别人所看到的我们这个无线接入点的名称;
  • hw_mode:指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g;
  • channel:设定无线频道;
  • interface:接入点设备名称,注意不要包含ap后缀,即如果该设备称为wlan0ap,填写wlan0即可;
  • bridge:指定所处网桥,对于一个同时接入公网、提供内部网和无线接入的路由器来说,设定网桥很有必要;
  • driver:设定无线驱动,我这里是nl80211;
  • macaddr_acl:可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;
  • accept_mac_file:指定允许MAC列表文件所在;
  • deny_mac_file:指定禁止MAC列表文件所在;
下面介绍关于认证方式的配置:点击(此处)折叠或打开
  1. auth_algs=1

其中auth_algs指定采用哪种认证算法,采用位域(bit fields)方式来制定,其中第一位表示开放系统认证(Open System Authentication, OSA),第二位表示共享密钥认证(Shared Key Authentication, SKA)。我这里设置alth_algs的值为1,表示只采用OSA;如果为3则两种认证方式都支持。不过很奇怪的是,在我工作中如果配置了3,不管采用 WEP/WPA/WP2加密的方式都从没连接成功过,配置为2也是如此。所以在我的配置当中,如果采用认证,则设置auth_algs为1;否则把这行代 码注释掉(在前面加#)。

由于RADIUS认证需要提供外部RADIUS服务器,我们没有这个功能,因此我只研究了WEP、WPA和WPA2这三种加密方式。


点击(此处)折叠或打开

  1. #wep_default_key=0
  2. #wep_key0=1234567890
  3. #wep_key1="vwxyz"
  4. #wep_key2=0102030405060708090a0b0c0d
  5. #wep_key3=".2.4.6.8.0.23"
  6. #wep_key_len_broadcast=13
  7. #wep_key_len_unicast=13
  8. #wep_rekey_period=300
如果要启用WEP加密,只需配置wep_default_key和其中一个wep_keyx,其中x的值只能在0~3之 间,wep_default_key的值必须启用了。注意wep_keyx的值不是任意的,只能是5、13或16个字符(用双引号括住),或者是10、 26或32个16进制数字。由于WEP加密算法已经被破解了,所以通常不启用它,全部注释掉。

点击(此处)折叠或打开

  1. wpa=2
  2. wpa_passphrase=12345678
  3. wpa_key_mgmt=WPA-PSK
  4. #wpa_pairwise=TKIP CCMP
  5. rsn_pairwise=TKIP CCMP

现在推荐的加密方式是WPA/WPA2,由于时间紧迫,我没有怎么去了解过这两者的差别。不过配置是很简单的:

  • wpa:指定WPA类型,这是一个位域值(bit fields),第一位表示启用WPA,第二位表示启用WPA2。在我的配置中,无论设置成1、2或3,都可以正常连接;
  • wpa_passphrase:WPA/WPA2加密需要指定密钥,这个选项就是配置WPA/WPA2的密钥。注意wpa_passphrase要求8~63个字符。另外还可以通过配置wpa_psk来制定密钥,不过要设置一个256位的16进制密钥,不适合我们的需求;
  • wpa_pairwise/rsn_pairwise:如果启用了WPA,需要指定wpa_pairwise;如果启用了WPA2,需要指定 rsn_pairwise,或者采用wpa_pairwise的设定。都可以设定成TKIP、CCMP或者两者都有,具体含义我也没仔细弄清楚。一篇比较 老的文章说TKIP不兼容Windows Mobile,但我的Windows Mobile 6.5在这两种算法下都没有遇到任何问题。

经过这样一些配置,启动hostapd之后应该就可以按照自己的需求正常使用无线接入点功能了:
/
usr/bin/hostapd -f /etc/hostapd.conf

阅读(7326) | 评论(0) | 转发(0) |
0

上一篇:Linux IW 移植

下一篇:Android HAL 分析

给主人留下些什么吧!~~