说起802.1X,可能很多高校的学子对它没有好感,因为某捷、某三公司利用它限制了很多高校学生的网络使用。实际上,802.1X在用户认证方面是挺优秀的。相比传统路由中的WEP、WPA-PSK认证、甚至是Portal认证(即WEB认证)都有很多独有的特点。
使用802.1X协议的主要优点有:
- 加密方式安全多样,可以使用PAP(明文不加密)、EAP、CHAP、MSCHAPv2等加密方式。
- 接入用户的用户名和密码的管理十分科学。
- 相对于Portal认证,802.1X的计费方式更加实时高效。
但是用802.1X协议建立WIFI有如下限制:
- 需架设RADIUS SERVER,RADIUS服务器软件是一个认证计费服务器,由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通电话上网、ADSL上网、小区宽带上网、IP电话、移动电话预付费等业务的计费。RADIUS SERVER存储着接入用户的用户名和密码,这些用户名和密码可以存储在文件里,也可以通过RADIUS SERVER拓展存储于SQL数据库或LDAP服务器中。当然,RADIUS SERVER也可以是OpenWRT路由器本身。
详细关于802.1X和RADIUS的介绍和架设可以参阅英文网站:
http://tldp.org/HOWTO/html_single/8021X-HOWTO/
经过查阅大量的OpenWrt官方的文件资料,发现Openwrt实际上是支持建立通过802.1X协议保护的WiFi的。OpenWRT有很多WIFI套件,详见http://wiki.openwrt.org/doc/howto/wireless.utilities,支持802.1X的套件是wpad和hostapd,OpenWRT原生携带了wapd-mini包,这个包精简了对802.1X的支持,只需安装完整版wpad即可,当然,利用hostapd也可以实现,不过这个还有待研究。
安装方法:
opkg remove wpad-mini #先卸载wpad-mini opkg update opkg install wpad安装完成之后,直接通过LUCI即可建立通过802.1X协议保护的WiFi。
接下来就是建立RADIUS SERVER,上图中的Radius认证服务器需要填写自己架设的Radius Server的IP地址或域名,如果Radius Server是OpenWRT本身,填写127.0.0.1.Radius认证端口默认1812即可,Radius认证密钥可以自己定义。Radius计费服务器如果没有计费需求,可以忽略。
Radius Server我选择在外部Linux服务器上利用freeradius软件建立,OpenWRT上也有提供freeradius2包,可以以相同的方法在OpenWRT上建立。
安装freeradius,可以利用Linux发行版的包管理器安装:
在RHEL/CengOS下:sudo yum install freeradius
在Ubuntu/Debain下:sudo apt-get install freeradius
当然,也可以到http://www.freeradius.org/下载源代码编译安装,不过编译时间会比较长。
安装完成后,使用命令:radiusd -X尝试运行freeradius,-X表示在前台运行,并输出调试信息,如果没有错误信息,证明正常运行。按Ctrl+C结束它。
/etc/raddb/radiusd.conf是freeradius的配置文件,一般保持默认即可,如有需要,根据里面的英文提示修改即可。
/etc/raddb/client.conf是列出允许连接freeradius的客户端的文件,编辑个文件,在末尾加入“
client ip{ secret your_secret shortname localhost }
其中,ip更改为你的路由器的IP,secret即再上图中填写的Radius认证密钥,shortname可以自定义。
/etc/raddb/users存储了接入用户的用户名和密码。
编辑它,在末尾加入行your_username Cleartext-Password:=”your_password”.
your_username、your_password根据需要自己定义,可以定义多个用户名和密码,不同用户通过不同用户名和密码登陆。
利用Radius,还可以把用户的用户名和密码存储于SQL数据库或LDAP服务器当中,可以对接入用户的接入时长进行统计、控制、甚至计费,可以使单个用户名和密码仅可以在一个设备上登陆,这有待于你的发掘。