万午笛 2026-01-05 10:15 采纳率: 0%
浏览 5

关于freeradius部署完测试的问题

我按照链接
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改成别的保存重启任然不起作用。
这个可额能是什么原因造成的?网上方法不是没用就是不好验证。

  • 写回答

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-PasswordPAP 格式,不要使用 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.confconfig.php | | 用户未正确插入数据库 | 通过 Daloradius 或 SQL 插入用户 | | 密码格式错误 | 使用明文密码,避免加密格式 | | Freeradius 服务未重启 | 重启服务并测试 |


    如果你仍然无法解决问题,建议提供以下信息以进一步诊断:

    • users 文件内容
    • MySQL 数据库结构截图
    • Freeradius 日志文件内容
    • Daloradius 配置文件内容

    希望以上方法能帮助你解决问题!如果需要,我可以帮你进一步分析日志或配置文件。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月5日