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

这篇具有很好参考价值的文章主要介绍了AnyLink:一款基于ocserv的 SSL VPN 企业级解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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中。

anylink,ssl,网络协议,网络

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"

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

服务器设置

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

anylink,ssl,网络协议,网络

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

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

  1. 关闭selinux

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

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

部署 AnyLink

安装和配置

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

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

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

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

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

    ./anylink tool -p password
    

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

  5. 生成jwt密钥

    ./anylink tool -s
    

    记录下 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"

系统名称在等会会用到,可以带空格。另外建议把后台用户名 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"

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

修改 profile.xml 文件

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

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

    <ServerList>
        <HostEntry>
            <HostName>VPN Server</HostName>
            <HostAddress>localhost</HostAddress>
        </HostEntry>
    </ServerList>

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

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

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

<HostName>XX公司VPN</HostName>

当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
    
  2. 立即生效

    sysctl -p
    
  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. 查看设置是否生效
iptables -nL -t nat

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

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

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

macvtap

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

#是否自动添加nat
iptables_nat = false

创建日志文件目录

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

mkdir /usr/local/anylink-deploy/log

启动 AnyLink

  1. 复制service文件到系统中

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

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

    systemctl status anylink
    

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

配置管理面板

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

http://vpn.itxe.net:8800

自定义 SSL VPN

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

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

anylink,ssl,网络协议,网络

配置自动更新证书

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

anylink,ssl,网络协议,网络

企业配置项

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

anylink,ssl,网络协议,网络

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

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

anylink,ssl,网络协议,网络

另外默认是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.toymoban.com/news/detail-841469.html

到了这里,关于AnyLink:一款基于ocserv的 SSL VPN 企业级解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [开源]一款企业级物联网平台低代码开发框架,代码精简,开箱即用

    基于Go 1.20前后端分离架构,代码精简,开箱即用,前端紧随前沿 Vue3.0 + TypeScript + vite3 + Element-plus技术 对前后端进行了大部分功能的封装,后端自封装go-restful,使用起来更加简洁,功能逻辑清晰,能快速上手学习,并用在生产中。 报表大屏设计器: 我们只需要拖拉拽即可绑定

    2024年02月04日
    浏览(43)
  • 一款超好用的企业级URL采集软件(Msray-plus)

    Msray,是一款使用GO语言研发的企业级新一代多功能信息采集软件。具有高效率、低占用、功能强大、定制灵活、上手简单、支持webhook等特点。 主要运用于全网域名/URL网址/IP信息检索、联系方式信息采集、指定批量数据采集、网络推广与分析、内容源收集,以及为各种

    2024年02月08日
    浏览(31)
  • 一个开源的基于golang开发的企业级物联网平台

    SagooIOT是一个基于golang开发的开源的企业级物联网基础开发平台。负责设备管理和协议数据管理,支持跨平台的物联网接入及管理方案,平台实现了物联网开发相关的基础功能,基于该功能可以快速的搭建起一整套的IOT相关的业务系统。旨在通过可复用的组件,减少开发工作

    2024年02月07日
    浏览(68)
  • 基于Amazon Bedrock的企业级生成式AI平台

    2023.12.2 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 Amazon Bedrock 是一项新的 AWS 服务,可让企业通过 API 轻松利用和自定义生成式 AI 模型。公司现在可以构建和扩展人工智能应用程序,而无需管理运行这些模型本身所需的复杂基础设施和维护。Amazon Bedro

    2024年02月03日
    浏览(32)
  • 基于Langchain+向量数据库+ChatGPT构建企业级知识库

    ▼最近直播超级多, 预约 保你有收获 近期直播: 《 基于 LLM 大模型的向量数据库企业级应用实践 》  1 — LangChain 是什么? 众所周知 OpenAI 的 API 无法联网的,所以如果只使用自己的功能实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能肯定

    2024年02月06日
    浏览(44)
  • Vue.js 3.0 企业级管理后台开发实战 基于Element Plus

    本书内容 本书共 13 章,各章简介如下。 第 1 章“项目启动” 介绍新项目启动时和项目有关的内容,如项目原型和项目 UI。读者从 中能够清楚地了解项目的业务逻辑、具体要开发的功能,以及要呈现给用户的界面效果和交互 效果。此外,本章还会讨论项目开发过程的原型评

    2023年04月08日
    浏览(35)
  • WorkPlus AI助理,基于ChatGPT的企业级知识问答机器人

    随着人工智能技术的发展,WorkPlus AI助理以ChatGPT对话能力为基础,将企业数据与人工智能相结合,推出了面向企业的知识问答机器人。这一创新性的解决方案帮助企业高效管理和利用自身的知识资产,助力企业级人工智能的构建。与传统的基于文本数据的ChatGPT不同,WorkPlus

    2024年02月09日
    浏览(45)
  • 企业级开发项目实战——基于RabbitMQ实现数据库、elasticsearch的数据同步

    1、商品上架时:search-service新增商品到elasticsearch 2、商品下架时:search-service删除elasticsearch中的商品 数据同步是希望,当我们商品修改了数据库中的商品信息,索引库中的信息也会跟着改。在微服务中数据库和索引库是在两个不同的服务中。如果,商品的服务,向es的服务中

    2024年02月12日
    浏览(45)
  • [开源]企业级在线办公系统,基于实时音视频完成在线视频会议功能

    本项目使用了SpringBoot+Mybatis+SpringMVC框架,技术功能点应用了WebSocket、Redis、Activiti7工作流引擎, 基于TRTC腾讯实时音视频完成在线视频会议功能。 使用GPL-3.0开源协议                   办公系统应用了工作流引擎,基于RBAC的权限管理系统,工作流审批有请假流程审批、会议

    2024年02月05日
    浏览(63)
  • 企业级PaaS低代码快开平台源码,基于 Salesforce Platform 的开源替代方案

    PaaS低代码快开平台是一种快速开发应用系统的工具,用户通过少量代码甚至不写代码就可以快速构建出各种应用系统。 随着信息化技术的发展,企业对信息化开发的需求正在逐渐改变,传统的定制开发已经无法满足企业需求。低代码开发平台,让开发者可以基于平台快速搭

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包