企业级远程办公vpn软件AnyLink

疫情尚未结束,给需要远程办公的人

什么是 AnyLink ?

AnyLink 是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。

什么是 OTP ?

一次性密码(One Time Password,简称 OTP),又称 “一次性口令”,是指只能使用一次的密码。一次性密码是根据专门算法、每隔 60 秒生成一个不可预测的随机数字组合,iKEY 一次性密码已在金融、电信、网游等领域被广泛应用,有效地保护了用户的安全。【百度百科】

OTP 软件挺多的,比如老苏用的 Microsoft Authenticator,还有 Google Authenticator 等等,AnyLink 官方推荐用 FreeOTP

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 anylink ,选择第二个 bjdgyc/anylink,版本选择 latest

权限

勾选 使用高权限执行容器,并点击

高级设置

勾选 启用自动重新启动

docker 文件夹中,创建一个新文件夹,并将其命名为 anylink

文件夹 装载路径
docker/anylink /app/conf

端口

1
2
# 查看端口占用
netstat -tunlp | grep 端口号

443 默认是被占用的,所以需要修改端口

本地端口 容器端口
12443 443
12080 8800

运行

在浏览器中输入 http://群晖IP:12080 就能看到管理后台的登录界面

默认账号:admin; 密码:123456

登录成功后的主界面

设置

在日志中,你会看到两条警告⚠️信息

进入 终端机,「终端机」 => 「新增」 => 「通过命令启动」=> 「请输入一个命令」=> 「bash」

依次执行下面👇的命令

1
2
3
4
5
# 生成 Passwd
./anylink tool -p 123456

# 生成 jwt secret
./anylink tool -s

将红框中生成的内容保存,后面会用到

如果你想改后台登录密码,比如改为 abcdef,就执行下面的命令生成对应的 Passwd

设置 server.toml

下载 server-sample.toml 文件,地址:https://github.com/bjdgyc/anylink/blob/main/server/conf/server-sample.toml

这是国人开发的项目,老苏也想用 gitee 的地址,不过打开 server-sample.toml 文件会显示👇

如果你熟悉命令行,也可以用命令行下载

1
2
3
4
5
# 进入 anylink 目录
cd /valume2/docker/anylink

# 下载 server.toml 文件
curl -sSL https://raw.githubusercontent.com/bjdgyc/anylink/main/server/conf/server-sample.toml -o server.toml

如果下不了,可以自己建一个,将其重命名为 server.toml,主要有几处可能需要修改

变量
admin_pass 填入前面获取的 Passwd
jwt_secret 填入前面获取的 Secret
link_addr 这是 vpn 服务对外的地址,需要新增
cert_file 配合 link_addr 域名地址的证书
cert_key 配合 link_addr 域名地址的证书
ipv4_cidr vpn 客户端分配的 ip 地址池
  1. admin_pass 必须改,不然不然后台登录不了
  2. jwt_secret 必须改,不然会存在安全风险

  1. link_addr须增加,官方的 demo 中并没有,是根据参考文档 2 增加的,比如老苏用了 vpn.laosu.ml

  1. 老苏是在 dnspod.cn 上做域名解析的,直接在那申请了 TrustAsia 的证书

下载的证书解压后,使用 nginx 目录下的证书

原来的文件名比较长,老苏改短了,配置中做相应的修改

  1. ipv4_cidr 如果修改了地址段,相应的 ipv4_gatewayipv4_startipv4_end 都要跟着一起修改,老苏家里用的是 0 网段,老读者都知道老苏群晖的主机 IP192.168.0.197,所以这里改成了 192.168.0.0/24,相应的 ipv4_gateway 改为了 192.168.0.1ipv4_start 分了 192.168.0.220ipv4_end 分了 192.168.0.230,总共就 10IP

server.toml 、以及 2 个证书文件上传到 anylink 目录,现在目录中有 4 个文件了

重启容器

邮件配置

这是为了添加用户时,发邮件通知用的。进管理后台,基础信息 –> 其他设置 –> 邮件配置,还是用的 88 邮箱做示例

添加用户组

进管理后台,用户组信息–> 用户组列表添加 用户组

老苏把 DNS 指向了主路由,其实用默认的 114.114.114.114 也是可以的

添加用户

进管理后台,用户信息 –> 用户列表添加 用户

老苏先禁用了 OTP,但是开启 OTP 的情况也是做了测试验证的

如果邮箱没问题,很快就会收到邮件

如果要显示二维码,进管理后台,基础信息 –> 其他设置 –> 其他设置vpn对外地址 填写 link_addr 加上端口即可

二维码主要是给 OPT 软件扫码用的,用于生成登录时需要的动态码

frp 设置

如果你是有公网 IP 的,只要路由器放行 12443 就可以了,协议为 TCP;老苏用的是 frp,需要在 frpc.ini 中增加下面👇这段

1
2
3
4
5
6
7
[anylink]
# 2021.11.30 新增 for AnyLink 测试
type = tcp
local_ip = 192.168.0.197
local_port = 12443
remote_port = 12443
custom_domains = vpn.laosu.ml

保存之后,重启 frpc 容器

使用

终于可以开始使用了,AnyConnect 客户端可以去 Stille 大神的 『 OpenWRT 路由器 OpenConnect VPN 详细图文教程 - 基础配置篇 』中找,大神将 AnyConnect 客户端按平台整理好了,致敬!

AnyConnect 客户端只要装 VPN 模块即可,其他的用不上

安装完成后启动 AnyConnect 客户端,将 link_addr 加上端口填入即可,客户端没有其他的任何设置

完成后点 Connect,如果前面设置没有问题的话,应该会弹出登录窗口

【说明】:

  1. 禁用 OTP 的情况下,密码只要输入 PIN码
  2. 启用 OTP 的情况下,密码要输入 PIN码 + 6 位动态码
  3. 老苏用 Microsoft Authenticator 验证可用

输入密码之后,会弹出 Banner,这是个欢迎页面,内容可以在管理后台设置

Accept 接受之后,就可以像在家里一样,直接用 192.168.0.xx 来访问家里的设备了

不用了可以点 Disconnect 断开连接

注意事项

  1. 不要和 tailscale 一起用
  2. 《中华人民共和国计算机信息网络国际联网管理暂行规定》第六条:“计算机信息网络直接进行国际联网,必须使用邮电部国家公用电信网提供的国际出入口信道。任何单位和个人不得自行建立或者使用其他信道进行国际联网。”
  3. 根据工信部《工业和信息化部关于清理规范互联网网络接入服务市场的通知》的规定:“未经电信主管部门批准,不得自行建立或租用专线(含虚拟专用网络VPN)等其他信道开展跨境经营活动。”

参考文档

  1. bjdgyc/anylink: AnyLink是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。
    地址:https://github.com/bjdgyc/anylink

  2. 开源企业级远程办公 VPN 软件 AnyLink 的 docker 部署及使用心得 - 思有云 - IOIOX
    地址:https://www.ioiox.com/archives/128.html

  3. OpenWRT 路由器 OpenConnect VPN 详细图文教程 - 基础配置篇 - 思有云 - IOIOX
    地址:https://www.ioiox.com/archives/89.html

  4. MAC上Cisco AnyConnect删除不干净,造成无法重新安装的解决办法 - 简书
    地址:https://www.jianshu.com/p/8cf02bfa0388