本实验的目的是在Linux Mint18的环境下安装hostapd来实现802.1x,其中mint作为路由的功能,即将hostapd设置为radius客户端。而要入网的是一部android手机,认证的radius服务器是运行在centos6.8上的freeradius。
【hostapd简介】
hostapd 是用户控件的守护进程用于无线接入点(AP)和授权服务器(authentication servers)。它实现了IEEE802.11的AP管理,IEEE802.1X/WPA/WPA2/EAP授权,RADIUS 客户端,EAP服务器和RADIUS 授权服务器,目前最新版本支持Linux系统(HOST AP,madwifi,mac80211-based驱动)和FreeBSD(net80211)。
【hostapd安装】
首先需要安装dnsmasq和hostapd,这里可以选择从仓库安装或者从源码安装。
sudo apt-get install dnsmaq hostapd
或者下载hostapd-x.y.tar.gz,解压并修改deconfig为.config: cd hostapd-x.y/hostapd && cp defconfig .config。如果你的系统里是libnl3.2,就设置CONFIG_LIBNL32=y并make。
【hostapd配置】
在运行hostapd之前需填写配置文件hostapd.conf,这里我们将它设置为radius客户。细节如下:
#open 802.1x authenticate
interface=wlp3s0f0 //网卡接口名称,用ifconfig获得
driver=nl80211
ssid=My_WiFi
channel=10
hw_mode=g
ignore_broadcast_ssid=0
auth_algs=1
wpa=1
ieee8021x=1
auth_server_addr=192.168.1.10 //radius server的ip地址
auth_server_port=1812
auth_server_shared_secret=testing123 //预共享的秘密字
wpa_key_mgmt=WPA-EAP
wpa_pairwise=TKIP
【hostapd运行】
在启动hostapd之前需要对mint的NetworkManager进行设置,用两个命令——nmcli和rfkill:
新版本nmcli用法:sudo nmcli radio wifi off (关闭wifi使其托管),然后可先用rfkill list观察系统对网卡AP功能的限制情况,如本系统启动后如图:
这里可以看到0和2都将wlan功能进行了限制,因此rfkill unblock 0&&rfkill unblock 2解除限制,使状态如下图,否则无法hostapd正常打开。
接下来就可以用sudo ./hostapd [path for hostapd.conf]开启hostapd,并用sudo ifconfig wlan0 [gateway ip] netmask 255.255.255.0设置mint网关ip地址。启动后如下图所示:
最后设置dnsmasq进行ip地址的分配,这里不作详细介绍。
【后续工作】
再到centos上安装freeradius,这里忍不住称赞freeradius这个软件,是我目前遇到的开源的radius里做的最好的,支持各种认证方法。默认安装的话,在/etc/raddb目录里,有它的配置文件,在users里设置用户名称和密码,在client.conf里设置radius客户的ip为mint ap的地址,并填写预共享秘密字,最后在eap.conf里选择需要使用的认证方法。这里也不作详细介绍。
最后展示一张在mint AP 上用wireshark截图的认证过程,从中可以看出认证完成并允许入网。