Ocserv整合Radius认证
目前社区主流SSL VPN有两个分支:openvpn和ocserv,通过官网和检索到的资料对比前者服务端比较强大,后者客户端和移动端支持更好,二者并不兼容;
另外前者商业化封装更好,偏向商业化,后者对开发者更友好。
最近在学习vpn时对移动端要求高(主要是有国密算法相关积累),因此选择了后者;
虽然社区文档已经比较全面,但使用过程中还是遇到不少曲折。
学习过程中使用软件相关版本如下:
- ocserv:ocserv-1.1.6
- radius:freeradius-server-3.2.3
- radius客户端:radcli-1.3.0
- 数据库:mysql-5.7.24
首先是按照文档安装、配置好ocserv和freeradius之后单独测试都正常通过,但是Ocserv配置了Radius认证之后启动报错,服务启动失败,错误如下:
error: vhost:default: unknown or unsupported auth method: radius[config=/usr/local/ocserv/conf/radiusclient.conf,groupconfig=true]
从字面看就是不支持radius认证方法,翻看官方文档确实有这么一段描述:
NOTE: radcli (or libradius-client) need to be installed before ocserv. If ocserv is compiled before radius libraries, it will build without radius support. Even if radius libraries are compiled/installed afterwards, it will not work, and ocserv will return errors when you try to start the service with RADIUS authentication enabled.
大意是radclient必须先于ocserv安装,回忆安装过程好像是把顺序搞反了,于是又重新安装了一次ocserv,再次启动,错误没啥变化~
翻看config.log,发现了错误:
Package radcli was not found in the pkg-config search path.
Perhaps you should add the directory containing radcli.pc
to the PKG_CONFIG_PATH environment variable
No package 'radcli' found
configure:13172: $? = 1
configure:13186: result: no
No package 'radcli' found
configure:13218: checking for freeradius client library
configure:13236: gcc -o conftest -g -O2 -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-stringop-truncation conftest.c -lfreeradius-client >&5
conftest.c:46:15: fatal error: freeradius-client.h: No such file or directory
46 | #include <freeradius-client.h>
| ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
原来radclient通过源码编译安装,pkg-config找不到库文件;
其实源码中是包含了.pc文件的,只要放到PKG_CONFIG_PATH相关目录下就好了:
cp ./radcli-1.3.0/lib/radcli.pc /usr/lib64/pkgconfig/
通过命令行测试,ocserv服务端和radius控制台显示认证成功
openconnect -v -l --dump-http-traffic --cafile=/opt/keys/ca.crt 192.168.9.118:1194
(2) sql: SQL query returned: success
(2) sql: 1 record(s) updated
rlm_sql (sql): Released connection (5)
(2) [sql] = ok
(2) [exec] = noop
(2) policy remove_reply_message_if_eap {
(2) ......
(2) } # post-auth = ok
(2) Sent Access-Accept Id 12 from 127.0.0.1:1812 to 127.0.0.1:33997 length 20
编译安装过程中可能遇到其他类似依赖缺失问题,configure阶段大部分是通过pkg-config寻找已安装依赖包,如果确认本地已经存在依赖库,通过配置PKG_CONFIG_PATH指向.pc文件存储目录即可解决,如果本地找不到依赖库则需安装;另外不排除安装后还报依赖缺失,有两种情况:
- 安装过程中没有生成.pc包配置文件,需要参考wiki文档手写.pc文件拷贝至相应目录下。
- 提示缺少.h文件或者.so文件,如果提示缺少.so文件,可以尝试扩展LD_LIBRARY_PATH,也可手动将已安装.h或者.so/.la文件拷贝到系统默认目录例如/usr/include或者/usr/lib目录或者建立软连接。
官网地址:(openvpn站点需要过墙才能访问)
[1]https://ocserv.gitlab.io/www/manual.html
[2]https://openvpn.net/
Ocserv整合Radius认证的更多相关文章
- Radius 认证协议介绍-兼rfc导读
老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authent ...
- Windows Server 搭建企业无线认证(Radius认证方案)
认证协议介绍: 扩展认证协议EAP(Extensible Authentication Protocol) 是一个在无线网络或点对点连线中普遍使用的认证框架.它被定义在RFC 3748中,并且使RFC ...
- 基于Apache2配置Radius认证
基于Apache配置RADIUS有两个插件可用:mod_auth_radius和mod_auth_xradius,推荐使用mod_auth_xradius,mod_auth_radius不支持多个RA ...
- Radius 远程用户拨号认证系统
RADIUS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系 ...
- SpringBoot整合Shiro 四:认证+授权
搭建环境见: SpringBoot整合Shiro 一:搭建环境 shiro配置类见: SpringBoot整合Shiro 二:Shiro配置类 shiro整合Mybatis见:SpringBoot整合 ...
- freeradius+xl2tp+mysql整合
freeradius+xl2tp+mysql整合 搭了5个小时,可以说是入门到精通了.首先请确认你已经搭建好L2TP,并可以正常使用. 如何在Ubuntu下配置L2TP VPN L2TP使用radi ...
- PostgreSQL 9.5 客户端认证
PostgreSQL 9.5 客户端认证 当一个客户端应用连接一个数据库服务器时,它将指定以哪个PostgreSQL 数据库用户名连接,就像我们以一个特定用户登录一台 Unix 计算机一样.在 SQL ...
- BAS/BRAS/RADIUS简介
标签: java radius协议 linux radius认证服务器 转自: http://blog.csdn.net/sun93732/article/details/5999274 由R ...
- PAP认证方式原理和实现
PAP认证协议 基本描述: Password Authentication Protocol 口令认证协议 PAP认证过程非常简单,二次握手机制,使用明文格式发送用户名和密码,发起方为被认证方,可以做 ...
- 【转】 浅谈Radius协议
浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报 分类: Radius协议分析(6) 从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...
随机推荐
- idea专业版和idea社区版整合Tomcat,并将war包部署
目录 一.idea专业版部署 二.idea社区版部署 三.错误案例 开发过程中,由于需要运用云平台,所以从新配置开发环境,其它或多或少有些许问题,但解决起来较为轻松.而对于部署注册中心Eureka时, ...
- C#解析匿名JSON数据
C#解析匿名JSON数据 使用工具:Newtonsoft.Json 使用方式: //模拟数据 var jsonData = JsonConvert.SerializeObject(new { Name ...
- 关于No changes detected
查看app在settings.py文件夹中是否有注册.
- 使用kafka自带脚本进行压力测试
前言 kafka官方自带压力测试脚本: 消费者压力测试:kafka-consumer-perf-test.sh 生产者压力测试:kafka-producer-perf-test.sh 测试节点: 17 ...
- CentOS7升级python3到最新版
前言 最近在学习sanic,需要python3.7以上的版本,而centos7默认的python版本是3.6.8,所以升级了一下版本,在此笔录. 步骤 首先,从python官网下载最新版的python ...
- 数据结构之B树
1 引言 B-tree,B即Balanced,是自平衡的多叉搜索树,用于组织和存储大量数据,以及数据库和文件系统等需要高效查找和插入操作的应用中. 为什么是"大量数据"?当主存不足 ...
- ChatGPT赋能低代码开发:打造智能应用的双重引擎
摘要:本文摘自葡萄城低代码产品活字格的资深用户(格友超哥)所撰写的文章:<惊叹表现!活字格+ChatGPT:低代码开发智能应用的巨大潜力>. ChatGPT的functions函数使用方 ...
- 千万级数据的表,我把慢sql优化后性能提升30倍!
分享技术,用心生活 背景:系统中有一个统计页面加载特别慢,前端设置的40s超时时间都加载不出来数据,因为是个统计页面,基本上一猜就知道是mysql的语句有问题,遗留了很久没有解决,正好趁不忙的时候,下 ...
- WPF学习 - 自定义Panel
WPF中的Panel(面板),是继承自FrameworkElement的抽象类,表示一个可以用来排列子元素的面板. 在WPF中,一种预设了几种常用的面板,如Grid.StackPanel.WrapPa ...
- QA|不同模块之间的引用(导入问题)问题;|Pycharm
结构如图,在xxu的test.py中想要导入t2包中的sayhello和word两个方法 注意:首先需要打开xxu和t2的上层目录,因为解释器是从打开的那个文件开始查找的,所以这里应该打开B01_01 ...