我已经在 Centos 上安装了 freeradius。
MySQL 数据库中填充了一些用于测试的数据,并且配置了 freeradiusd.conf 和 sql.conf。
RADIUS 服务器能够连接 MySQL 数据库,我可以从中验证用户身份。我还配置了一个远程 RADIUS 客户端,该客户端与我的强制门户和 RADIUS 服务器配合使用,但是,只有当我在 中配置了客户端的 IP 地址时,它才有效/etc/raddb/clients.conf
。使用 MySQL“nas”表时,它不起作用。
换句话说,freeradius 似乎没有从 MySQL 数据库查询我的 nas 表。
在我的/etc/raddb/mods-enabled/sql
文件中,有以下内容:
# Table to keep radius client info
nas_table = "nas"
# Set to 'yes' to read radius clients from the database ('nas' table)
read_clients = yes
在我的 nas 表中,我有以下内容:
id nasname shortname type ports secret server community description
1 xx.xx.xx.xx NULL other NULL testing123
default NULL RADIUS Client
...其中 xx.xx.xx.xx 是我的 RADIUS 客户端的正确 IP 地址。
当我尝试通过强制门户登录时,使用 freeradius 在调试模式下运行,我收到以下信息:
Wed Aug 8 06:39:11 2018 : Info: Ready to process requests
Wed Aug 8 06:39:19 2018 : Error: Ignoring request to auth address * port 1812 bound to server default from unknown client xx.xx.xx.xx port 55546 proto udp
Wed Aug 8 06:39:19 2018 : Info: Ready to process requests
Wed Aug 8 06:39:21 2018 : Error: Ignoring request to auth address * port 1812 bound to server default from unknown client xx.xx.xx.xx port 55546 proto udp
Wed Aug 8 06:39:21 2018 : Info: Ready to process requests
Wed Aug 8 06:39:24 2018 : Error: Ignoring request to auth address * port 1812 bound to server default from unknown client xx.xx.xx.xx port 55546 proto udp
Wed Aug 8 06:39:24 2018 : Info: Ready to process requests
eWed Aug 8 06:39:28 2018 : Error: Ignoring request to auth address * port 1812 bound to server default from unknown client xx.xx.xx.xx port 55546 proto udp
我在调试输出中注意到 nas 中的数据正在被加载
Wed Aug 8 09:07:58 2018 : Debug: rlm_sql (sql): Reserved connection (0)
Wed Aug 8 09:07:58 2018 : Debug: rlm_sql (sql): Executing select query: SELECT id, nasname, shortname, type, secret, server FROM nas
Wed Aug 8 09:07:58 2018 : Debug: rlm_sql (sql): Adding client xx.xx.xx.xx (xx.xx.xx.xx) to default clients list
Wed Aug 8 09:07:58 2018 : Debug: Adding client xx.xx.xx.xx/32 (xx.xx.xx.xx) to prefix tree 32
Wed Aug 8 09:07:58 2018 : Debug: rlm_sql (xx.xx.xx.xx): Client "xx.xx.xx.xx" (sql) added
Wed Aug 8 09:07:58 2018 : Debug: rlm_sql (sql): Released connection (0)
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "pap" from file /etc/raddb/mods-enabled/pap
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "reject" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "fail" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "ok" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "handled" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "invalid" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "userlock" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "notfound" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "noop" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "updated" from file /etc/raddb/mods-enabled/always
Wed Aug 8 09:07:58 2018 : Debug: # Instantiating module "monthlycounter" from file /etc/raddb/mods-enabled/sqlcounter
任何帮助都将不胜感激!PS:我尝试将 nas 表中的短名称更改为与 ip 相同的名称,但仍然不起作用
答案1
因此,这里的问题是您指定了一个虚拟服务器来添加客户端。按理说,它应该会出错,因为“默认”虚拟服务器实际上并不存在,但我猜 SQL 客户端代码是可以容忍的。
这种混淆是可以理解的,因为有一个文件freeradius/sites-available/default
,但是,如果你看一下服务器部分的开头,server {
它实际上并没有指定名称,这个文件中的虚拟服务器没有标识符。如果你想让它按预期工作,你需要真正地给虚拟服务器命名,例如server default {
。
因此,您有两个选择,要么将该字段设置为 NULL,以便所有客户端都添加到全局客户端表中,要么为虚拟服务器指定一个标识符。
答案2
这篇文章已经有 5 年的历史了,但这是搜索此问题时能找到的少数几个帖子之一。如果您有此问题,有或没有指定的虚拟服务器名称,您需要将服务器值保留为 NULL/Empty,就像@AranCudbard-Bell 之前提到的那样。
我在 Debian 标准存储库中版本 3.0.21 上正确命名虚拟服务器的测试单元上遇到了这个问题。似乎默认会接受所有未指定的内容。我无法解释这种行为,这是第一次发生这种情况。
一个未解答的问题是,如果有多个虚拟服务器会发生什么。我的测试用例中不需要它们,所以这可以留给其他人,或者如果我需要找出未来会发生什么。