Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60872
  • 博文数量: 8
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 96
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-25 09:42
文章分类

全部博文(8)

文章存档

2016年(1)

2014年(1)

2013年(3)

2012年(2)

2011年(1)

我的朋友

分类: C/C++

2014-12-29 13:03:41

    1.什么是802.1x?
    802.1x 协议起源于802.11 协议,后者是标准的无线局域网协议,802.1x 协议的主要目的是为了解决无线局域网用户的接入认证问题。现在已经开始被应用于一般的有线LAN 的接入(微软的Windows XP,以及Cisco,华为3com,北电,港湾等厂商的设备已经开始支持802.1X 协议)。在 802.1x 出现之前,企业网上有线LAN 应用都没有直接控制到端口的方法。也不需要控制到端口。但是随着无线LAN 的应用以及LAN 接入在电信网上大规模开展,有必要对
端口加以控制,以实现用户级的接入控制。802.1x 就是IEEE 为了解决基于端口的接入控制(Port-Based Access Control)而定义的一个标准。
    2.    802.1x的认证体系分为三部分:
            a.客户端(PC机或是网络设备)
            b.认证系统(多为具有支持802.1x协议的交换机)
            c.认证服务器(例如radius认证服务器)

    这里我简单介绍一下这三部分:
     客户端呢,是一个需要接入LAN 及享受switch 提供服务的设备(如PC 机),客户端需要支持EAPOL 协议,客户端必须运行802.1X 客户端软件,如:802.1X-complain,Microsoft Windows XP,H3C802.1X。这里我主要介绍linux下的802.1x的认证,我用的是wpa_supplicant软件。
    认证系统,多为交换机Switch (边缘交换机或无线接入设备),它是—根据客户的认证状态控制物理接入的设备,switch 在客户和认证服务器间充当代理角色(proxy)。switch 与client间通过EAPOL 协议进行通讯,switch 与认证服务器间通过EAPoRadius 或EAP 承载在其他高层协议上,以便穿越复杂的网络到达 Authentication Server (EAP Relay);switch 要求客户端提供identity,接收到后将EAP 报文承载在Radius 格式的报文中,再发送到认证服务器,返回等同; switch 根据认证结果控制端口是否可用;
需要指出的是:我们的802.1x 协议在设备内终结并转换成标准的RADIUS 协议报文,加密算法采用PPP 的CHAP 认证算法,所有支持PPP CHAP 认证算法的认证计费服务器都可以与我们对接成功。
    认证服务器是对客户进行实际认证,认证服务器核实客户的identity,通知swtich 是否允许客户端访问LAN 和交换机提供的服务。Authentication Sever 接受 Authenticator 传递过来的认证需求,认证完成后将认证结果下发给 Authenticator,完成对端口的管理。

    3. 802.1x认证过程如下:
        1).首先我们的客户端向认证系统(我这里是交换机)发送一个开始认证的请求报文。
        2).然后我们的交换机回应客户端,要求客户端发来用户名,即identity。
        3).交换机收到客户端发来的用户信息后,开始将其封装成radius request报文,发给认证服务器。
        4).认证服务器收到消息后,再次发送一个验证请求给认证系统,要求客户端发送md5加密后的密码,完成验证。
        5).认证系统收到后,反馈给客户端。
        6).客户端收到请求后,将自己的密码和收到的md5-challenge做MD5算法后回应给认证系统。
        7).认证系统收到信息后将用户名和密码一起封装发给认证服务器。
        8).认证服务器完成最后的验证。
        具体是:RADIUS 服务器根据用户信息,做MD5 算法,判断用户是否合法,然后回应认证成功/失败报文到接入设备。如果成功,携带协商参数,以及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束。

        4.
        那么在linux下我们如何完成这么复杂的流程呢?
        两种方法。
        第一种:
        很简单,利用wpa_supplicant软件,你可以使用yum来安装它。我们只需要简单配置一下它的配置文件(/etc/wpa_supplicant/wpa_supplicant.conf),然后运行相应的命令来启动它就可以。
        具体如下:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=0
network={
     key_mgmt=IEEE8021X
    eap=MD5
     identity="user"
     password="password"
    eapol_flags=0
}

注意:用实际的用户名和密码替换 user 和password。
保存后,执行如下命令:
[root@localhost ~]#wpa_supplicant -c wired.conf –i eth0 –b br0 –D wired
我是桥接网络,所以有桥。没有的桥的情况还没测试。
该命令的输出大致如下:
Associated with 01:80:c2:00:00:03
CTRL-EVENT-EAP-STARTED EAP authentication started
CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=4
CTRL-EVENT-EAP-METHOD EAP vendor 0 method 4 (MD5) selected
CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
CTRL-EVENT-CONNECTED - Connection to 01:80:c2:00:00:03 completed (auth) [id=0 id_str=]

如果br0上已经事先配好了静态地址,应该不再需要额外配置。
如果采用dhcp,用命令
dhclient br0
可以用ping命令检查网络是否已通。

这样就完成了802.1x认证,你就可以上网啦,如有错误,欢迎指正。本文部分参考其他文章,其出处已不明,敬请理解。
第二种请看下文,待续。。。

阅读(2529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~