目前社区主流SSL VPN有两个分支:openvpn和ocserv,通过官网和检索到的资料对比前者服务端比较强大,后者客户端和移动端支持更好,二者并不兼容;

另外前者商业化封装更好,偏向商业化,后者对开发者更友好。

最近在学习vpn时对移动端要求高(主要是有国密算法相关积累),因此选择了后者;

虽然社区文档已经比较全面,但使用过程中还是遇到不少曲折。

学习过程中使用软件相关版本如下:

  1. ocserv:ocserv-1.1.6
  2. radius:freeradius-server-3.2.3
  3. radius客户端:radcli-1.3.0
  4. 数据库: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认证的更多相关文章

  1. Radius 认证协议介绍-兼rfc导读

    老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authent ...

  2. Windows Server 搭建企业无线认证(Radius认证方案)

    认证协议介绍: 扩展认证协议EAP(Extensible Authentication Protocol) 是一个在无线网络或点对点连线中普遍使用的认证框架.它被定义在RFC 3748中,并且使RFC ...

  3. 基于Apache2配置Radius认证

    基于Apache配置RADIUS有两个插件可用:mod_auth_radius和mod_auth_xradius,推荐使用mod_auth_xradius,mod_auth_radius不支持多个RA ...

  4. Radius 远程用户拨号认证系统

    RADIUS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系 ...

  5. SpringBoot整合Shiro 四:认证+授权

    搭建环境见: SpringBoot整合Shiro 一:搭建环境 shiro配置类见: SpringBoot整合Shiro 二:Shiro配置类 shiro整合Mybatis见:SpringBoot整合 ...

  6. freeradius+xl2tp+mysql整合

    freeradius+xl2tp+mysql整合 搭了5个小时,可以说是入门到精通了.首先请确认你已经搭建好L2TP,并可以正常使用.  如何在Ubuntu下配置L2TP VPN L2TP使用radi ...

  7. PostgreSQL 9.5 客户端认证

    PostgreSQL 9.5 客户端认证 当一个客户端应用连接一个数据库服务器时,它将指定以哪个PostgreSQL 数据库用户名连接,就像我们以一个特定用户登录一台 Unix 计算机一样.在 SQL ...

  8. BAS/BRAS/RADIUS简介

    标签: java radius协议   linux radius认证服务器   转自: http://blog.csdn.net/sun93732/article/details/5999274 由R ...

  9. PAP认证方式原理和实现

    PAP认证协议 基本描述: Password Authentication Protocol 口令认证协议 PAP认证过程非常简单,二次握手机制,使用明文格式发送用户名和密码,发起方为被认证方,可以做 ...

  10. 【转】 浅谈Radius协议

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

随机推荐

  1. 硬盘分区标准:GPT与MBR

    硬盘分区表的格式选择有二: 说明 格式化命令 MBR 主引导记录,分区表数据存储在硬盘的第一个扇区 fdisk <盘符> GPT GUID分区表,分别占用了硬盘第1个.第2个和后面连续的3 ...

  2. UE构建基础和实践:五、CI/CD平台自动化打包

    序言 使用CI/CD平台构建(这里使用蓝盾平台)主要是通过平台脚本运行上一章的py脚本并传递参数(即把py中的参数开放给配置平台脚本配置). Build.py 重构 我们需要在py脚本里面解析和设置参 ...

  3. 微服务性能分析工具 Pyroscope 初体验

    Go 自带接口性能分析工具 pprof,较为常用的有以下 4 种分析: CPU Profiling: CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主 ...

  4. 记一次 HTTPS 抓包分析和 SNI 的思考

    日常听说 HTTPS 是加密协议,那现实中的 HTTPS 流量,是真的完全加密吗? --答案是,不一定.原因嘛,抓个包就知道了. 我们用 curl 命令触发一下: curl -v 'https://s ...

  5. 掌握Spring条件装配的秘密武器

    本文分享自华为云社区<Spring高手之路9--掌握Spring条件装配的秘密武器>,作者:砖业洋__. 在Spring框架中,条件装配是一个强大的功能,可以帮助我们更好地管理和控制Bea ...

  6. Cilium系列-11-启用带宽管理器

    系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...

  7. jwt实现token鉴权(nodejs koa)

    为什么需要token 在后台管理系统中,我们通常使用cookie-session的方式用于鉴权,jwt实现token鉴权(nodejs koa) 但这种方式存在着以下问题 比如cookie的容量太小. ...

  8. 了解 HarmonyOS

    引言 在开始 HarmonyOS 开发之前,了解其背景.特点和架构是非常重要的.本章将为你提供一个全面的 HarmonyOS 概览. 目录 什么是 HarmonyOS HarmonyOS 的发展历程 ...

  9. MySQL面试题——隔离级别相关面试题

    隔离级别相关面试题 MySQL事务隔离级别 未提交读--可以读到其他事务未提交的数据(最新的版本) 错误现象:脏读.不可重复读.幻读的现象 提交读(RC)--可以读到其他事务已提交的数据(最新已提交的 ...

  10. Docker Swarm + Harbor + Portainer 打造高可用,高伸缩,集群自动化部署,更新。

    Docker Swarm是Docker官方自带的容器编排工具,Swarm,Compose,Machine合称Docker三剑客.Docker Swarm对于中小型应用来说,还是比较方便,灵活,当然K8 ...