Openconnect 服务端 ocserv 的部署

ocserv(Openconnect VPN Server)是一款开源的、兼容Cisco Anyconnect VPN的VPN服务端软件。由于思科在网络设备中的特殊地位,思科的VPN一直未被特殊照顾(其实这个VPN握手过程特征应该是较为明显的)。目前状况下通讯较为稳定,干扰较小。主要优势是多平台的支持,Windows、Android、iOS都能找到它的客户端。往往可以作为shadowsocks等代理的补充。


下面简要介绍一下部署过程,以在Ubuntu系统中的部署为例。

Ubuntu 18.04 可以直接使用apt-get install ocserv 安装,不是最新版本,不过够用,需要使用最新版本,或者系统是16.04或更早版本的可以参考以下从源码编译安装的步骤。

主页:http://www.infradead.org/ocserv/

下载页面:ftp://ftp.infradead.org/pub/ocserv/

首先在上面的下载页面中找到最新的Release后下载并解压:

必选依赖包:

可选依赖包:

编译工具:

编译安装:


接下来是配置,建立 /etc/ocserv 文件夹来存储相关的配置文件(改完记得重启ocserv):

1. 下载下来的ocserv中的 doc 文件夹中有 sample.config 这一例子文件,将其拷贝至 /etc/ocserv ,命名为 ocserv.conf ,用来存储ocserv的配置信息;

2. 新建 /etc/ocserv/ocpasswd 文件用来存储用户名密码

3. 将PEM格式的服务器证书,存储至 /etc/ocserv/server-cert.pem 文件中(包含证书链中的中级证书)

4. 将PEM格式的服务器私钥,存储至 /etc/ocserv/server-key.pem 文件中

5. 将PEM格式的根证书,存储至 /etc/ocserv/ca-cert.pem 文件中

(PS:如果有域名,建议申请一个 Let’s Encrypt 的免费证书。)

接着修改 /etc/ocserv/ocserv.conf 文件:

设置认证方式为plain,存储文件改成刚才设置的 /etc/ocserv/ocpasswd 文件:

可以修改允许同时连接的最大客户端数:

同一个账号能连接的最大客户端数:

修改ocserv使用的端口(客户端连接时候不填写端口的话默认使用443 使用非443端口时候,服务器填写:域名:端口号 这样的形式):

修改服务器证书和私钥配置:

修改根证书配置:

建议将dpd和cookie-timeout改大,避免客户端网络波动时候总是掉线以及无法及时自动重连:

配置VPN子网的的网段:

配置DNS服务器:

将其他私有地址排除,不路由:


添加用户,例:用户名testuser,密码test,用户组vpnusers:

然后连续两次键入密码即可。


修改 /etc/sysctl.conf 打开ipv4_forward:

执行以下命令使其生效:

配置iptables转发,注意和前面配置的网段保持一致(注意第二行,有的vps可能网卡名字不是eth0是别的,注意ifconfig查看一下):


参考文章:http://ttz.im/2014/02/1131

 

6 条评论

  1. 引用: Openconnect VPN 服务端 ocserv 的部署 – 飞羽博客 | CurryFish

  2. 晓南晚风 回复

    我也在用这个作为ss的补充,尤其在iso端使用非常稳定方便!不过服务端配置较为麻烦,还好我找到一个一键脚本

  3. Kobayashi 回复

    说一下现状,OpenConnect作者取消了route条数限制,增加了no-route参数(条数限制可能是200条)。另外,由于客户端不能同步跟进,基本上都与route支持还是200条,Android和Win OpenConnect客户端不支持no-route参数。最后,自己搭建后,实际使用速度不及ss一般,这算是干扰吧。如果不是iOS 9以下用户,全部推荐SS。

  4. 引用: VPN – OCServer for Cisco AnyConnect on Ubuntu 14.04 x64 – Yang

  5. Timtiantian 回复

    大佬,能否介绍下怎样使用 Let’s Encrypt 的免费证书 实现 ocserv 证书登录的操作吗 ?之前都是在OpenWrt上安装ocserv并采用自签证书的方式,结果在移动端导入user.p12证书后出现”Issuer not known”的问题,无法使用自签证书登录。(只能使用 用户名 + 密码的方式);我家里的OpenWrt上使用“acme.sh”申请了Let’s Encrypt的免费证书,并安装到 /etc/ocserv/ssl的目录,一共三个文件:ca-cert.pem , server-key.pem , server-cert.pem ,能否介绍一下 怎样采用 “Let’s Encrypt”申请的免费证书生成用户端可导入的user.p12证书 ?

    1. cokebar 文章作者 回复

      证书登录只能自签

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

请输入验证码 *