首页 > 解决方案 > Freeradius 3.0 不通过 mysql 发送任何数据(radacct 表为空)

问题描述

我已经在 Ubuntu (20.04) 中部署了一个带有 MySQL 的 freeradius 服务器版本 3.0。radius 和 MySQL 有各自的版本:

root@server:/etc/freeradius/3.0# mysql -V
mysql  Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
root@server:/etc/freeradius/3.0# freeradius -v
radiusd: FreeRADIUS Version 3.0.20, for host x86_64-pc-linux-gnu, built on Jan 25 2020 at 06:11:13
FreeRADIUS Version 3.0.20
Copyright (C) 1999-2019 The FreeRADIUS server project and contributors

我的情况是:我需要从手机连接到接入点并使用在 radius 数据库中指定的用户名和密码对该 WLAN 网络 (802.11i-WPA-802.1x) 进行身份验证。

我想将每个用户(在这种情况下为 demouser)的并发登录数限制为 1,因为我只有一个唯一用户。我花了很多时间搜索论坛和文档,但找不到任何东西。

这是调试模式下 freeradius 的输出

我对在数据库中创建用户的最佳方式有几个疑问。目前它以基本方式配置,也就是说我在 radcheck 表中指定了用户,在 nas 表中指定了我的客户端(接入点):

mysql> SELECT * FROM nas;
+----+-------------+-----------+-------+-------+----------+--------+-----------+---------------+
| id | nasname     | shortname | type  | ports | secret   | server | community | description   |
+----+-------------+-----------+-------+-------+----------+--------+-----------+---------------+
|  1 | 172.20.1.20 | AP_1      | other |  NULL | 12345678 | NULL   | NULL      | Client Radius |
+----+-------------+-----------+-------+-------+----------+--------+-----------+---------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM radcheck; SELECT * FROM radgroupcheck; SELECT * FROM radgroupreply; SELECT * FROM radusergroup;
+----+----------+--------------------+----+----------+
| id | username | attribute          | op | value    |
+----+----------+--------------------+----+----------+
|  1 | demouser | Cleartext-Password | := | demopass |
+----+----------+--------------------+----+----------+
1 row in set (0.00 sec)

+----+------------+------------------+----+-------+
| id | groupname  | attribute        | op | value |
+----+------------+------------------+----+-------+
|  1 | demo_group | Simultaneous-Use | := | 1     |
+----+------------+------------------+----+-------+
1 row in set (0.00 sec)

+----+------------+--------------------+----+---------------------+
| id | groupname  | attribute          | op | value               |
+----+------------+--------------------+----+---------------------+
|  1 | demo_group | Service-Type       | := | Framed-User         |
|  2 | demo_group | Framed-Protocol    | := | PPP                 |
|  3 | demo_group | Framed-Compression | := | Van-Jacobsen-TCP-IP |
+----+------------+--------------------+----+---------------------+
3 rows in set (0.00 sec)

+----+----------+------------+----------+
| id | username | groupname  | priority |
+----+----------+------------+----------+
|  1 | demouser | demo_group |        0 |
+----+----------+------------+----------+
1 row in set (0.00 sec)

如果我看到日志文件,则身份验证成功:

如果我从radpostauth表中执行选择,我还会看到用户已成功通过身份验证。

mysql> select * from radpostauth;
+----+----------+------+---------------+---------------------+
| id | username | pass | reply         | authdate            |
+----+----------+------+---------------+---------------------+
| 55 | demouser |      | Access-Accept | 2021-04-27 09:04:19 |
| 56 | demouser |      | Access-Accept | 2021-04-27 09:04:19 |
+----+----------+------+---------------+---------------------+

问题是在 radacct 表中没有存储数据,当我执行选择时它显示为空,我创建了另一个具有相同结构并在 mysql 配置文件中指定的 radacct2 表,但也没有插入数据。

据我了解(如果我错了,请纠正我)Radius 将会计数据存储在 radacct 表中。我读了这份文件

如果没有存储数据,下面的查询将无法正确执行。/etc/freeradius/3.0/main/mysql/queries.conf

#######################################################################
# Simultaneous Use Checking Queries
#######################################################################
# simul_count_query     - query for the number of current connections
#                       - If this is not defined, no simultaneous use checking
#                       - will be performed by this module instance

simul_count_query = "\
        SELECT COUNT(*) \
        FROM ${acct_table1} \
        WHERE username = '%{SQL-User-Name}' \
        AND acctstoptime IS NULL"

简而言之,我需要控制特定用户的同时登录以及无法正常工作的原因我认为是由于没有将数据插入到mysql表中。我可能是错的,因为我是新手,如果是这样,请有人向我提供有关如何解决此问题的信息或指定我真正的问题是什么。

我已经为此工作了数周,这是我需要配置的最后一件事,但我无法弄清楚。

如果需要更多配置文件,请告诉我,我会附上。

请帮忙

PD:作为额外信息,我必须补充一点,我已按照此页面上的配置步骤进行操作,但它仍然无法正常工作。

谢谢

标签: mysqlubuntufreeradiusradius

解决方案


推荐阅读