|
彻底解决 FreeBSD-6.0 下 802.1X 验证问题
By MAGPIE wgsicg@163.com 2005年11月19日
(转载请注明作者出处)
欢呼吧,热爱 FreeBSD 的人们!长久一来困扰我们的 802.1X 验证问题,今天终于得以彻底地解决。wpa_supplicant 的出现为我们解决了这一个历史性难题。它自0.4.0版开始支持 wired (相对于 wireless )方式。
一、准备性工作
1) 我们需要安装 FreeBSD-6.0 及其开发环境,此外还要安装 gmake 包。
gmake 在 FreeBSD-6.0 CD2 中,找到它 pkg_add 就行了。
2) 安装必要的库 libdnet libcap openssl。
1>安装 libdnet
-到 http://libdnet.sourceforge.net/ 下载 libdnet-1.10.tar.gz
-$tar xzvf libdnet-1.10.tar.gz
-$cd libdnet-1.10
-$./configure --prefix=/usr
-$make
-#make install (要超级用户权限执行)
2>安装 libpcap
-到 http://www.tcpdump.org/release/ 下载 libpcap-0.9.4.tar.gz
-$tar xzvf libpcap-0.9.4.tar.gz
-$cd libpcap-0.9.4
-$./configure --prefix=/usr
-$make
-#make install (要超级用户权限执行)
3>安装 openssl
-到 http://www.openssl.org/source/ 下载 openssl-0.9.7g.tar.gz
-$tar xzvf openssl-0.9.7g.tar.gz
-$cd openssl-0.9.7g
-$./config --prefix=/usr
-$make
-$make test
-#make install (要超级用户权限执行)
二、安装 wpa_supplicant
1)获取 wpa_supplicant 源码
-到 http://hostap.epitest.fi/releases 下载 wpa_supplicant-0.4.0.tar.gz
注:1、FreeBSD-6.0 自带 wpa_supplicant 的 0.3.9版,但此版本不支持 wired 方式,故不可用。
注:2、0.4.0版以上的也可能可以用,但0.4.6版有问题,编译不能通过。
2)配置并安装
-$tar xzvf wpa_supplicant-0.4.0.tar.gz
-$cd wpa_supplicant-0.4.0
-编辑生成 .config (可参看 defconfig 文件。下面是我的 .config 可供参考)
-------我的.config 文件---------
CONFIG_DRIVER_BSD=y
CONFIG_DRIVER_WIRED=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_TLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_LEAP=y
CONFIG_PKCS12=y
CONFIG_SMARTCARD=y
CONFIG_DNET_PCAP=y
CONFIG_CTRL_IFACE=y
---------------------------
-修改 Makefile 文件,将第274行的 LIBS += -ldl 用#注释掉,注意,这很重要。
注:1、在 libdl 中有操纵动态连接库的函数,但在 FreeBSD 中这些函数已包含在 libc 中,因此没有 libdl。
-$gmake (注意是 gmake!)
-#gmake install (要超级用户权限执行)
三、wpa_supplicant 的基本应用
这里仅仅介绍它的基本使用方法,要完全了解它的用法请参看其文档。
1>清除系统中旧版本的 wpa_supplicant 的干扰
-#rm /usr/sbin/wpa_supplicant
-#rm /usr/sbin/wpa_cli
2>建立 wpa_supplicant 的配置文件 /etc/wpa_supplicant.conf
注:1、可参照源代码目录中的 wpa_supplicant.conf 文件,根据具体情况进行配置(有些繁琐)。
注:2、由于我们校园网用的是 eap_md5 验证方式,故我的 /etc/wpa_supplicant.conf 如下:
---------------------------
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity="用户名"
password="密码"
eapol_flags=0
}
----------------------------
3>运行 wpa_supplicant 进行身份验证
-#ifconfig rl0 down (这里的 rl0 是网卡设备,根据你的实际情况填写,下同。)
-#ifconfig rl0 up (这里的 rl0 是网卡设备,根据你的实际情况填写,下同。)
-#wpa_supplicant -B -c /etc/wpa_supplicant.conf -i rl0 -D wired >& /var/log/wpa.log
-#cat /var/log/wpa.log (若没出错则不会有内容。)
4>用 DHCP 方式申请 IP 地址 (我们校园网 IP 是动态分配的,估计很多学校都是这样。)
-#dhclient rl0 (这里的 rl0 是网卡设备,根据你的实际情况填写。)
四、wpa_supplicant 的用法的进一步讨论
1>可以将整个过程写成一个脚本
-编辑生成 startnet1x.sh 内容如下
-----------------------------
#!/bin/csh
ifconfig rl0 down
ifconfig rl0 up
echo "Start Wpa_supplicant ..."
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i rl0 -D wired >& /var/log/wpa.log
sleep 1
echo "Done."
dhclient rl0
------------------------------
-#chmod 755 startnet1x.sh
-#./startnet1x.sh (测试用)
-#cp startnet1x.sh /usr/local/sbin (备用)
(往后直接运行 startnet1x.sh 就行了。)
2>开机自动运行
这就留给精通 FreeBSD 的高手来做吧。 |
|