RADIUS 服务器 IP 池配置

使用 RADIUS 服务器,您可以从 IP 地址池中动态分配 IP 地址。

IP 地址分配是授权过程的一部分,并在认证后完成。 系统管理员必须为每个用户分配唯一 IP。 为动态地向用户提供 IP 地址,RADIUS 服务器提供了三个选项:

  • 分帧池属性
  • 使用特定于供应商的属性
  • RADIUS 服务器端 IP 合用

分帧池属性

必须在网络访问服务器 (NAS) 上定义 IP 池 poolname。 NAS 必须符合 RFC2869,RADIUS 服务器才能在“访问 - 接受”信息包(类型 88 属性)中发送分帧池属性。 系统管理员必须配置 NAS ,并通过在全局 default.auth 文件或 RADIUS 服务器上的 user.auth 文件中包含 帧池 属性来更新用户的授权属性。 RADIUS 服务器中的字典文件中包含以下属性:

ATTRIBUTE    Framed-Pool    88       string

如果 NAS 不能使用多个地址池,那么 NAS 将忽略此属性。 NAS 上的地址池包含 IP 地址列表。 NAS 动态地选取指定池中定义的某个 IP 地址,并将它分配给用户。

特定于供应商的属性

某些独立软件供应商 (ISV) 不能使用分帧池属性,但可以定义 IP 地址池。 通过使用特定于供应商的属性(VSA) 模型,RADIUS 服务器可以利用这些地址池。 例如,Cisco NAS 提供了一个名为 Cisco-AVPair 的属性。 RADIUS 服务器中的字典文件中包含以下属性:

VENDOR     Cisco           9
ATTRIBUTE  Cisco-AVPair    1       string

当 NAS 发送“访问 - 请求”信息包时,它将该属性包含在 Cisco-AVPair=”ip:addr-pool=poolname 中,其中 poolname 是 NAS 上定义的地址池的名称。 认证并授权该请求之后,RADIUS 服务器在“访问 - 接受”信息包中返回该属性。 然后 NAS 可以使用已定义的池将 IP 地址分配给用户。 系统管理员必须为用户配置 NAS 并更新授权属性,方法是在 RADIUS 服务器上的全局 default.auth 文件或 user.auth 文件中包含 VSA 属性。

Radius 服务器端 IP 合用

可以配置 RADIUS 服务器从 IP 地址池生成 IP 地址。 在“访问 - 接受”信息包的“分帧的 IP 地址”属性中返回该 IP 地址。

系统管理员可以使用 SMIT 界面定义 IP 地址池。 在 /etc/radius/ippool_def 文件中维护地址。 Poolnamesetc/radius/clients 文件中定义。 系统管理员还必须配置 NAS 端口号。 RADIUS 服务器守护程序使用 etc/radius/clients/etc/radius/ippool_def 文件中的信息来创建数据文件。 一旦守护程序启动,在 RADIUS 服务器停止前,系统管理员将不能更改或添加 poolname 或 IP 地址范围。 启动 RADIUS 服务器守护程序时,它读取配置文件(/etc/radius/radius.conf),并且如果已启用 IP 分配(Enable_IP_Pooling=YES),那么将全局 IP 分配标志(IP_pool_flag)设置为 On。 该守护程序然后查看 poolname.data 文件是否存在。 如果存在,那么它读取该文件并在共享内存中保存该信息。 然后它根据来自客户机的请求更新文件和共享内存。 如果该文件不存在,那么守护程序将使用 etc/radius/clients/etc/radius/ippool_def 文件中的信息创建一个新文件。 poolname.data文件的最大大小限制为 256 MBAIX文件段大小限制)。 如果 poolname.data 文件大于 256 MB,那么 RADIUS 服务器记录错误消息并退出。

该守护程序从 /etc/radius/ippool_def 文件获取 IP 池详细信息,并在共享内存中维护每个池名称的 IP 地址表。 该表具有 NAS-IP-address、NAS-port 和 IN USE 标志条目。 该守护程序维护了一个散列表,该表以 NAS-IP NAS-port 作为关键字。 当来自多个用户的请求传入时,UDP 将请求排队,守护程序从请求中检索 NAS-IP 和 NAS-port 数据。 通过使用该信息,它将通过检查从 etc/radius/clients 文件读取的信息来检查是否为该 NAS 定义了 poolname

该守护程序将尝试从池中获取未使用的地址。 如果有未使用的地址,那么由 NAS-IP 和 NAS-port 标志将它标记为“使用中”,并返回给 RADIUS 服务器。 守护程序将该 IP 地址放置到分帧的 IP 地址属性中,并在接受信息包中返回给 NAS。 还更新 poolname.data 文件以与共享内存中的信息同步。

如果该池不存在,或已存在但没有更多未使用的地址,那么将错误返回给 RADIUS 服务器。 错误 Could not allocate IP address 记录在日志文件中,并且 RADIUS 服务器将 Access-Reject 包发送到 NAS。

错误代码为:

  • NOT_POOLED-没有为 nas_ip定义池。
  • POOL_够用-为 nas_ip定义了池,但该池中的所有地址当前都在使用中。

当认证请求来自已分配了 IP 地址的 NAS 和 NAS-port 组合时,该守护程序将把先前的分配返回给池,方法是将 IN USE 标志标记为 Off,并清除表中的 NAS-IP-address 和 NAS-port 条目。 然后它从池中分配一个新的 IP 地址。

当 RADIUS 服务器从 NAS 接收到“记帐 - 停止”信息包时,该 IP 地址也会返回到池中。 “记帐 - 停止”信息包必须包含 NAS-IP-address 和 NAS-port 条目。 在以下情况中,守护程序会访问 ippool_mem 文件:

  • 该请求传入的目的是获取新的 IP 地址。 将 IN USE 标志设置为 true。
  • 接收到“记帐 - 停止”信息包。 它通过将“in use”标志设置为 false 来释放 IP 地址。

在每个情况中,共享内存系统调用确保共享内存中的数据和 poolname.data 文件同步。 系统管理可以使用 RADIUS 服务器配置文件 (radiusd.conf) 中的 Enable_IP_Poling 参数来开启 IP 分配 ONOFF 。 这在系统管理员在全局 default.authuser.auth 文件中具有已分配的 IP 地址的情况下很有用。 要使用该分配的 IP 地址,系统管理员必须设置 Enable_IP_Pool = NO

以下是通过 SMIT 创建的 /etc/radius/ippool_def 文件示例:
池名称 开始范围 结束范围
Floor5 192.165.1.1 192.165.1.125
Floor6 192.165.1.200 192.165.1.253
以下是通过 SMIT 创建的 /etc/radiusclients 文件示例:
NAS-IP 共享秘密 池名称
1.2.3.4 Secret1 Floor5
1.2.3.5 Secret2 Floor6
1.2.3.6 Secret3 Floor5
1.2.3.7 Secret4  
在上面的 NAS-IP-Address 1.2.3.7 示例中,池名称为空。 在此情况中,未对此 NAS 执行 IP 合用(即使全局 IP_pool_flag = True 也如此)。 当“访问 - 请求”信息包传入时,RADIUS 服务器执行认证和授权。 如果成功,它将在“访问 - 接受”信息包中,发送在请求中或在全局 default.auth 文件或 user.auth 文件中定义的静态 IP 地址。 在此例中,NAS-Port 属性不是必需的。

如果 IP 合用为 True,那么系统管理员还已定义静态 IP 地址作为全局 default.authuser.auth 的一部分,或作为“访问 - 请求”信息包的一部分。 RADIUS 服务器将把该 IP 地址替换为从该 NAS 的已定义池名称中分配的 IP 地址。 如果池中的所有 IP 地址都在使用中,那么服务器记录错误(池已满)并发送“访问 - 拒绝”信息包。 服务器将忽略 auth 文件中定义的所有静态 IP 地址。

如果 IP 合用为 True 并且为 NAS 定义了一个有效的池名称,当某“访问 - 请求”信息包从该 NAS-IP 传入而它没有定义 NAS-Port 时,服务器将发送“访问 - 拒绝”信息包。

以下是由守护程序创建的 Floor5.data 文件示例:
IP 地址 NAS-IP NAS-Port 使用中
192.165.1.1 1.2.3.4 2 1
192.165.1.2 1.2.3.4 3 0
............ ....... .... ....
192.165.1.124 1.2.3.6 1 1
192.165.1.125 1.2.3.6 6 1
以下是由守护程序创建的 Floor6.data 文件示例:
IP 地址 NAS-IP NAS-Port 使用中
192.165.200 1.2.3.4 1 1
192.165.201 1.2.3.4 4 1
............ ....... .... ....
192.165.1.252 1.2.3.4 5 0
192.165.1.253 1.2.3.4 6 1
当需要释放所指定 NAS 的所有已分配 IP 地址时(例如当 NAS 停止时),可能需要释放所有池中的所有 IP 地址,以初始化 poolname.data 文件。 系统管理员可以使用 SMIT 执行以下菜单操作:
  • Clear IP Pool for a Client
  • Clear entire IP Pool

IP 池的 SMIT 面板

在客户机配置中,Add a Client,您可以输入可选 Pool Name。 该名称最多可有 64 个字符。 当 Pool Name 为空时,不会进行 IP 合用,并且 RADIUS 服务器将分配系统管理员通过 Framed-IP-Address 授权属性定义的 IP 地址。

当选择 IP Pool 时,会显示以下选项:

  • List all IP Pools
  • Create an IP Pool
  • Change/Show Characteristics of an IP Pool
  • Delete an IP Pool
  • Clear IP Pool for a Client
  • Clear entire IP Pool

List all IP Pools:使用此选项列出 Pool NameStart Range IP addressStop Range IP address

Create an IP Pool:使用此选项添加池名称、开始范围和结束范围。 此数据将附加到 ippool_def 文件的底部。 将进行检查以确保没有重复的池名称并且 IP 地址范围没有重叠。 仅当 RADIUS 服务器守护程序不在运行时才能执行此操作。

Change/Show Characteristics of an IP Pool:该选项在弹出面板中显示池名称列表。 您必须在该面板中选择特定的池名称。 当您选择池名称时,将显示带有选定名称的面板。 当您按 Enter 时,将在 ippool_def 文件中更新该池名称的数据。 仅当 RADIUS 服务器守护程序不在运行时才能执行此操作。

Delete an IP Pool:选择该选项显示您可以选择的池名称列表。 选择池名称时,将显示 Are You Sure 弹出面板以在删除所选池名称之前提供确认。 将调用 rmippool 脚本以从 ippool_def 文件中删除选定的池名称。 仅当 RADIUS 服务器守护程序不在运行时才能执行此操作。

清除客户机的 IP 池: 此选项将属于 NAS 的 IP 地址的 IN-USE 条目标记为 0 ,这意味着此 NAS 的所有 IP 地址现在都可用。 仅当 RADIUS 服务器守护程序不在运行时才能执行此操作。

清除整个 IP 池: 选择此选项时,将显示 Are You Sure 弹出面板以在清除整个 ippool_mem 文件之前提供确认。 仅当 RADIUS 服务器守护程序不在运行时才能执行此操作。