您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页RADIUS模块IPPOOL动态池的设计说明

RADIUS模块IPPOOL动态池的设计说明

来源:化拓教育网
IP POOL动态池的管理

IP POOL实现原理: IP POOL管理可分为动态和静态两种形式,静态IP POOL是指在NAS端实现的配置,然后可以由RADIUS 服务器决定使用的POOL的名称,具体配置为:

动态IP POOL 是指由RADIUS服务器配置管理IP POOL,在每次用户授权时,给NAS返回的授权确认中包含该用户使用的IP 地址,它是通过Framed-IP-Address属性实现的。 ippool students{

range-start = 172.168.1.1 range-stop = 172.168.1.254 netmask = 255.255.255.0 cache-size = 800

session-db = ${raddbdir}/db.ippool ip-index = ${raddbdir}/db.ipindex }

authorize {

students }

accounting { students }

IP POOL模块的流程原理: ippool_instantiate

ippool_authorize

ippool_accounting

IP POOL 模块数据库接口,使用GDBM数据库,下面是所使用的接口函数说明: 1. GDBM_FILE gdbm_open(name,block_size,flags,mode,fatal_func) 功能:打开数据库文件

2. Int gdbm_store(dbf,key,content,flag); 功能:存储数据条目

3. Datum gdbm_fetch(dbf,key) 功能:获取一个数据条目

4. Datum gdbm_firstkey(dbf); 功能:获取第一个条目

5. Datum gdbm_nextkey(dbf,key); 功能:获取下一个条目 6. Int gdbm_delete(dbf , key); 功能:删除一个条目 7. Void gdbm_close(dbf) ; 功能:关闭数据库

数据结构

typedef struct ippool_info { uint32_t ipaddr ; char char }ippool_info

typedef struct ippool_key { char int }

加载链表结构

long char char char int char char int }

流程设计及原理

1. 由于IPPOOL模块实现时,需要的数据库接口,所以实现时比较复杂,而且与RLM_SQL模块的接口函数重复存在,所以考虑在RLM_SQL中来实现比较简单。 2. 是否可以加载到内存?不能,必须实时刷新数据库记录,因为RADIUS的DOWN机随

时导致IP-POOL信息的混乱。如果在每个包的AUTHORIZE和ACCOUNTING-STOP

nas[MAX_NAS_NAME_SIZE] ; port ; active ; cli[32] ;

typedef struct ippool_stru {

ipaddress ; active ; client[20] ; nas[20] ; port ; multilink; forbidden ; indexcount ;

过程中都直接读写数据库,这样可能大大影响响应时间,而且以前的内存加载也没有太大的价值了。

initiate :

1. 初始化数据库, 将所有IP地址写入表中,其中,NAS = “0” port =-1 ,active= 0 2. 数据的加载,集中把地址条目加载到相关数据结构中.

Authorize

1.检查包中NAS-IP-ADDRESS属性,必须存在 2. 获取客户名称,CALLING-STATION-ID

3 如果PORT存在,查找PORT是否被使用,如果已被使用,检查是否是复用,或已废除,如废除需重新设置记录。

4 搜索数据库检查是否存在空余IPADDRESS可使用,增加计数索引+1 5 创建FRAME-IP-ADDRESS属性

Accounting-stop

1. 检查是否有NAS-PORT属性,没有则不处理 2. 获取NAS-IP-ADDRESS或NAS-INDENTIFIER

3. 查找该PORT的IP-ADDRESS条目,设置Active = 0 4. 计数索引减少1

数据库设计 表名: ippool_t 字段标识 Ipaddress Active Client Nas Port Multilink Forbidden IndexCount 类型和长度 Long VARCHAR(1) VARCHAR(20) VARCHAR(20) Integer VARCHAR(1) VARCHAR(1) Integer 主键 Y N N N Y N N N 是否为空 说明 NOT NULL IP地址 是否使用 客户名 服务器名称 NOT NULL 端口 NOT NULL 是否链路复用 NOT NULL 是否禁用 Y/N NOT NULL 索引计数器

说明:ipaddress表示唯一IP地址,当被使用时,必须填写该客户名称,NAS名称及端口

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务