保姆级教程:在Ubuntu 18.04上从零搭建FreeRadius 3.0 + Daloradius Web管理后台
Ubuntu 18.04实战:FreeRadius 3.0与Daloradius全栈部署指南
在当今企业网络和ISP服务中,RADIUS协议作为AAA(认证、授权、计费)的核心解决方案,已成为访问控制的基础设施。本文将带您完成从零开始,在Ubuntu 18.04系统上部署FreeRadius 3.0服务器,并集成功能强大的Daloradius Web管理界面。不同于简单的安装教程,我们将深入每个配置细节,特别针对Ubuntu 18.04的特有环境变量和常见陷阱提供解决方案。
1. 系统准备与基础环境配置
在开始部署前,确保您的Ubuntu 18.04系统已更新至最新状态。执行以下命令完成系统更新:
sudo apt update && sudo apt -y upgrade sudo reboot关键依赖安装:
- MariaDB数据库服务器(MySQL兼容)
- Apache2 Web服务器
- PHP 7.2及必要扩展
使用以下命令安装基础组件:
sudo apt install -y mariadb-server apache2 php libapache2-mod-php \ php-{gd,common,mail,mail-mime,mysql,pear,db,mbstring,xml,curl}注意:Ubuntu 18.04默认仓库中的PHP版本为7.2,这与Daloradius的兼容性最佳。若系统提示有其他PHP版本可用,建议保持默认。
数据库安全初始化: 运行MySQL安全脚本,设置root密码并移除匿名用户:
sudo mysql_secure_installation创建专用于RADIUS的数据库和用户:
CREATE DATABASE radius; GRANT ALL ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'radius123'; FLUSH PRIVILEGES;2. FreeRadius 3.0深度安装与配置
FreeRadius作为核心认证服务,其配置精度直接影响系统稳定性。安装时需特别注意模块依赖:
sudo apt install -y freeradius freeradius-mysql freeradius-utils数据库架构导入: 将FreeRadius的MySQL表结构导入新建的radius数据库:
sudo mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql验证表创建是否成功:
sudo mysql -u radius -p -e "USE radius; SHOW TABLES;"SQL模块激活与配置: 创建符号链接启用SQL模块:
sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/编辑SQL配置文件/etc/freeradius/3.0/mods-enabled/sql,确保以下参数正确:
sql { driver = "rlm_sql_mysql" dialect = "mysql" server = "localhost" port = 3306 login = "radius" password = "radius123" radius_db = "radius" read_clients = yes client_table = "nas" }修正文件权限以避免服务启动失败:
sudo chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql3. Daloradius Web管理界面部署
Daloradius作为FreeRadius的GUI前端,极大简化了用户和设备管理流程。下载最新版本并解压:
wget https://github.com/lirantal/daloradius/archive/master.zip unzip master.zip sudo mv daloradius-master /var/www/html/daloradius数据库表导入: 导入Daloradius所需的附加表结构:
sudo mysql -u root -p radius < /var/www/html/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql sudo mysql -u root -p radius < /var/www/html/daloradius/contrib/db/mysql-daloradius.sql配置文件调整: 复制示例配置文件并设置数据库连接:
sudo cp /var/www/html/daloradius/library/daloradius.conf.php.sample \ /var/www/html/daloradius/library/daloradius.conf.php编辑配置文件的关键参数:
$configValues['CONFIG_DB_HOST'] = 'localhost'; $configValues['CONFIG_DB_PORT'] = '3306'; $configValues['CONFIG_DB_USER'] = 'radius'; $configValues['CONFIG_DB_PASS'] = 'radius123'; $configValues['CONFIG_DB_NAME'] = 'radius';设置正确的目录权限:
sudo chown -R www-data:www-data /var/www/html/daloradius/ sudo chmod 664 /var/www/html/daloradius/library/daloradius.conf.php4. 系统联调与实战测试
服务启动与验证: 重启相关服务使配置生效:
sudo systemctl restart freeradius apache2客户端配置: 在/etc/freeradius/3.0/clients.conf中添加网络设备作为合法客户端:
client router1 { ipaddr = 192.168.1.100 secret = shared_secret_123 shortname = office-router }测试用户创建: 通过Daloradius界面或直接操作数据库添加测试用户:
INSERT INTO radcheck (username, attribute, op, value) VALUES ('testuser', 'Cleartext-Password', ':=', 'test123');认证流程验证: 使用radtest工具进行本地测试:
radtest testuser test123 localhost 0 testing123成功响应应包含"Access-Accept"消息。若测试失败,可通过调试模式排查:
sudo systemctl stop freeradius sudo freeradius -X5. 高级配置与性能优化
日志管理: 调整FreeRadius日志级别(/etc/freeradius/3.0/radiusd.conf):
log { destination = files colourise = yes auth = yes auth_badpass = yes auth_goodpass = yes }性能调优参数: 在/etc/freeradius/3.0/radiusd.conf中优化线程池:
thread pool { start_servers = 5 max_servers = 32 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 }安全加固措施:
- 修改默认的共享密钥
- 限制客户端IP范围
- 启用TLS加密通信
- 定期备份数据库
# 数据库备份示例 mysqldump -u radius -p radius > radius_backup_$(date +%F).sql6. 常见问题解决方案
MySQL连接错误: 若遇到SQL模块连接失败,检查:
- 数据库服务是否运行
- 用户名密码是否正确
- radius用户是否有足够权限
认证超时问题: 调整/etc/freeradius/3.0/radiusd.conf中的响应超时:
response_window = 20Web界面访问问题: 确认Apache配置正确,特别是:
- 已启用mod_rewrite
- DocumentRoot指向正确路径
- 目录有适当权限
sudo a2enmod rewrite sudo systemctl restart apache2在实际部署中遇到最多的问题是权限配置不当。一个实用的检查清单:
- FreeRadius进程用户(freerad)对配置文件的读取权限
- Apache用户(www-data)对Daloradius目录的写入权限
- MySQL用户(radius)的数据库权限
- 日志目录的可写权限
经过多次实际部署验证,本文介绍的方法在Ubuntu 18.04上具有最高的成功率。关键点在于:精确的版本匹配、循序渐进的配置步骤、以及每个环节后的验证测试。
