本帖最后由 bestgo 于 2009-12-29 20:18 编辑: _: c% M5 Q3 p' K
8 I' m, E/ v* S! P如何构建hostapd:! z# ?3 _1 v% k4 c6 K! E+ U, _
. S$ g! p7 l* v6 H: v0 q7 ~
目前hostapd的最新版本是0.7.0,稳定版本是0.6.9,这里使用后者。
/ r' W7 Q1 F& M" V' c平台环境为centos 5.4,如果编译不过,可能要根据提示手工安装一些devel的包
: `4 M* W7 Q$ ~$ J' U
& Z. R! n; e* `2 m, z3 p, r1. 在官方站点获取tar包后解压,进入hostapd这个子目录/ u; k) y, r& T$ j, W
2. 生成.config文件,cp defconfig .config* y5 ~! U: \1 Y' c w6 p1 _
3. 配置.config文件; y" T" U7 A1 _9 O9 ?& S* ^
CONFIG_DRIVER_WIRED=y) [ f% w, X8 `6 p
CONFIG_DRIVER_NONE=y/ V9 `9 y% Q: y# I [* W' n
CONFIG_EAP=y5 ?4 @. i6 C) H5 ^7 X! z% W
CONFIG_EAP_MD5=y+ |( |4 c5 l7 D F9 l2 c
CONFIG_EAP_TLS=y' [% G9 A* R! x0 h; F
CONFIG_EAP_MSCHAPV2=y7 M' O9 u6 _1 U2 K
CONFIG_EAP_PEAP=y5 r4 w7 S' X6 }: e0 K5 x. K; D6 M
CONFIG_EAP_GTC=y: R! D+ A5 L% w/ I
CONFIG_EAP_TTLS=y3 Z. b) `: X+ c; s& `$ j
CONFIG_EAP_SIM=y{9 B6 c% I- B/ a5 y! h
CONFIG_EAP_AKA=y) u3 A' f1 X3 t- ~1 y& h: S
CONFIG_EAP_PAX=y# ]/ s" [+ n) c9 b; v! Q: T
CONFIG_EAP_PSK=y" r/ O; Z: O' d2 v" R0 w4 H' d
CONFIG_EAP_SAKE=y
" _' m. a* e) w3 q8 h8 ZCONFIG_EAP_GPSK=y) q6 n& k0 V9 t' L; C4 x
CONFIG_EAP_GPSK_SHA256=y
- u) J( Q. n6 K5 k. `5 e7 z$ ]. e4 p0 `#CONFIG_EAP_FAST=y$ M. M' [0 M/ _* o% U
CONFIG_EAP_IKEV2=y5 `; I% q+ M; T1 k
CONFIG_EAP_TNC=y! b" u8 G4 b* C- J* d; y+ A
CONFIG_PKCS12=y
& S# D2 U: a* `1 j" a8 PCONFIG_RADIUS_SERVER=y5 I7 i1 E* f+ B! K4 c& [
# Q) @) o @6 b, S3 _
这里需要注意几点:& S; D4 {1 d. E
8 g0 B+ P; j* K& ~+ K: f一,这里我仅仅把hostapd作为一个radius server使用,它还能做AP,.config文件的其它部分都注释掉。
* ^# L4 F3 P3 v0 X f8 o% N
, S, n0 B# E+ W7 C2 O/ H二,这里我只关心eap-aka,其它的eap类型可以根据自己需要添加,用不到的也可以注释掉。! U# M V# T2 U) a! Z
$ @+ R% m* L# F: H5 w, _, ?0 `9 v
三,这里特别注明eap-fast需要注释掉,因为启用该认证类型需要对openssl这个库打补丁openssl-0.9.9-session-ticket.patch,否则编译会失败,系统默认的openssl版本为openssl-0.9.8e-12.el5。
6 l- N) C$ m) r6 L4 g
( K* p0 t3 W5 v b/ O7 e( i4. 接着就make,make install" \" \, ?4 ]) X6 p: k% m
配置文件在hostapd这个目录下有范例,可以自己参考,我这里也放一下最常用配置$ `; W! z8 J3 T7 j" ^' |" |: p3 ?* M
5. 配置hostapd.conf
8 D; T1 _% F% Q% R* Y7 }$ |interface=eth0 # 这里设置你用来提供服务的网卡接口名( B# h1 ?0 G0 {* j, K. f1 }; j
eap_server=1
" m* w" p5 G) v$ weap_user_file=/usr/local/etc/hostapd/hostapd.eap_user5 ?4 Q$ c/ Y* a2 t
ca_cert=/usr/local/etc/hostapd/certs/wifiCA.pem7 f5 `5 V& I9 r. f# m0 B
server_cert=/usr/local/etc/hostapd/certs/radius_cert.pem% x' l. T2 w6 k
private_key=/usr/local/etc/hostapd/certs/radius_key.pem
2 {! h6 H; f3 l3 K; Iradius_server_clients=/usr/local/etc/hostapd/radius_clients) E: p+ a6 p% H3 {! z- h: K/ s* G4 N
radius_server_auth_port=1812 # 提供服务的端口号( r; z$ E/ z! N9 ~' b. f
6. 配置hostapd.eap_user- [6 I- R. T: y/ I& C
使用peap、tls或ttls可以这样配置,这里用户名为anywlan,密码为anywlan123:, p9 ~- C& }; _; T# D( _0 ?
* TLS,PEAP,TTLS5 q2 G1 M7 Q! w
"anywlan" MSCHAPV2,GTC,PSK,PAX,SAKE,TTLS-PAP,TTLS-CHAP,TTLS-MSCHAP,MD5,TTLS-MSCHAPV2 "anywlan123" [2]
3 u/ Y$ w& z8 C/ j ]( @+ ~
5 p1 \! ~( J1 i0 ~0 ^+ S# m3 x7. 配置hostapd.radius_clients' ?1 ]% b/ b; h
允许IP为192.168.1.1的无线路由器使用这个radius服务器,共享密码为anywlan123:
& o+ N$ C( o- \! ~3 r! r$ f% T192.168.1.1 anywlan123
8 e; O: A7 c; p9 y: N* R0 [! T- m" L' i) x$ D6 b' h; Y
运行hostapd:& y+ j% e: W g& `; p3 B
hostapd hostapd.conf -dd
m( ^. [3 L- d, M" e" x+ C使用-dd选项可以输出调试信息,还可以后台运行:
* t9 q0 v0 o7 \" }) G9 ~hostapd hostapd.conf -B7 ]9 M' W$ w2 r, G
0 v) C) @& {3 M" [, c' O
查看hostapd的状态,占用1812端口为默认的radius认证协议端口9 [; `9 `% q- p+ g2 k
& f# F* u6 G \6 q( G j1 W
udp 0 0 0.0.0.0:1812 0.0.0.0:* 28046/hostapd
5 O4 l1 |( u" r* Fudp 0 0 0.0.0.0:67 0.0.0.0:* 28046/hostapd1 c) B. G( U0 a/ x
现在,一个能够工作的radius服务器已经配置好了。7 e- w7 R( s5 U/ C/ u8 y* I
目前不知道该如何配置eap-sim和eap-aka这类需要智能卡辅助的认证方式,请大侠帮忙。