使用freeradius搭建EAP认证环境

###1. freeradius RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系统由RFC2865,RFC2866定义,是目前应用最广泛的AAA协议。AAA是一种管理框架,因此,它可以用多种协议来实现。在实践中,人们最常使用远程访问拨号用户服务(Remote Authentication Dial In User Service,RADIUS)来实现AAA RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。 由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通电话上网、ADSL上网、小区宽带上网、IP电话、VPDN(Virtual Private Dialup Networks,基于拨号用户的虚拟专用拨号网业务)、移动电话预付费等业务。IEEE提出了802.1x标准,这是一种基于端口的标准,用于对无线网络的接入认证,在认证时也采用RADIUS协议 freeradius 是一种开源的radius服务器的实现 ###2. 安装freeradius 首先, 安装依赖的软件包 $ sudo apt-get install openssl libssl-dev 在ubuntu上可以使用 apt-get 来安装freeradius $ sudo apt-get install freeradius...

IEEE 802.11 无线网络接口的类型

###1. 物理网卡与虚拟网络接口 在linux中, 物理上的无线网卡使用 struct wiphy 来表示, 对应 “/sys/class/ieee80211/” 目录,一个无线 网卡可以支持多个虚拟网络接口, 虚拟网络接口使用 struct net_device 来表示, 对应”/sys/class/net/” 目录 (参照iw 中的phy和dev, 分别代表物理网卡和虚拟网络接口) 在ieee80211无线网络的结构中, STA具有不同的类型, 例如 AP, STA, AD-HOC 等, 称为无线网络接口的工作模式, 也被称为无线网络接口的类型 WNIC (Wireless Network Interface Controler) 可以在下述的模式中的一种中工作, 不同的模式决定了无线连接的主要功能, 若无线网络接口能够支持多个虚拟接口, 则无线网卡还可以同时工作在不同的模式 ###2. STA...

android上wifi扫描间隔

###1. android wifi 循环扫描 在android系统中, 在不同的场景下, 不同的功能模块会发起循环扫描 大部分扫描功能需要调用WPAS的接口来完成, 可先阅读 “WPAS” 分类中的 “WPAS 中的循环扫描” ###2. 亮屏时Wifi Settings界面的扫描 只要打开wifi, 进入wifi settings界面, 无论是否连接了AP, 都会开始定时扫描 相关源码为 “pacakes/app/Settings/src/com/android/settings/wifi/WifiSettings.java” Wifi Setting 中由 class Scanner来负责发起扫描, calss Scaner继承了Handlerl来实现定时扫描: 延时向自己发送一个空message 接收到message后, 立即调用WifiManager执行一次扫描, 然后再次延时向自己发送空message 向自己发送空message的延时值即为扫描的间隔, 默认为10s (int WIFI_RESCAN_INTERVAL_MS = 10...

WPAS 中的循环扫描

###1. wpa_supplicant_scan() WPAS 中, 扫描任务由 wpa_supplicant_scan() 来完成 通过向 eloop 核心注册timeout事件, 到期后触发 wpa_supplicant_scan()执行, 实现了定时扫描, 若循环触发定时扫描, 则还可以实现周期扫描 WPAS 中有4个接口来控制 wpa_supplicant_scan 任务: wpa_supplicant_update_scan_int() 更新扫描间隔时间 wpa_supplicant_req_scan() 开始调度扫描任务 wpa_supplicant_cancel_scan() 停止调度扫描任务 wpas_scan_scheduled() 扫描任务是否被调度 ###2. WPAS 中的周期扫描 若当前未连接到AP, 且 WPAS 不处于DISCONNECTED的状态, 并且保存了未被disable的AP, 则WPAS会发起周期扫描 周期扫描的 间隔时间存储在 struct wpa_supplicant.scan_interval...

android wifi 组播

###1. android wifi 组播 android 上出于省电的考虑, 默认会过滤掉接收到的组播包, 若需要接收组播包, 则需要持有 MultiCast 锁 // create MulticastLock WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); MulticastLock multicastLock = wifiManager.createMulticastLock("multicast.test"); // MulticastLock 加锁 multicastLock.acquire(); // MulticastLock 释放 multicastLock.release(); APP还需要在Manifest中添加权限 <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/> ###2. Multicast 的实现 MulticastLock.acquire() --> WifiService.acquireMulticastLock()...