LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

企业级开源SSLVPN软件AnyLink

admin
2025年4月11日 0:49 本文热度 160

AnyLink

AnyLink 是一个企业级远程办公 sslvpn 的软件,可以支持多人同时在线使用。

使用 AnyLink,你可以随时随地安全的访问你的内部网络。

With AnyLink, you can securely access your internal network anytime and anywhere.

Repo

github: https://github.com/bjdgyc/anylink

gitee: https://gitee.com/bjdgyc/anylink

Introduction

AnyLink 基于 ietf-openconnect 协议开发,并且借鉴了 ocserv 的开发思路,使其可以同时兼容 AnyConnect 客户端。

AnyLink 使用 TLS/DTLS 进行数据加密,因此需要 RSA 或 ECC 证书,可以使用私有自签证书,可以通过 Let's Encrypt 和 TrustAsia 申请免费的 SSL 证书。

AnyLink 服务端仅在 CentOS 7、CentOS 8、Ubuntu 18、Ubuntu 20、Ubuntu 20、AnolisOS 8 测试通过,如需要安装在其他系统,需要服务端支持 tun/tap 功能、ip 设置命令、iptables命令。

Screenshot

 

Installation

没有编程基础的同学建议直接下载 release 包,从下面的地址下载 anylink-deploy.tar.gz

https://github.com/bjdgyc/anylink/releases

https://gitee.com/bjdgyc/anylink/releases

如果不会安装,可以提供有偿远程协助服务(200 CNY)。添加QQ(68492170)联系我

也可以添加QQ群 咨询群内大佬

添加QQ群①: 567510628

使用问题

对于测试环境,可以直接进行测试,需要客户端取消勾选【阻止不受信任的服务器(Block connections to untrusted servers)】

对于线上环境,尽量申请安全的https证书(跟nginx使用的pem证书类型一致)

群共享文件有相关客户端软件下载,其他版本没有测试过,不保证使用正常

其他问题 前往查看

默认管理后台访问地址 https://host:8800 或 https://域名:8800 默认账号密码 admin 123456

首次使用,请在浏览器访问 https://域名:443 浏览器提示安全后,在客户端输入 【域名:443】 即可

自行编译安装

需要提前安装好 docker

git clone https://github.com/bjdgyc/anylink.git # docker编译 参考软件版本(不需要安装) # go 1.20.12 # node v16.20.2 # yarn 1.22.19 cd anylink # 编译前端 bash build_web.sh # 编译 anylink-deploy 发布文件 bash build.sh # 注意使用root权限运行 cd anylink-deploy sudo ./anylink # 默认管理后台访问地址 # https://host:8800 # 默认账号 密码 # admin 123456

Feature

  •  IP 分配(实现 IP、MAC 映射信息的持久化)

  •  TLS-TCP 通道

  •  DTLS-UDP 通道

  •  兼容 AnyConnect

  •  兼容 OpenConnect

  •  基于 tun 设备的 nat 访问模式

  •  基于 tun 设备的桥接访问模式

  •  基于 macvtap 设备的桥接访问模式

  •  支持 proxy protocol v1&v2 协议

  •  用户组支持

  •  用户组策略支持

  •  多用户支持

  •  用户策略支持

  •  TOTP 令牌支持

  •  TOTP 令牌开关

  •  流量速率限制

  •  后台管理界面

  •  访问权限管理

  •  用户活动审计功能

  •  IP 访问审计功能(支持多端口、连续端口)

  •  域名动态拆分隧道(域名路由功能)

  •  radius认证支持

  •  LDAP认证支持

  •  空闲链接超时自动断开

  •  流量压缩功能

  •  出口 IP 自动放行

  •  支持多服务的配置区分

  •  支持私有自签证书

  •  支持内网域名解析(指定的域名走内网dns)

  •  增加用户验证防爆功能(IP BAN)

  •  支持 docker 非特权模式

  •  基于 ipvtap 设备的桥接访问模式

Config

示例配置文件内有详细的注释,根据注释填写配置即可。

# 查看帮助信息 ./anylink -h # 生成后台密码 ./anylink tool -p 123456 # 生成jwt密钥 ./anylink tool -s # 查看所有配置项 ./anylink tool -d

数据库配置示例

数据库表结构自动生成,无需手动导入(请赋予 DDL 权限)

db_type

db_source

sqlite3

./conf/anylink.db

mysql

user:password@tcp(127.0.0.1:3306)/anylink?charset=utf8
user:password@tcp(127.0.0.1:3306)/anylink?charset=utf8mb4

postgres

postgres://user:password@localhost/anylink?sslmode=verify-full

mssql

sqlserver://user:password@localhost?database=anylink&connection+timeout=30

示例配置文件

conf/server-sample.toml

Upgrade

升级前请备份配置文件conf目录 和 数据库,并停止服务

使用新版的 anylink 二进制文件替换旧版

重启服务后,即可完成升级

Setting

依赖设置

服务端依赖安装:

centos: yum install iptables iproute

ubuntu: apt-get install iptables iproute2

link_mode 设置

以下参数必须设置其中之一

网络模式选择,需要配置 link_mode 参数,如 link_mode="tun",link_mode="macvtap",link_mode="tap"(不推荐) 等参数。 不同的参数需要对服务器做相应的设置。

建议优先选择 tun 模式,其次选择 macvtap 模式,因客户端传输的是 IP 层数据,无须进行数据转换。 tap 模式是在用户态做的链路层到 IP 层的数据互相转换,性能会有所下降。 如果需要在虚拟机内开启 tap 模式,请确认虚拟机的网卡开启混杂模式。

tun 设置

  1. 开启服务器转发

# 新版本支持自动设置ip转发 # file: /etc/sysctl.conf net.ipv4.ip_forward = 1 #执行如下命令 sysctl -w net.ipv4.ip_forward=1 # 查看设置是否生效 cat /proc/sys/net/ipv4/ip_forward

2.1 设置 nat 转发规则(二选一)

systemctl stop firewalld.service systemctl disable firewalld.service # 新版本支持自动设置nat转发,如有其他需求可以参考下面的命令配置 # 请根据服务器内网网卡替换 eth0 # iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -o eth0 -j MASQUERADE # 如果执行第一个命令不生效,可以继续执行下面的命令 # iptables -A FORWARD -i eth0 -s 192.168.90.0/24 -j ACCEPT # 查看设置是否生效 # iptables -nL -t nat

2.2 使用全局路由转发(二选一)

# 假设anylink所在服务器的内网ip: 10.1.2.10 # 首先关闭nat转发功能 iptables_nat = false # 传统网络架构,在华三交换机添加以下静态路由规则 ip route-static 192.168.90.0 255.255.255.0 10.1.2.10 # 其他品牌的交换机命令,请参考以下地址 https://cloud.tencent.com/document/product/216/62007 # 公有云环境下,需设置vpc下的路由表,添加以下路由策略 目的端: 192.168.90.0/24 下一跳类型: 云服务器 下一跳: 10.1.2.10

  1. 使用 AnyConnect 客户端连接即可

桥接设置

  1. 设置配置文件

macvtap 设置相对比较简单,只需要配置相应的参数即可。

网络要求:需要网络支持 ARP 传输,可通过 ARP 宣告普通内网 IP。

网络限制:云环境下不能使用,网卡mac加白环境不能使用,802.1x认证网络不能使用

以下参数可以通过执行 ip a 查看

1.1 arp_proxy

# file: /etc/sysctl.conf net.ipv4.conf.all.proxy_arp = 1 #执行如下命令 sysctl -w net.ipv4.conf.all.proxy_arp=1 配置文件修改: # 首先关闭nat转发功能 iptables_nat = false link_mode = "tun" #内网主网卡名称 ipv4_master = "eth0" #以下网段需要跟ipv4_master网卡设置成一样 ipv4_cidr = "10.1.2.0/24" ipv4_gateway = "10.1.2.99" ipv4_start = "10.1.2.100" ipv4_end = "10.1.2.200"

1.2 macvtap

# 命令行执行 master网卡需要打开混杂模式 ip link set dev eth0 promisc on #=====================# # 配置文件修改 # 首先关闭nat转发功能 iptables_nat = false link_mode = "macvtap" #内网主网卡名称 ipv4_master = "eth0" #以下网段需要跟ipv4_master网卡设置成一样 ipv4_cidr = "10.1.2.0/24" ipv4_gateway = "10.1.2.1" ipv4_start = "10.1.2.100" ipv4_end = "10.1.2.200"

Deploy

部署配置文件放在 deploy 目录下,请根据实际情况修改配置文件

Systemd

  1. 添加 anylink 程序

    • 首先把 anylink-deploy 文件夹放入 /usr/local/anylink-deploy
    • 添加执行权限 chmod +x /usr/local/anylink-deploy/anylink
  2. 把 anylink.service 脚本放入:

    • centos: /usr/lib/systemd/system/
    • ubuntu: /lib/systemd/system/
  3. 操作命令:

    • 加载配置: systemctl daemon-reload
    • 启动: systemctl start anylink
    • 停止: systemctl stop anylink
    • 开机自启: systemctl enable anylink

Docker Compose

  1. 进入 deploy 目录

  2. 执行脚本 docker-compose up

k8s

  1. 进入 deploy 目录

  2. 执行脚本 kubectl apply -f deployment.yaml

Docker

anylink 镜像地址

对于国内用户,为提高镜像拉取体验,可以考虑拉取存放于阿里云镜像仓库的镜像,镜像名称及标签如下表所示( 具体版本号可以查看 version 文件):

支持设备/平台

DockerHub阿里云镜像仓库

x86_64/amd64

bjdgyc/anylink:latest

registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:latest

x86_64/amd64

bjdgyc/anylink:0.13.1

registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:0.13.1

armv8/aarch64

bjdgyc/anylink:latest

registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:arm64v8-latest

armv8/aarch64

bjdgyc/anylink:0.13.1

registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:arm64v8-0.13.1

docker 镜像源地址

docker.1ms.run/bjdgyc/anylink:latest

dockerhub.yydy.link:2023/bjdgyc/anylink:latest

操作步骤

  1. 获取镜像

    # 具体tag可以从docker hub获取 # https://hub.docker.com/r/bjdgyc/anylink/tags docker pull bjdgyc/anylink:latest docker pull registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:latest

  2. 查看命令信息

    docker run -it --rm bjdgyc/anylink -h

  3. 生成密码

    docker run -it --rm bjdgyc/anylink tool -p 123456 #Passwd:$2a$10$lCWTCcGmQdE/4Kb1wabbLelu4vY/cUwBwN64xIzvXcihFgRzUvH2a

  4. 生成 jwt secret

    docker run -it --rm bjdgyc/anylink tool -s #Secret:9qXoIhY01jqhWIeIluGliOS4O_rhcXGGGu422uRZ1JjZxIZmh17WwzW36woEbA

  5. 查看所有配置项

    docker run -it --rm bjdgyc/anylink tool -d

  6. iptables兼容设置

    # 默认 iptables 使用 nf_tables 设置转发规则,如果内核低于 4.19 版本,需要特殊配置 docker run -itd --name anylink --privileged \ -e IPTABLES_LEGACY=on \ -p 443:443 -p 8800:8800 -p 443:443/udp \ --restart=always \ bjdgyc/anylink

  7. 启动容器

    # 默认启动 docker run -itd --name anylink --privileged \ -p 443:443 -p 8800:8800 -p 443:443/udp \ --restart=always \ bjdgyc/anylink # 自定义配置目录 # 首次启动会自动创建配置文件 # 配置文件初始化完成后,容器会强制退出,请重新启动容器 docker run -itd --name anylink --privileged \ -p 443:443 -p 8800:8800 -p 443:443/udp \ -v /home/myconf:/app/conf \ --restart=always \ bjdgyc/anylink docker restart anylink

  8. 使用自定义参数启动容器

    # 参数可以参考 ./anylink tool -d # 可以使用命令行参数 或者 环境变量 配置 docker run -itd --name anylink --privileged \ -e LINK_LOG_LEVEL=info \ -p 443:443 -p 8800:8800 -p 443:443/udp \ -v /home/myconf:/app/conf \ --restart=always \ bjdgyc/anylink \ --ip_lease=1209600 # IP地址租约时长

  9. 使用非特权模式启动容器

    # 参数可以参考 ./anylink tool -d # 可以使用命令行参数 或者 环境变量 配置 docker run -itd --name anylink \ -p 443:443 -p 8800:8800 -p 443:443/udp \ -v /dev/net/tun:/dev/net/tun --cap-add=NET_ADMIN \ --restart=always \ bjdgyc/anylink

  10. 构建镜像 (非必需)

#获取仓库源码 git clone https://github.com/bjdgyc/anylink.git # 构建镜像 sh build_docker.sh 或 docker build -t anylink -f docker/Dockerfile .

常见问题

请前往 问题地址 查看具体信息

Support Document

Support Client

Contribution

欢迎提交 PR、Issues,感谢为 AnyLink 做出贡献。

注意新建 PR,需要提交到 dev 分支,其他分支暂不会合并。

Other Screenshot

展开查看

system.jpgsetting.jpgusers.jpgip_map.jpggroup.jpg

License

本项目采用 AGPL-3.0 开源授权许可证,完整的授权说明已放置在 LICENSE 文件中。

注意事项

  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


该文章在 2025/4/11 9:31:22 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved