前言
自从去年安装配置了Openconnect VPN
后,使用了近一年时间,稳定,高效,零故障,使用证书登录的方式更佳便捷,对个人用户来说总体体验几乎完美.
前段时间发现一款新的开源 VPN 软件 AnyLink ,主打企业远程办公的功能,在关注了一段时间后,尝试安装配置使用了几天感觉也非常不错,最近支持了 docker 部署,所以出一篇简单的安装部署教程。
简单体验心得
先简单总结下安装及使用的一点心得.以及和 Openconnect 的一些区别.
AnyLink 基于 ietf-openconnect 协议开发,并且借鉴了 ocserv 的开发思路,使其可以同时兼容 AnyConnect 客户端.这一点和 Openconnect VPN 是使用相同的协议和客户端.
AnyLink 最主要的功能莫过于用户分组功能
,通过设置分组权限可以使不同用户或员工能访问的网段和路由也不同,加上支持 SMTP 邮件来分发密码,同时也支持 OTP 密码,确实更适合小型企业的远程访问管理.而目前并不能
像 Openconnect VPN 一样支持证书登录,所以每次连接都需要手动输入密码。
在安装方面, AnyLink 也非常简单,支持编译安装,常规 release 下载安装,以及 docker 部署。个人当然是推荐使用 docker 来安装,就目前短暂使用的情况下来看并没有发现 docker 部署是否和其他直接在服务器上安装有什么区别。
当前适用于 0.2.1 版本
由于软件还在更新迭代中,不确定后期的安装方法是否一致,本教程建议使用 stilleshan/anylink:0.2.1 带固定版本号的镜像。
拉取镜像
拉取镜像以备后续使用.
docker pull stilleshan/anylink:0.2.1
首次运行以下命令来创建管理员密码.以下命令中含rm
参数,仅用于执行创建密码的命令,会自行删除.将生成的Passwd
和secret
保存.
docker run -it --rm stilleshan/anylink:0.2.1 tool -p 123456
# 生成 Passwd
# Passwd:$2a$10$iKPApINPOwuyUhZC/b7P0eI8chEukkpyxPEbYxqdS3BPTtImqStGW
docker run -it --rm stilleshan/anylink:0.2.1 tool -s
# 生成 jwt secret
# Secret:r4-21-eDOrSAjtXL4k06PK0NFudNshMKh9euV09EQrsa9oEYlKaSgoa-CdY
创建数据目录
首次安装请确保依照教程创建以下相关文件,缺一不可,缺少文件会导致容器启动失败.
1.创建目录用于存放数据库
,数据库
及证书
文件.本文以/root/anylink
为例。
mkdir /root/anylink
2.创建空的数据库
文件。
cd /root/anylink
touch data.db
3.将用于链接 VPN 的域名证书上传至此目录。
AnyLink 使用 TLS/DTLS 进行数据加密,因此需要 RSA 或 ECC 证书,所以当连接 VPN 时的服务器地址需要使用域名,并且配置证书才能使用,如果是在有 动态公网 IP 的家里使用,则需要配置 DDNS 域名。
4.下载server.toml
文件.
wget https://raw.githubusercontent.com/bjdgyc/anylink/main/server/conf/server.toml
如无法下载,点击查看复制并自行创建。
server.toml
#服务配置信息
#其他配置文件,可以使用绝对路径
#或者相对于server.toml的路径
#数据文件
db_file = "./data.db"
#证书文件
cert_file = "./test_vpn_cert.pem"
cert_key = "./test_vpn_key.pem"
ui_path = "../ui"
files_path = "../files"
#日志目录,为空写入标准输出
#log_path = "../log"
log_path = ""
log_level = "info"
#系统名称
issuer = "XX公司VPN"
#后台管理用户
admin_user = "admin"
#pass 123456
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
jwt_secret = "iLmspvOiz*%ovfcs*wersdf#^heR8pNU^4XxBm&mW$aPCjSRMbYH#&"
#vpn服务对外地址,影响开通邮件二维码
link_addr = "vpn.xx.com"
#前台服务监听地址
server_addr = ":443"
#后台服务监听地址
admin_addr = ":8800"
#开启tcp proxy protocol协议
proxy_protocol = false
link_mode = "tun"
#客户端分配的ip地址池
ipv4_cidr = "192.168.10.0/24"
ipv4_gateway = "192.168.10.1"
ipv4_start = "192.168.10.100"
ipv4_end = "192.168.10.200"
#最大客户端数量
max_client = 100
#单个用户同时在线数量
max_user_client = 3
#IP租期(秒)
ip_lease = 1209600
#默认选择的组
default_group = "one"
#客户端失效检测时间(秒) dpd > keepalive
cstp_keepalive = 20
cstp_dpd = 30
mobile_keepalive = 50
mobile_dpd = 60
#session过期时间,用于断线重连,0永不过期
session_timeout = 3600
auth_timeout = 0
5.修改 server.toml 配置文件
根据情况修改以下四处参数.其中最主要的为证书和密码,其他名称及外部地址根据实际情况修改.
证书路径./
请不要修改,将证书名
修改为你上传的证书名
.如不正确将会导致无法启动容器.
cert_file = "./test_vpn_cert.pem"
cert_key = "./test_vpn_key.pem"
# 改为类似以下
cert_file = "./ioiox.cer"
cert_key = "./ioiox.key"
修改管理员密码的Passwd
和secret
为上述生成的.
admin_pass = "$2a$10$iKPApINPOwuyUhZC/b7P0eI8chEukkpyxPEbYxqdS3BPTtImqStGW"
jwt_secret = "r4-21-eDOrSAjtXL4k06PK0NFudNshMKh9euV09EQrsa9oEYlKaSgoa-CdY"
5.检查所有文件
确认证书文件
,data.db
及server.toml
文件已修改保存.
docker 启动服务
docker run -d \
--name anylink \
--restart always \
--privileged=true \
-p 55555:443 \
-p 8800:8800 \
-v /root/anylink/:/app/conf \
stilleshan/anylink:0.2.1
AnyLink 的默认连接端口443
可能被其他类似nginx
等服务占用,建议映射为其他端口号,例如55555
.前端管理页面端口8800
也可以根据情况自行修改.
管理后台
访问内网IP:端口
,本例http://192.168.1.11:8800
输入admin
密码登陆后台管理系统.
后台管理非常简单明了,只需要配置用户组
,用户
即可开始使用,如需邮件分发密码功能可以在其他设置
中配置.
其他设置
邮件配置
中可以配置 SMTP 邮件服务器信息,用于分发用户密码,适用于多用户的企业环境.如无需求可以跳过.
其他设置
中可以配置邮件分发模版和登录提示信息.此处博主建议自行增加一行端口信息.由于软件默认推荐是443
端口,而大多数情况下可能无法使用该端口.如下图自行增加一行.
Banner 信息如无需要可以删除,这样在客户端登录时不会出现多余的弹窗
同时需在server.toml
配置文件中修改以下相关参数来使邮件显示正确的信息.
用户组信息
添加用户组
只需要填写组名,其他保持默认,则表示该组用户所有流量都将被 VPN 服务器代理,属于完整的全局代理
.
包含路由
如果添加内网网段,例如博主的网段为192.168.1.0/24
,则表示该组用户可以访问内网设备,而互联网请求依旧使用客户端本地的网络访问
.
DNS 服务器
可根据需求自行设置,由于博主家里部署了 AdGuard Home 来过滤广告,所以下图中将 DNS 服务器修改为 AdGuard Home 所在的服务器的内网 IP.
用户信息
添加新用户
并且分配用户组,PIN 码
为客户端的登录密码,如果配置了 SMTP 并勾选了发送邮件
,则会创建随机密码以邮件的形式发送.也可以手动设置密码.OTP
功能如果没有需求建议关闭即可.
保存后可收到邮件,邮件根据上述配置文件也正确的显示了相关信息.
路由器端口映射及客户端登录
路由器端口映射
最后一步则需要在路由器开放前端连接端口55555
.
客户端登录
客户端的详情及下载,可以参考 OpenWRT 路由器 OpenConnect VPN 详细图文教程 - 基础配置篇 中的客户端部分下载.
输入 服务器域名:端口 连接,填写账号密码即可连接成功
结语
由于 AnyLink 还在持续的更新和优化中,博主也仅仅使用了几天,同时使用场景也有限,无法给出更全面的评测.大家感兴趣的可以关注 GitHub 项目,期待后续更加完善的版本.