如何搭建一个RADIUS服务器?
1. 系统环境
1.1.操作系统
- Ubuntu-20.04.1 (kernel: 5.15.0-58-generic)
1.2.所需软件
- FreeRADIUS
![]()
- MariaDB
![]()
1.3.注意事项
- 本文提到的所有操作,都是以root 身份执行;
2. FreeRADIUS的安装
2.1. 安装FreeRADIUS服务器程序
以root身份登录到终端,执行如下命令:
- apt install freeradius
安装FreeRADIUS工具包,以root身份登录到终端,执行如下命令:
- apt install freeradius-utils
- 注:该工具包用于测试freeradius。
2.2 修改用户管理配置文件
2.2.1 FreeRADIUS的测试
打开/etc/freeradius/3.0/users文件,查找"steve Cleartext-Password := "testing"(73-81)", 取消该段内容的注释。
2.2.2 修改防火墙配置
修改防火墙配置,允许freeradius所使用的端口1812和1813。命令如下所示:
- iptables -A INPUT -p udp --dport 1812 -j ACCEPT
- iptables -A INPUT -p udp --dport 1813 -j ACCEPT
2.3 以调试方式启动freeradius
执行如下命令:
- freeradius -X
正常情况下,终端会输出如下信息:

2.4.使用测试工具测试
打开一个新的终端,以root 身份登录,执行如下命令:
- radtest steve testing localhost 0 testing123
正常情况下,终端会输出如下信息:

输出"Access-Accept"表示成功,"Access-Reject"表示失败。
3. MariaDB的安装
3.1. 安装MariaDB服务器程序
以root 身份登录到终端,执行如下命令:
- apt install mariadb-server
安装成功后,使用systemctl命令可以查看到mariadb服务是否已经开启。

3.2. 安装MariaDB客户端程序
以root 身份登录到终端,执行如下命令:
- apt-get installmariadb-client
3.3 MariaDB的测试
3.3.1 创建数据库
以root身份登录到终端,执行如下命令:
- mysql -u root -p
要求输入密码时,直接回车即可。
mysql> create databaseradius;
mysql> grant all on radius.* to radius@localhost identified by“radpass”;
mysql> exit;

3.3.2 导入表结构
以root身份登录到终端,执行如下命令:
- mysql -u root radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
上面的指令,共导入8个表,分别是:
- nas,网络设备表
- radacct,计费情况表
- radcheck,用户检查信息表
- radgroupcheck,用户组检查信息表
- radgroupreply,用户组回复信息表
- radpostautch,认证后处理信息,可以包括认证请求成功和拒绝的记录radreply 用户回复信息表
- radusergroup,用户和组关系表
可以进入radius 数据库,查看导入的表结构,执行如下命令:
mysql -u root radius
mysql> show tables;

3.3.3 建立组信息和用户信息
在终端输入”mysql -u root radius“,打开数据库,执行如下命令:
1. 新建'user'组
mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Auth- Type',':=','Local');
mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Service-Type',':=','Framed-User');
mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Framed-IP-Address',':=','255.255.255.255');
mysql> insert into radgroupcheck (groupname,attribute,op,value) values ('usr','Framed-IP-Netmask',':=','255.255.255.0');
2. 查看新建组

3. 新建'test'用户
mysql> insert into radcheck (username,attribute,op,value) values ('test','CleartextPassword',':=','testpwd');
4. 查看新建用户

5. 将用户加入组中
mysql> insert into radusergroup (username,groupname) values ('test','user');
6. 查看用户和组信息

4. FreeRADIUS与MariaDB的对接
4.1 安装freeradius-mysql组件
以root身份登录到终端,执行如下命令:
- apt installfreeradius-mysql
4.2. 重启MariaDB服务
以root身份登录到终端,执行如下命令:
- systemctl restart mariadb
4.3 使能FreeRADIUS中的mysql认证配置
默认mods-enabled目录下没有该配置,需要创建一个软链接到mods-available目录下的sql文件,执行如下命令:
- cd /etc/freeradius/3.0/mods-enabled
- ln -s ../mods-available/sql

4.4. 修改FreeRADIUS中的mysql认证配置
直接修改/etc/freeradius/3.0/mods-available/sql文件,将dialect = "sqlite"这一行,修改为dialect = "mysql"。

将driver = "rlm_sql_null"这一行,修改为driver = "rlm_sql_mysql"。

将tsl相关的内容屏蔽,具体如下:

同时需要取消"Connection info"部分注释,具体如下:

4.5. 测试通过数据库做用户认证
1. 重新以调试方式运行freeradius,执行如下命令:
- systemctl stop freeradius
- freeradius -X
正常情况下,终端会输出如下信息:

2. 打开一个新的终端,以root 身份登录,执行如下命令:
- radtest test testpwd localhost 1812 testing123
正常情况下,终端会输出如下信息:

5. 常见错误
1. Failed binding to auth address * port 1812 bound to serverdefault: Address already in use /usr/local/etc/raddb/sites-enabled/default[59]:Error binding to port for 0.0.0.0 port 1812
原因:已经有一个FreeRADIUS 实例在运行了
解决:systemctl stop freeradius.service
2. 安装mariadb-server 报错
Job for mariadb.service failed because thecontrol process exited with error code.
See "systemctl status mariadb.service"and "journalctl -xe" for details.
原因:查看/var/log/mysql/error.log 文件,提示:
[ERROR] Unknown/unsupported storage engine: InnoDB
解决:sudo apt remove --purgemysql-server mysql-client sudo rm -rf /var/run/mysql*
sudo apt autoremovesudo apt autoclean
3. 安装mariadb-server报错
Job for mariadb.service failed because atimeout was exceeded.
See "systemctl status mariadb.service" and"journalctl -xe" for details.
原因:系统之前安装了mysql,它会激活一个与mariadb不兼容的apparmor配置文件,apt remove –purge操作只能删除配置文件,但不会停用/卸载它。只有手动卸载它,mariadb才能不受apparmor的阻碍,正常工作。
解决:echo "/usr/sbin/mysqld{ }" >> /etc/apparmor.d/usr.sbin.mysqld
apparmor_parser -v -R/etc/apparmor.d/usr.sbin.mysqld
相关文章:
如何搭建一个RADIUS服务器?
1. 系统环境 1.1.操作系统 Ubuntu-20.04.1 (kernel: 5.15.0-58-generic) 1.2.所需软件 FreeRADIUS MariaDB 1.3.注意事项 本文提到的所有操作,都是以root 身份执行; 2. FreeRADIUS的安装 2.1. 安装FreeRADIUS服务器程序 以…...
双机热备综合实验
1,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 2,办公区上网用户限制流量不超过100M,其中销售部人员在其基…...
Java和Python的图结构如何实现图的深度优先搜索算法
Java和Python的图结构如何实现图的深度优先搜索算法? 在Java和Python中,实现深度优先搜索(DFS)算法的基本思路都是通过递归或栈来探索图的各个节点。 Java实现DFS:Java import java.util.ArrayList; import java.uti…...
Web学习day05
html&css 目录 html&css 文章目录 一、web开发 1.1工作流程 1.2开发技术 二、HTML 2.1HTML规范 2.2基础标签 2.2.1标题 2.2.2水平线 2.2.3段落和换行 2.2.4文字效果 2.2.5超链接 2.2.6图像 2.2.7音频和视频 三、布局标签 3.1列表 3.2容器 3.3表格 3…...
LINUX客户端client(socket、connect)实现客户端发送,服务器接收
SERVICE端见前一篇文章 5. 客户端连接函数 connect()(与前面的bind一样) int connect (int sockfd, struct sockaddr * serv_addr, int addrlen) 参数: sockfd: 通过 socket() 函数拿到的 fd addr:struct sockaddr 的结构体变量地址 addr…...
【网络安全科普】勒索病毒 防护指南
勒索病毒简介 勒索病毒是一种恶意软件,也称为勒索软件(Ransomware),其主要目的是在感染计算机后加密用户文件,并要求用户支付赎金以获取解密密钥。这种类型的恶意软件通常通过电子邮件附件、恶意链接、下载的软件或漏洞…...
TFHE库,fftw和googletest库安装
点个关注吧!本文主要关注于TFHE的安装与常见的问题 1.TFHE的git链接: https://github.com/tfhe/tfhe git clone --recurse-submodules --branchmaster https://github.com/tfhe/tfhe.git 2.安装 mkdir build cd build cmake ../src -DENABLE_TESTSon -D…...
关于Spring Boot IOCDC,看这一篇就够了
一,Spring是什么及常用注解 先说什么是spring,在前面的博客中已经知道了,spring是一个开源框架,为了让我们开发更加简单,那关于ioc呢,一句话概况一下:Spring就是包含了众多工具方法的Ioc容器 …...
Model Import Settings
前言 在可视化3D世界中,模型是3D世界的核心,你可以没有贴图,可以没有特效,甚至可以没有用户交互界面,但必须得有模型来描述世界的基本样貌。 在3D世界中,由点线面构成了模型的轮廓;由UV和纹理&a…...
腾讯云COS托管静态网站,以及如何解决访问出现了下载网页的情况
腾讯云对象存储(Cloud Object Storage,简称COS),与其他云厂商所提供的云对象存储都是面向非结构化数据,只是每个云厂商的叫法有别于他家,或许是更能彰显厂商的品牌吧! 但不管云厂商怎么给云对象…...
软件设计模式: 抽象工厂
抽象工厂 一、解决的问题 抽象工厂模式主要解决了在具有多个产品族的情况下,如何统一管理创建相关产品对象的问题。 当系统需要创建一系列相互关联或相互依赖的对象,并且这些对象可以形成多个不同的产品族时,如果直接由客户端去分别创建这…...
使用Vuepress搭建个人网站
网站地址:bloggo.chat...
lua 写一个 不同时区之间转换日期和时间 函数
这个函数用于调整时间戳以适应不同的时区。它接受五个参数:format、timeStamp、dontFixForTimeOffset、currentServerTimeZone和showLog。返回 os.date,可以转化成指定格式的年月日时间 ### 功能 该函数的主要功能是根据给定的时区偏移量调整时间戳&am…...
谷粒商城——session共享
问题1 一个系统中不同微服务的session共享。 问题1的解决办法 1. session复制的方法:微服务的副本之间通过通信共享session。这样每一个微服务的副本都会保存所有的session。(缺点:造成大量的通信,多处额外的通信开销。&#x…...
Java 语言及其常用集合类的操作,以及反射机制与注解
目录 一、Java 语言概述 二、Java 集合框架 ArrayList 操作示例: HashMap 操作示例: 三、反射机制 1. 反射的示例 五、总结 Java 是一种广泛使用的高级编程语言,因其平台独立性、简洁性及丰富的 API 而备受开发者青睐。 一、Java 语言…...
《系统架构设计师教程(第2版)》第12章-信息系统架构设计理论与实践-02-信息系统架构
文章目录 1. 概述1.1 信息系统架构(ISA)1.2 架构风格 2. 信息系统架构分类2.1 信息系统物理结构2.1.1 集中式结构2.1.2 分布式结构 2.2 信息系统的逻辑结构1)横向综合2)纵向综合3)纵横综合 3. 信息系统架构的一般原理4…...
用html做python教程01
用html做python教程01 前言开肝构思实操额外修饰更换字体自适应 最后 前言 今天打开csdn的时候,看见csdn给我推荐了一个python技能书。 说实话,做得真不错。再看看我自己,有亿点差距😟。 开肝 先创建一个文件,后缀…...
PHP接口与性状的优雅应用
本文由 ChatMoney团队出品 在PHP编程中,接口是一种定义对象之间交互契约的强大工具。其核心目的不是让一个对象紧耦合地依赖另一个对象的特定身份,而是基于另一对象的能力进行交互。通过接口,我们的代码可以实现与依赖的解耦,从而…...
R语言模型评估网格搜索
### 网格搜索 ### install.packages("gbm") set.seed(1234) library(caret) library(gbm) fitControl <- trainControl(method = repeatedcv,number = 10,repeats = 5) # 设置网格搜索的参数池 gbmGrid <- expand.grid(interaction.depth = c(3,5,9),n.trees =…...
Haproxy服务
目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
