当前位置:   article > 正文

AnyLink:一款基于ocserv的 SSL VPN 企业级解决方案

anylink

AnyLink 是一款 SSL VPN 软件,它可以兼容 AnyConnect 以满足对企业内网的接入。另外你也可以像 x-ui 那样分配用户组以及规则,总之在 Clash 纷纷删库后使用三层VPN当梯子确实是个退而求其次的方案。本文以CentOS 7为例,简单介绍 AnyLink 的部署及使用技巧。

准备工作

  1. CentOS 7 服务器(AnyLink 服务端仅在 CentOS 7、CentOS 8、Ubuntu 18.04、Ubuntu 20.04 测试通过,因此奶昔选择 CentOS 7)
  2. 获取 anylink-deploy.tar.gz 并上传至服务器
  3. 获取域名证书(腾讯云、阿里云都可以免费签一年)

确认好网络环境

AnyLink 的 link_mode 参数有 tun、macvtap和tap模式。**当然作者不推荐使用tap模式,实际测试下性能确实会大幅衰减。**区别tun和macvtap这俩模式主要取决于环境,这边简单描述下就懂了。

tun模式

一般是云服务器使用,你可以理解成 NAT 了一层。(VMware中的NAT模式)

即VPN客户端能访问服务器内网,但服务器内网不能访问VPN客户端,就像在公司网络中放了一台路由器,VPN客户端则是这台二级路由下的一个主机。被代理的IP段叫做安全路由(router),不被代理的IP段叫做非安全路由(norouter)。

为了方便演示我购买了一台云服务器,按 AnyLink 默认配置 192.168.90.0/24 (与服务器内网不同段)为例VPN客户端分配的IP为 192.168.90.100-200,其网卡为 eth0 并出于 172.24.135.36/20 这个VPC中。

lonw8q27.png

VPN客户端连接的地址会以 /conf/server.toml 中所设定的内网(默认为 192.168.90.0/24)进行分配并作为安全路由,例如要访问服务器的VPC网络,在部署完成后需在面板添加 172.24.135.0/20 为安全路由。

macvtap模式

与 tun 模式不同的是,macvtap 模式少了一层NAT,直接接在服务器内网上(VMware中的桥接模式)

VPN客户端在连上后分配的是服务器内网同段的地址,相当于是直接连接物理网络。因此 /conf/server.toml 中的网络参数需与服务器网卡一致,区别在于IP分配范围以避免IP冲突问题。

如何给VPN客户端发公网IP

扯个题外话,例如我有宿迁移动 221.131.165.129/25 所有IP地址的使用权,但除业务外只有 200 - 254 属于空闲IP。那么使用macvtap模式设置的VPN客户端分配的IP地址池应为:

#客户端分配的ip地址池
ipv4_master = "eth0"
ipv4_cidr = "221.131.165.129/25"
ipv4_gateway = "221.131.165.129"
ipv4_start = "221.131.165.200"
ipv4_end = "221.131.165.254"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

当连接成功后,服务器将会分配 221.131.165.200-254 (按顺序或管理面板固定IP)给VPN客户端。若内网环境为公网,则可以做到发公网IP的目的。

服务器设置

安全组又叫防火墙,云厂商默认开启的东西。AnyLink需要开放443和8800,分别用于连接和管理面板,有安全考虑的同学可以自行放行,一般我简单粗暴设置全放行。

lonx614x.png

安全组开放后,要关闭系统中的 selinux 和防火墙

如果你是本地机房也需要开放一个公网IP地址+端口供客户端远程连接,并且关闭selinux和firewalld

  1. 关闭selinux

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭selinux(重启后生效)
    setenforce 0 # 临时关闭selinux(不需要重启,立即生效)
    
    • 1
    • 2
  2. 关闭firewalld

    systemctl stop firewalld # 临时关闭防火墙
    systemctl disable firewalld # 永久关闭防火墙
    
    • 1
    • 2

部署 AnyLink

安装和配置

  1. 下载anylink,点击获取 anylink-deploy.tar.gz ,然后上传到服务器

  2. SSH连接到,解压二进制包到/usr/local目录

    tar -xzvf anylink-deploy.tar.gz -C /usr/local/
    
    • 1
  3. 进入anylink目录

    cd /usr/local/anylink-deploy
    
    • 1
  4. 生成密码password的密文,请修改为你自己要设置的密码

    注意密码不能有$符号,会被当成变量,也可以用单引号包起来

    ./anylink tool -p password
    
    • 1

    记录下 Passwd: 后的密钥,等会改配置文件要用

  5. 生成jwt密钥

    ./anylink tool -s
    
    • 1

    记录下 Secret: 后的密钥,等会改配置文件要用

修改 server.toml 文件

打开 https://github.com/bjdgyc/anylink/blob/main/server/conf/server-sample.toml 下载配置模板,然后重命名为 server.toml,开始修改配置文件:

#系统名称
issuer = "XX公司VPN"
#后台管理用户
admin_user = "admin"
#pass 123456
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
# 留空表示不开启 otp, 开启otp后密码为  pass + 6位otp
# 生成 ./anylink tool -o
admin_otp = ""
jwt_secret = "abcdef.0123456789.abcdef"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

系统名称在等会会用到,可以带空格。另外建议把后台用户名 admin_user 改掉,使用 admin 可能会存在风险。然后将上一步, Passwd: 后和 Secret: 后的密钥依次替换admin_pass和jwt_secret对应引号的内容。

往下有个 link_mode ,若为NAT模式则保持tun即可,想桥接到内网中请改为macvtap。将 ipv4_master 的 eth0 设置为服务器网卡,使用 ip addr 指令就能看到,一般不是eth0就是ens192。

接下来找到发布默认域,改成你的域名。例如 vpn.itxe.net (与后面的证书保持一致),这个等下改下发配置文件也会用到,与系统名称一样要记住。

# 要发布的默认域
default_domain = " vpn.itxe.net"
  • 1
  • 2

最后是启用压缩功能,这个吃CPU算力。默认配置文件中不开,但正常的服务器开了反而节流也不会影响到速度,能相对的提升小包的转发性能。

修改 profile.xml 文件

从这个文件的23行开始看:

        <BackupServerList>
            <HostAddress>localhost</HostAddress>
        </BackupServerList>
    </ClientInitialization>

    <ServerList>
        <HostEntry>
            <HostName>VPN Server</HostName>
            <HostAddress>localhost</HostAddress>
        </HostEntry>
    </ServerList>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

我们需要修改两个 HostAddress 为上面的发布默认域,另外我司sslvpn使用的是443端口,则写作

<HostAddress>vpn.itxe.net:443</HostAddress>
  • 1

另外将 HostName 改为刚刚写的名称:

<HostName>XX公司VPN</HostName>
  • 1

当VPN客户端首次连接后,AnyLink服务器会向客户端下发该配置文件,以确保下次连接时可以直接在列表中选择该服务器~~,如你有多个sslvpn服务器请用 xx公司VPN - xxx 来区别,并将 中放入其他服务器。~~

传SSL证书

选择签发证书的nginx格式,会得到fullchaim.pem和private.key俩文件。fullchaim.pem重命名为vpn_cert.crt,private.key重命名为vpn_cert.key并上传至 /usr/local/anylink-deploy/conf 中。这个证书可以考虑配置好后吊销,因为AnyLink内置了 Let’s Encrypt 证书且定时更新。

启动前需要设置的内容

tun

  1. 开启服务器ipv4转发

    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    
    • 1
  2. 立即生效

    sysctl -p
    
    • 1
  3. 设置nat,请替换网卡名称为前面查看的内网网卡名称,另外,如果server.toml文件里面客户端的IP地址池不是默认的192.168.90.0/24,也请修改为对应的IP地址池

iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -o eth0 -j MASQUERADE
  • 1
  1. 查看设置是否生效
iptables -nL -t nat
  • 1

若显示上面配的规则,则ipv4转发生效

  1. 安装iptables-services,用于保存iptables配置,永久生效
yum install -y iptables-services
  • 1
  1. 设置开机自启
systemctl enable iptables.service
  • 1
  1. 保存当前iptables设置
service iptables save
  • 1

若提示 iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ] 则说明配置成功

macvtap

若选择桥接模式,请在 server.toml 中禁用NAT

#是否自动添加nat
iptables_nat = false
  • 1
  • 2

创建日志文件目录

请修改为自己配置的日志路径,不创建会启动失败,如果没有打开日志输出,可以跳过

mkdir /usr/local/anylink-deploy/log
  • 1

启动 AnyLink

  1. 复制service文件到系统中

    cp /usr/local/anylink-deploy/systemd/anylink.service /usr/lib/systemd/system/
    
    • 1
  2. 启动anylink

    systemctl start anylink
    systemctl enable anylink
    
    • 1
    • 2
  3. 查看启动状态

    systemctl status anylink
    
    • 1

看到绿色的 Active: active (running) 则说明AnyLink启动成功。

配置管理面板

访问地址公网IP+端口(默认8800),输入账号(admin)和 密码(password)点击登录

http://vpn.itxe.net:8800
  • 1

自定义 SSL VPN

选择 其他设置 - VPN 对外地址,修改为配置文件中写的默认域

修改 Banner 信息及自定义首页,Banner信息将会在登录成功后在客户端显示

lonyu2tq.png

配置自动更新证书

选择 其他设置 - 证书设置 - Let’s Encrypt证书,按照api填写就好了。这样就不用担心证书过期而报信任错误,每3个月将会自动续期一次。

lonyvvbo.png

企业配置项

如果你想搞统一认证账号,我推荐你搭个WinRadius(搞AD域再弄,或是freeredius指令我想对于小白是并不友好的),然后交给 Radius 服务器来认证

lonz19sw.png

WinRadius下载: https://www.123pan.com/s/WekeVv-SKSY3.html

由于该软件并不支持第三方登录的OTP,在此我配置了公司的LDAP:

lonyy2ut.png

另外默认是sqlite3存储数据库,可能较为简单的是mysql数据库对接?但我还没尝试过,还请其他dalao研究以后在底下评论区告知。

客户端指引下载

访问 https://devops-100tal.oss-cn-beijing.aliyuncs.com/vpnuserguide/vpnuserguide.htm 里面教程写的清清楚楚,这里就不多赘述可以自己慢慢看

Windows 客户端

win10-5.0.02075 版

win10-4.10 版

win10 ARM64(Surface pro X/Raspberry Pi) 版

win7/win8 版

macOS 客户端

mac 客户端(13.0 以上)

mac 客户端(10.11 以上/ 支持OS 11 Big Sur 版)

mac 客户端(Maverick 10.9 版/Yosemite 10.10 版)

注:更新客户端版本时,先按照如下方法卸载掉老客户端后再安装,不要直接把程序仍到回收站,否则会出现无法安装的情况

打开桌面“访达 ”,选择左边的 “应用程序 ”,找到 “Cisco”文件夹下的 “Uninstall Anyconnect”,双击卸载时输入电脑的开机密码即可完成卸载

Android

Android用户

VPN客户端APK安装包

https://play.google.com/store/apps/details?id=com.cisco.anyconnect.vpn.android.avf&hl=zh

iOS

登录 app store,搜索“cisco anyconnect”,下载安装 VPN客户端

https://apps.apple.com/cn/app/cisco-secure-client/id1135064690

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/697712
推荐阅读
  

闽ICP备14008679号