freeradius 3 mac auth 用户组(为简化配置)

freeradius 3 mac auth user group (for configuration simplicity)

我已经使用 Unifi AP 和 freeradius 实现了 Radius MAC 身份验证。我主要使用 Radius 来设置设备应该发送到的 vlan,以允许合并的 SSID 处理多个 vlan。 (这是家庭网络,不是企业网络,所以我不关心 mac 欺骗情况)。任何 MAC 连接都将获得一个 vlan(但非 radius 用户将默认进入访客 vlan)

freeradius 的问题是如何为每个 MAC 用户定义分配一个组值,然后 post-auth 使用该组名来定义特定属性,例如 Tunnel-Type 、隧道中型和隧道私有组 ID。我只是想这样做以避免必须为每个设备重复所有这些隧道值。

示例(不确定语法是否正确)

授权文件 AABBCCDDEEFFGG Group := "iot", Cleartext-Password := "AABBCCDDEEFFGG"

site-enabled/default(我觉得可能放这里)

if (group == "iot) { #update reply, set Tunnel-* values }

如果有人能提供任何指导,那就太好了。我发现的所有示例似乎都在使用 mysql 后端,我不需要额外的复杂性。

我能够使用控制变量解决这个问题。这是解决方案。

  1. 在字典文件中创建自定义属性。

    ATTRIBUTE VLAN-Group-Name 3000 string

  2. 像这样将用户添加到授权文件

    AA-BB-CC-DD-EE-FF Cleartext-Password := "AA-BB-CC-DD-EE-FF", VLAN-Group-Name := "iot"

  3. 在您的虚拟服务器中,在我的例子中是 sites-enabled/default,查找 post-auth 部分并添加与此类似的代码。您将用您要发送回要分配的 AP 的 vlan # 替换 group-id XXX。我将代码放在 -sql 部分的正上方。

switch "&control:VLAN-Group-Name" {
    case "iot" {
        update reply {
            Tunnel-Type = 13,
            Tunnel-Medium-Type = 6,
            Tunnel-Private-Group-Id = XXX
        }
    }
    case "general" {
        update reply {
            Tunnel-Type = 13,
            Tunnel-Medium-Type = 6,
            Tunnel-Private-Group-Id = XXX
        }
    }
}

这允许您保持授权文件只包含用户并为他们分配一个组,并在 post-auth 中简化组值。如果您需要更改任何组的 vlan #,只需更新并重新启动即可。

干杯!