ocserv是Cisco Anyconnect的开源实现,为了降低对系统的依赖和免除linux不同发行版有不同的部署体验,建议不论你是新手还是老手,都使用docker(docker-compose)进行快速部署,部署完毕之后,你可以使用自己的配置进行替换。目前的版本为ocserv主线最新版本,内置证书自动部署和密码登录。在docker容器镜像的制作上,直接使用alpine做docker容器的系统,这样整个镜像可以做到22MB。
部署前的准备工作
安装docker
直接按照官方教程进行,以下为Linux安装脚本,注意不要
直接使用系统自带的源发布的docker.io这个包,要使用官方推荐的方式进行安装:
# curl -sSL https://get.docker.com | sh
## ubuntu
# source /usr/share/bash-completion/completions/docker
# cp /usr/share/bash-completion/completions/docker /etc/bash_completion.d/
安装docker-compose
如果你使用较新的Linux发行版,可以直接使用包管理器进行docker-compose的安装,否则一律建议从官方github直接安装二进制版本,如下:
# curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
开始部署
创建docker-compose.yml
version: '3'
services:
ocserv:
image: icodex/ocserv
volumes:
- ./opt/ocserv:/etc/ocserv:rw
environment:
- VPN_DOMAIN=ocserv.eu.org
- VPN_PORT=443
- IPV4_NETWORK=10.8.8.0/21
- IPV6_NETWORK=fda9:4efe:7e3b:03ea::/48
- VPN_USERNAME=username
- VPN_PASSWORD=password
privileged: true
network_mode: host
cap_add:
- NET_ADMIN
restart: always
使用vim编辑docker-compose.yml,编辑VPN_DOMAIN
、VPN_PORT
、USERNAME
、PASSWORD
这几个值,分别对应了连接使用的域名、端口、用户名、密码等。
然后先运行一次,运行完毕之后即可退出,待进一步配置ssl证书等操作。
# docker-compose up
当屏幕不再滚动时,即可按ctrl+c
退出。
进一步配置
替换web ssl证书
在上一步运行之后,会在当前目录下的./opt/ocserv
看到当前运行的配置文件,默认镜像中是自签名证书,不带管理web ssl证书的功能,这部分你可以使用acme.sh
自动签发,或者购买证书,然后将证书链替换生成的自签名web ssl证书。如果你不介意自签名证书的警告提示,可以忽略这步。
所需替换的证书有:
证书文件:./opt/ocserv/certs/server-cert.pem
私钥文件:./opt/ocserv/certs/server-key.pem
注意替换证书文件时,要使用fullchain,即包含中间证书的。
管理用户证书
默认会自动创建用户证书,你可以将./opt/ocserv/certs/client.pfx
拷贝到本地设备上,然后在anyconnect导入即可。如果要管理更多用户证书,建议使用xca进行GUI管理,这个软件是跨平台开源软件,可以自己签发ca和管理用户证书。具体使用可以自行搜索。
添加用户密码
如果你不想使用用户证书这种方式登录服务器,可以使用用户密码登录,如新增用户:
docker exec -it $(docker ps -a | grep ocserv | awk '{print $1}') ocpasswd yourname
更多信息,请参考官方文档:https://ocserv.gitlab.io/www/recipes.html
客户端下载
ocserv是Cisco Anyconnect的开源实现,因此这里可以直接使用Cisco Anyconnect的客户端,ocserv虽然有自己的openconnect,但这个体验在桌面系统上是不如Anyconnect的。
Anyconnect
全平台下载地址,已经整理在这个网站内,请移步 https://anyconnect.eu.org/
openconnect
也有好用的地方,比如你是Linux
命令行终端的,可以使用证书直接一步登录到服务器,首先安装openconnect
客户端
#Ubuntu/Debian
apt install openconnect
#Centos
yum install openconnect
使用时只需一行命令就可以了,注意ocserv.eu.org更换为自己的服务器,-c后面跟的是证书,-k后面跟的是密钥
openconnect ocserv.eu.org -c user.crt -k user.key
你也可以把上述命令放进.sh
文件中,例如保存为vpn.sh
,后续只需要执行这个vpn.sh
就好。
#!/bin/sh
openconnect $1 -c user.crt -k user.key
使用时
# ./vpn.sh ocserv.eu.org
注意,openconnect连接时是需要直接提供服务器地址的,它并不能用到profile.xml
。
profile.xml
是兼容Cisco Anyconnect的服务器列表描述信息,方便管理员在维护时及时下发准确的服务器列表,后面有机会的时候再仔细说说。
您也可以联系文章作者本人进行修改,若内容侵权或非法,可以联系我们进行处理。
任何个人或组织,转载、发布本站文章到任何网站、书籍等各类媒体平台,必须在文末署名文章出处并链接到本站相应文章的URL地址。
本站文章如转载自其他网站,会在文末署名原文出处及原文URL的跳转链接,如有遗漏,烦请告知修正。
如若本站文章侵犯了原著者的合法权益,亦可联系我们进行处理。
hi6个月前0
请问有详细一点的自己搭建的教程吗你好7个月前0
你好,可以再帮我看看吗? 我已经按照你的方法设定了,还是一样,wordpress后台的 Purge Varnish Cache 插件还是清除不到cache,依旧显示 the varnish control terminal is not responding at。谢谢https://mjj.today/i/Srk2Tz https://mjj.today/i/Srkcoi你好7个月前0
对,你说的没错,我配置的时候改了一些东西,现在我按照你的教学,可以启动了,网页可以缓存了,不过wordpress 清除cache 那个插件没用的,我输入本地回环地址127.0.0.1 :6082 ,再输入API key ,插件显示the varnish control terminal is not responding at 127.0.0.1:6082,就你图片那样,然后试一下点击清除cache 那里,他显示error,研究了一天,还是没有不行。你好7个月前1
你好,为啥我按照你的方法,到第三部分,去到真正后源的服务器设定Varnish 部分,我填了真正后源的IP跟端口跟域名,然后重启 Varnish ,就出现这样了? 这是怎么回事? 谢谢[Linux] AMH 7.1 https://amh.sh[varnish-6.6 start] ================================================== =========== [OK] varnish-6.6 is already installed. Could not delete 'vcl_boot.1713549650.959259/vgc.sym': No such file or directory Error: Message from VCC-compiler: VCL version declaration missing Update your VCL to Version 4 syntax, and add vcl 4.1; on the first line of the VCL files. ('/home/usrdata/varnish/default.conf' Line 1 Pos 1) ...#---Running VCC-compiler failed, exited with 2 VCL compilation failedchu7个月前0
很完善的教程‘hu7个月前0
我用gmail EMAIL_SERVER="smtp://********@gmail.com:bpyfv*********chry@smtp.gmail.com:587"叽喳7个月前0
MAIL_SERVER="smtp://no-reply@vort.me:password123@wednesday.mxrouting.net:587"大佬 这个使用outlook 或者gmail 是什么样子的格式? 邮寄已经开启smtp了hu7个月前0
输入框的问题解决了,我没有设置反代,NEXTAUTH_URL改为域名+端口就好了