debian8上ocserv anyconnect对接sspanel v3 mod(魔改版)。

最后修改日期:2018-04-1
文章目录

我们知道,sspanel v3 mod(sspanel魔改版)是支持vpn开户之类的功能的,这里记录一下anyconnect和sspanel的对接。

基础准备

sspanel面板

这里参考我以前发的文章:
sspanel面板的安装:sspanel v3 魔改版前端安装

对接

这里默认已经按照sspanel面板里面的教程安装好了freeradius的服务端。

freeradius服务端设置

测试freeradius服务端

由于在之前我们已经把freeradius和服务端的数据库设置好了,如果你已经创建了用户,那么在freeradius的数据库当中应该能看到用户。
浏览器打开 http://你的vps ip/phpmyadmin
用户 : root
密码 :安装 lnmp 时设置的
查看freeradius数据库radcheck表里面的用户名和密码,username是用户名,value是密码。记下来之后会用得到。

回到freeradius的服务端,先停止正在运行的freeradius服务端。

service freeradius stop

新建一个screen,用以调试freeradius。

screen -S freeradius

如果提示 -bash: screen: command not found,则安装screen apt install screen
以调试模式运行freeradius。

freeradius -X

然后在键盘上先输入 ctrl+A 然后按 D 切换SSH窗口。
执行以下命令。

radtest 用户名 密码 localhost 0 testing123

如果看到 Access-Accept则说明服务端设置正确。
如果看到 Access-Reject 说明验证失败,你需要检查使用的命令。
如果修改了主机名,一定要当心出错。
当我们确认freeradius工作正常之后我们用freeradius客户端来访问freeradius服务端。不过在那之前我们需要先设置freeradius服务端设置。
首先打开设置文件(服务端上的客户端配置)/etc/freeradius/clients.conf
我们在这份文件可以对每个客户端进行设置(以ip区分),以及所有客户端的一些全局设置。内容很多,我们不一一详谈了。
我们直接找到第30行的 client localhost,我们刚才测试工具之所以能正确访问freeradius服务端,是因为默认设置下,localhost已被加入这份设置,即localhost可以访问freeradius服务端。

而我们之前在测试命令中使用的 testing123在这份文件的第101行,这个设置用来指定客户端发送请求时带的密钥,若密钥错误将导致服务端返回验证失败的信息。这个设置很重要,我们这里不去修改他,但是真正的生产环境需要修改这个设置。

为了方便起见,我们不另外再开一个客户端设置了,我们直接修改现有的客户端设置即 client localhost 的设置中的客户端ip设置。找到第34行的 ipaddr = 127.0.0.1修改为 ipaddr = anyconnect所在服务器的IP
保存这个文件。注意debian8中不支持 ipaddr = * 或者 ipv4addr = *这样的写法,具体原因未知,但是centos是可以写成ipv4addr = * 让任何地址都可以连接服务端。
freeradius服务端测试完成后,可以用ctrl+c退出调试模式,用service freeradius start 来后台启动freeradius。

freeradius客户端

这里我们在装有anyconnect的服务器上安装freeradius的客户端。
安装相关依赖

apt install gcc make -y

安装freeradius客户端

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.7.tar.gz
tar -zxvf freeradius-client-1.1.7.tar.gz
cd freeradius-client-1.1.7
./configure
make 
make install

为了测试freeradius服务端在这台服务器上也可以访问,我们可以在这台服务器上也安装测试工具并进行测试(假设freeradius服务器地址为1.1.1.1)
安装freeradius调试工具。

apt-get install freeradius-utils -y

测试。

radtest 用户名 密码 1.1.1.1 0 testing123

确认无误后我们进行接下来的设置。首先我们打开freeradius客户端设置文件。
修改 /usr/local/etc/radiusclient/radiusclient.conf
第37行改为 authserver 1.1.1.1
第42行改为 acctserver 1.1.1.1
保存这份文件
打开freeradius客户端的服务器设置
修改 /usr/local/etc/radiusclient/servers
添加1.1.1.1 testing123至最后一行,保存这份文件。
保存这份文件。自此,我们已经设置好了freeradius客户端需要做的设置。我们接下来让anyconnect使用freeradius作为验证模块。

ocserv anyconnect

ocserv anyconnect的安装:
自签SSL证书版本安装(客户端连接时会出现警告,但是更简单):安装自签SSL证书ocserv
可信SSL证书版本安装(客户端连接时不会出现警告,但是更复杂):可信SSL证书版ocserv
这一步可以不添加VPN用户。
注意:先安装ocserv anyconnect再安装freeradius-client会出现ocserv anyconnect没有freeradius模块,导致ocserv anyconnect无法正常启动,这个时候只需要重新编译安装ocserv anyconnect即可。
修改ocserv配置文件 /etc/ocserv/ocserv.conf
将第一行的验证方式修改为:

auth = "radius[config=/usr/local/etc/radiusclient/radiusclient.conf,groupconfig=true]"

这样,我们就使得ocserv使用freeradius来进行用户验证。
使用ocserv -f -d 1来测试一下,没有问题的话则ctrl+C退出。然后使用 service ocserv start在后台来启动ocserv。

结束

那么关于ocserv对接sspanel的教程就到这里结束了。
参考链接:http://www.opscaff.com/2017/03/01/ocserv-radius-%E8%AE%A4%E8%AF%81%E6%90%AD%E5%BB%BA-freeradius-mysql/

原文链接:,转发请注明来源!

发表评论

  • 9 Responses to “debian8上ocserv anyconnect对接sspanel v3 mod(魔改版)。”
    • Chikage

      老哥,怎么统计流量和限制等级用户访问呢

      回复
    • jhon

      Skipping unknown option 'cookie-validity'
      Setting 'radius' as primary authentication method
      Enabling 'certificate' as authentication method
      Setting 'radius' as accounting method
      listening (TCP) on 0.0.0.0:443...
      listening (UDP) on 0.0.0.0:443...
      radius acct initialization error
      ------------------------------------------------------------------
      老哥,这个是acctserver的1813端口没通吗?

      回复
    • jhon

      Skipping unknown option 'cookie-validity'
      Setting 'radius' as primary authentication method
      Enabling 'certificate' as authentication method
      Setting 'radius' as accounting method
      listening (TCP) on 0.0.0.0:443...
      listening (UDP) on 0.0.0.0:443...
      ocserv[1577]: main: initialized ocserv 0.10.9
      ocserv[1578]: sec-mod: reading supplemental config from radius
      ocserv[1578]: radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient/radiusclient.conf: No such file or directory
      radius acct initialization error
      ocserv[1577]: error connecting to sec-mod socket '/var/run/ocserv-socket.1577': No such file or directory
      ocserv[1577]: main: main.c:497: ocserv-secmod died unexpectedly
      ocserv[1577]: main: termination request received; waiting for children to die
      老哥问下
      这是什么原因

      回复
      • 这里提示,出现了一个未知的选项,cookie-validity,提示不存在/etc/radiusclient/radiusclient.conf, 你安装 radius client了吗?

        自宅警备回复私信
        • 这个问题已经解决了,我的ocserv.conf没配置好。但是现在又出现了新的问题。。。
          Skipping unknown option 'cookie-validity'
          Setting 'radius' as primary authentication method
          Enabling 'certificate' as authentication method
          Setting 'radius' as accounting method
          listening (TCP) on 0.0.0.0:443...
          listening (UDP) on 0.0.0.0:443...
          Segmentation fault
          [[email protected] ~]# ^C
          [[email protected] ~]# ocserv -f -d 10
          Skipping unknown option 'cookie-validity'
          Setting 'radius' as primary authentication method
          Enabling 'certificate' as authentication method
          Setting 'radius' as accounting method
          listening (TCP) on 0.0.0.0:443...
          listening (UDP) on 0.0.0.0:443...
          ocserv[1507]: main: initializing control unix socket: /var/run/occtl.socket
          ocserv[1507]: main: initialized ocserv 0.10.9
          ocserv[1508]: sec-mod: reading supplemental config from radius
          ocserv[1508]: sec-mod: sec-mod initialized (socket: /var/run/ocserv-socket.1507)
          ocserv[1507]: TLS[<3>]: ASSERT: common.c:1110
          ocserv[1507]: TLS[<3>]: ASSERT: common.c:1110
          ocserv[1507]: TLS[<3>]: ASSERT: common.c:1110
          ocserv[1507]: TLS[<3>]: ASSERT: common.c:1110
          ocserv[1507]: TLS[<3>]: ASSERT: common.c:1110
          Segmentation fault
          [[email protected] ~]# ocserv[1508]: sec-mod: error receiving msg head: No such file or directory
          ocserv[1508]: sec-mod: error processing sync command from main
          这是有毒。。。

          jhon回复
          • 尝试一下最新版本的ocserv ftp://ftp.infradead.org/pub/ocserv/ocserv-0.11.12.tar.xz

            自宅警备回复私信
    • JJJACK

      大佬能求个赵大sspanel v3的前端吗 想研究下对接

      回复