文章介绍:使用当前最新版本Vyos-1.4.0-epa2部署AnyLink,AnyLink是一个企业级SSLVPN软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端,AnyLink 使用 TLS/DTLS 进行数据加密,因此需要 RSA 或 ECC 证书,可以通过 Let's Encrypt 和 TrustAsia 申请免费的 SSL 证书,AnyLink 服务端支持Centos,Ubuntu,Debian等系统,如需要安装在其他系统,需要服务端支持 tun/tap 功能、ip 设置等命令。
一、项目来源 {#一-项目来源}
1.1、Gitee-bjdgyc {#1-1-Gitee-bjdgyc}
1.2、GitHub-bjdgyc {#1-2-GitHub-bjdgyc}
二、部署准备 {#二-部署准备}
2.1、vyos镜像 {#2-1-vyos镜像}
vyos-1.4.0-epa2-amd64 vyos-1.4.0-epa2-amd64
2.2、anylink服务端 {#2-2-anylink服务端}
anylink-0.11.4-linux-amd64.tar.gz anylink-0.11.4-linux-amd64.tar.gz
2.3、一个域名 {#2-3-一个域名}
Namesilo最便宜的域名一年不到15元(申请后托管cloudflare)
ClouDNS,每个账户提供一个免费的二级域名(申请后托管cloudflare)
2.4、一个公网IP {#2-4-一个公网IP}
如果你没有公网IP,恰巧你是用vyos部署的,那我可以给你一个公网端口测试(仅限vyso部署免费提供)。
2.5、VPN客户端 {#2-5-VPN客户端}
2.5.1、Cisco AnyConnect {#2-5-1-Cisco-AnyConnect}
本链接由博主提供免费Cisco官网的最新客户端软件,以及免费开源的OpenConnect客户端。
2.5.2、AnyLink Client {#2-5-2-AnyLink-Client}
此链接是GitHub一位项目开发者专门为AnyLink开发的客户端(支持Windwos,macOS,Linux)。
2.6、totp客户端 {#2-6-totp客户端}
2.6.1、安卓动态令牌 {#2-6-1-安卓动态令牌}
Andoid
2.6.2、苹果动态令牌 {#2-6-2-苹果动态令牌}
iOS
2.7、ssh工具 {#2-7-ssh工具}
三、安装Vyos {#三-安装Vyos}
3.1、安装 {#3-1-安装}
如果你不会使用VMware安装vyos系统,请先查看如下教程。
3.2、基础配置 {#3-2-基础配置}
3.3、必要配置 {#3-3-必要配置}
这一步是为了后面web登录时需要启用otp动态令牌的话,需要把Vyos本地系统时间同步到网络时间一致,否则可能会出现登录不上系统的情况。
conf
set service ntp server ntp.aliyun.com
set system time-zone 'Asia/Shanghai'
commit
save
四、安装AnyLink {#四-安装AnyLink}
4.1、拉取文件 {#4-1-拉取文件}
wget -P /tmp https://github.com/bjdgyc/anylink/releases/download/v0.11.4/anylink-0.11.4-linux-amd64.tar.gz
4.2、解压文件 {#4-2-解压文件}
tar -zxvf /tmp/anylink-0.11.4-linux-amd64.tar.gz
4.3、移动文件 {#4-3-移动文件}
sudo mv anylink-deploy/ /usr/local/
4.4、赋予权限 {#4-4-赋予权限}
chmod +x /usr/local/anylink-deploy/anylink
4.5、移动服务文件 {#4-5-移动服务文件}
sudo mv /usr/local/anylink-deploy/deploy/anylink.service /etc/systemd/system
4.6、赋予权限 {#4-6-赋予权限}
chmod +x /etc/systemd/system/anylink.service
4.7、启动服务 {#4-7-启动服务}
sudo systemctl start anylink
4.8、查看服务 {#4-8-查看服务}
sudo systemctl status anylink
4.9、开机自启 {#4-9-开机自启}
sudo systemctl enable anylink
4.10、Web访问 {#4-10-Web访问}
浏览器打开,https://your-ip:8800
默认账户:admin,默认密码:123456
五、自定义AnyLink {#五-自定义AnyLink}
5.1、进入文件目录 {#5-1-进入文件目录}
cd /usr/local/anylink-deploy/
5.2、停止服务 {#5-2-停止服务}
sudo systemctl stop anylink
5.3、创建新密码 {#5-3-创建新密码}
请把你的"Passwd:"后面的都复制到记事本,这就是abc@123加密后的密文,稍后需要用来替换服务端配置文件。
./anylink tool -p abc@123
Passwd:$2a$10$eO7aH3twg6xzsw/oY29ki9Joic8wrsF4ZhufVmGxVkC38h0jtn.dbK
5.4、创建jwt密钥 {#5-4-创建jwt密钥}
请把你的"Secret:"后面的都复制到记事本,这就是jwt加密后的密文,稍后需要用来替换服务端配置文件。
./anylink tool -s
Secret:sjjP3Me68K-ppXe-au4MppLifqbEgLu19gc1fl7DrZpBcE5donOPCgqer
5.5、创建动态令牌(可选) {#5-5-创建动态令牌-可选-}
如果开启了totp动态令牌认证登录,则登录密码将变成:abc@123+六位数字(中间没有:"+"号)
请把你的"Otp:"后面的都复制到记事本,这就是totp加密后的密文,稍后需要用来替换服务端配置文件。
./anylink tool -o
Otp:35TQE2F2AHYR6B3CKOXZVSZGGKLNLIM5HJ6VDG2TOEVRAGY3SVF5A
六、修改服务端配置 {#六-修改服务端配置}
6.1、进入conf目录 {#6-1-进入conf目录}
cd conf/
6.2、编辑server.toml {#6-2-编辑server-toml}
nano server.toml
6.2.1、修改issuer {#6-2-1-修改issuer}
自定义内容
issuer = "杨杨得亿-AnyLink-SSLVPN"
6.2.2、修改管理员账户 {#6-2-2-修改管理员账户}
admin_user = "yydy"
6.2.3、修改密码 {#6-2-3-修改密码}
把上面5.3步骤的密文复制到双引号里面,把旧的删除。
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
6.2.4、修改jwt {#6-2-4-修改jwt}
把上面5.4步骤的密文复制到双引号里面,把旧的删除。
jwt_secret = "abcdef.0123456789.abcdef"
6.2.5、开启totp(可选) {#6-2-5-开启totp-可选-}
把上面5.5步骤的密文复制到双引号里面。
admin_otp = ""
6.2.6、修改客户端IP {#6-2-6-修改客户端IP}
默认是192.168.90.0/24,如果和内网冲突请修改,vyos部署时下面的ipv4_master默认就是eth0,如果是linux部署,请使用"ip addr"查看服务器上网网卡名称
ipv4_master = "eth0"
ipv4_cidr = "100.64.90.0/24"
ipv4_gateway = "100.64.90.1"
ipv4_start = "100.64.90.2"
ipv4_end = "100.64.90.200"
6.2.7、关闭display_error {#6-2-7-关闭display-error}
display_error = false
6.3、开启服务 {#6-3-开启服务}
sudo systemctl start anylink
6.4、重登Web {#6-4-重登Web}
七、Web功能配置 {#七-Web功能配置}
主要介绍部分实用功能,其他未介绍的功能请看官方文档。
7.1、基础信息配置 {#7-1-基础信息配置}
这里以qq邮箱为例。
7.1.1、邮箱配置 {#7-1-1-邮箱配置}
7.1.2、证书设置 {#7-1-2-证书设置}
这里我是使用Let's Encrypt,使用托管到cloudflare的域名进行证书申请,我直接截图重点位置,就是DNS的token获取,下面所有操作完后,点击保存获得到一串token字段,请保存好。
7.1.3、其他设置 {#7-1-3-其他设置}
7.2、创建用户组列表 {#7-2-创建用户组列表}
把里面默认的俩个删除(all和ops),然后自己新建。
7.2.1、删除默认组 {#7-2-1-删除默认组}
7.2.2、创建普通用户组 {#7-2-2-创建普通用户组}
普通用户组只下发内网明细路由走隧道。
7.2.3、创建全局用户组 {#7-2-3-创建全局用户组}
全局用户组下发八个零的默认路由,全部路由走隧道。
7.2.4、创建域名分流用户组 {#7-2-4-创建域名分流用户组}
域名用户组指定域名走隧道。
7.3、创建用户 {#7-3-创建用户}
八、客户端测试 {#八-客户端测试}
8.1、测试普通用户组 {#8-1-测试普通用户组}
普通用户权限只能访问内网,国内DNS223.5.5.5,国外DNS8.8.8.8都会走本地上网网卡。
8.2、添加SNAT {#8-2-添加SNAT}
set nat source rule 100 outbound-interface name eth0 #vyos上网出接口
set nat source rule 100 source address 100.64.90.0/24 #AnyLink-sslvpn的客户端网段
set nat source rule 100 translation address masquerade #nat成出接口上网
8.3、测试tracert {#8-3-测试tracert}
8.4、测试全局用户组 {#8-4-测试全局用户组}
全局用户权限是所有流量都走vpn隧道,所以内网走vpn,国内外dns223.5.5.5和8.8.8.8都会走vpn,可以通过路由表查看详细路由。
8.5、测试域名分流用户组 {#8-5-测试域名分流用户组}
域名分流我们只规定了谷歌和油管走vpn,其他默认走本地。