我正在使用 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 名称。