我按照链接
https://blog.csdn.net/cncbook1979/article/details/140557354(%E9%83%A8%E5%88%86%E8%BD%AF%E4%BB%B6%E6%BA%90%E4%B8%8D%E5%90%8C)
部署freeradius+daloradius完成后利用真实网络环境验证只有steve这个测试账号可以拨号成功,在users文件内手动添加或者daloradius页面添加的账号全部无效,同时我试着把users文件里原测试账号steve和密码testing改成别的保存重启任然不起作用。
这个可额能是什么原因造成的?网上方法不是没用就是不好验证。
关于freeradius部署完测试的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
檀越@新空间 2026-01-05 10:16关注上午好☀️☀️☀️️
本答案参考通义千问根据你描述的问题,Freeradius 部署完成后,只有
steve这个测试账号可以拨号成功,而手动添加或通过 Daloradius 添加的账号均无效,这表明 用户认证配置存在异常。以下是你需要排查和解决的关键问题及详细解决方案:
一、可能的原因分析
1. users 文件中只允许特定用户
- Freeradius 默认会在
users文件中检查用户是否被允许登录。 - 如果你的
users文件中只定义了steve用户,其他用户即使在数据库中也未被识别。
2. Daloradius 配置错误
- Daloradius 是基于 MySQL 的 Web 界面管理工具,如果它与 Freeradius 没有正确连接或配置,添加的用户不会生效。
3. MySQL 数据库配置不正确
- Freeradius 可能没有正确连接到 MySQL 数据库,导致无法从数据库读取用户信息。
4. 用户权限设置错误
- 在 MySQL 中,用户可能没有正确的权限访问
radius数据库,或者没有创建对应的表(如users,radcheck,radreply等)。
5. 用户密码格式错误
- Freeradius 支持多种密码格式(如 Cleartext, PAP, CHAP 等),如果密码格式不匹配,会导致验证失败。
二、解决方案步骤
1. 确认 users 文件的配置
- 打开
/etc/freeradius/users文件,检查是否有类似如下内容:steve Cleartext-Password := "testing" Service-Type = Framed-User, Framed-Protocol = PPP - 如果你手动添加的用户没有类似的结构,那么这些用户不会被识别。
✅ 修改建议:
- 手动添加的用户应按照标准格式书写,例如:
testuser Cleartext-Password := "testpass" Service-Type = Framed-User, Framed-Protocol = PPP
2. 检查 Freeradius 是否连接到 MySQL
- 查看
/etc/freeradius/3.0/radiusd.conf或/etc/freeradius/sites-available/default文件中的配置。 - 确保
sql模块已启用,并且dialect设置为mysql。
✅ 示例配置片段:
sql { dialect = "mysql" server = "localhost" port = "3306" login = "radius" password = "your_password" radius_db = "radius" }
3. 验证 MySQL 数据库连接
- 登录 MySQL 并查看是否创建了
radius数据库和相关表:mysql -u root -p SHOW DATABASES; USE radius; SHOW TABLES; - 如果没有创建表,请运行安装脚本(通常在 Freeradius 安装目录中):
mysql -u root -p radius < /usr/share/doc/freeradius/sql/mysql/schema.sql
4. 检查 Daloradius 配置文件
- 打开
/etc/daloradius/config.php,确保数据库连接参数正确:$db_host = "localhost"; $db_port = "3306"; $db_user = "radius"; $db_pass = "your_password"; $db_name = "radius";
5. 检查用户是否已正确插入数据库
- 在 MySQL 中执行以下命令,查看用户是否存在:
SELECT * FROM users WHERE username = 'testuser'; - 如果不存在,请通过 Daloradius 或手动插入数据。
6. 检查密码格式是否正确
- Freeradius 通常使用
Cleartext-Password或PAP格式,不要使用MD5或其他加密方式。 - 在数据库中,密码字段应为明文(如:
testpass),而不是哈希值。
7. 重启 Freeradius 服务并测试
- 修改后重启服务:
systemctl restart freeradius - 使用
radtest工具测试用户是否可以通过:radtest testuser testpass localhost 0 testing123 - 如果返回
Access-Accept,说明配置正确;否则请检查日志/var/log/freeradius/radius.log。
三、代码修改示例(users 文件)
如果你手动添加用户,应参考如下格式:
testuser Cleartext-Password := "testpass" Service-Type = Framed-User, Framed-Protocol = PPP
四、总结
| 问题原因 | 解决方案 | |----------|----------| | users 文件未正确配置 | 按照标准格式添加用户 | | MySQL 数据库连接错误 | 检查
radiusd.conf和config.php| | 用户未正确插入数据库 | 通过 Daloradius 或 SQL 插入用户 | | 密码格式错误 | 使用明文密码,避免加密格式 | | Freeradius 服务未重启 | 重启服务并测试 |
如果你仍然无法解决问题,建议提供以下信息以进一步诊断:
users文件内容- MySQL 数据库结构截图
- Freeradius 日志文件内容
- Daloradius 配置文件内容
希望以上方法能帮助你解决问题!如果需要,我可以帮你进一步分析日志或配置文件。
解决 无用评论 打赏 举报- Freeradius 默认会在