具有两种身份验证的Freeradius:MAC地址和SSID无法提取被叫站SSID

问题描述 投票:0回答:0

我正在使用 Freeradius 3.0 和 sql 数据库。我使用了官方维基

  • 我在
    policy.d
    下添加一个名为macssid的文件:
rewrite_called_station_id {
        if(Called-Station-Id =~ /^([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_. ]*)?/i){
                update request {
                        Called-Station-Id := "%{1}%{2}%{3}%{4}%{5}%{6}"
                        Called-Station-SSID := "%{7}"
                }
        }
        else {
                noop
        }
}
  • 我在
    /etc/raddb/sites-available/default
    中添加这个块:
rewrite_calling_station_id
    rewrite_called_station_id
    if("%{sql:SELECT COUNT(*) FROM `SSIDMACAUTH` WHERE macaddress = '%{Calling-Station-ID}' AND SSID = '%{Called-Station-SSID}'}" >= 1){
          ok
        update control {
            Auth-Type := Accept
        }
    }
    else{
        reject
    }

我在 radius 数据库中添加了一个名为 SSIDMACAUTH 的表,其中包含 2 列 macaddress 和 SSID。到目前为止一切正常。

rewrite_called_station_id 应该是这样的:

00-11-22-33-44-55:MY_SSID_1
,但我的不同,它发送 AP_NAME:SSID(字母数字)。

在日志中,我看到带有良好 mac 地址的 sql 请求,但 SSID 中没有任何内容:

SELECT COUNT(*) 
FROM `SSIDMACAUTH` 
WHERE macaddress = '00-00-FF-8F-66-FF' 
AND SSID = ''

我不精通正则表达式,但我不知道如何更改此行:

if(Called-Station-Id =~ /^([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([-a-z0-9_. ]*)?/i)

在我的案例中提取 SSID 名称。

regex freeradius
© www.soinside.com 2019 - 2024. All rights reserved.