AnyLink 是一个企业级远程办公sslvpn的软件,可以支持多人同时在线使用。
AnyLink 基于 ietf-openconnect 协议开发,并且借鉴了 ocserv 的开发思路,使其可以同时兼容 AnyConnect 客户端。
AnyLink 使用TLS/DTLS进行数据加密,因此需要RSA或ECC证书,可以通过 Let's Encrypt 和 TrustAsia 申请免费的SSL证书。
AnyLink 服务端仅在CentOS 7、Ubuntu 18.04测试通过,如需要安装在其他系统,需要服务端支持tun/tap功能、ip设置命令。
没有编程基础的同学建议直接下载release包,从下面的地址下载 anylink-deploy.tar.gz
升级 go version = 1.15
需要提前安装好 golang 和 nodejs
git clone https://github.com/bjdgyc/anylink.git
cd anylink
sh build.sh
# 注意使用root权限运行
cd anylink-deploy
sudo ./anylink -conf="conf/server.toml"
# 默认管理后台访问地址
# http://host:8800
# 默认账号密码
# admin 123456
-
IP分配(实现IP、MAC映射信息的持久化)
-
TLS-TCP通道
-
兼容AnyConnect
-
基于tun设备的nat访问模式
-
基于tap设备的桥接访问模式
-
支持 proxy protocol v1 协议
-
用户组支持
-
多用户支持
-
TOTP令牌支持
-
TOTP令牌开关
-
流量控制
-
后台管理界面
-
访问权限管理
-
DTLS-UDP通道
默认配置文件内有详细的注释,根据注释填写配置即可。
# 生成后台密码
./anylink tool -p 123456
# 生成jwt密钥
./anylink tool -s
添加 systemd脚本
- anylink 程序目录放入
/usr/local/anylink-deploy
systemd 脚本放入:
- centos:
/usr/lib/systemd/system/
- ubuntu:
/lib/systemd/system/
操作命令:
- 启动:
systemctl start anylink
- 停止:
systemctl stop anylink
- 开机自启:
systemctl enable anylink
-
获取镜像
docker pull bjdgyc/anylink:latest
-
生成密码
docker run -it --rm bjdgyc/anylink tool -p 123456 #Passwd:$2a$10$lCWTCcGmQdE/4Kb1wabbLelu4vY/cUwBwN64xIzvXcihFgRzUvH2a
-
生成jwt secret
docker run -it --rm bjdgyc/anylink tool -s #Secret:9qXoIhY01jqhWIeIluGliOS4O_rhcXGGGu422uRZ1JjZxIZmh17WwzW36woEbA
-
启动容器
docker run -itd --name anylink --privileged \ -p 443:443 -p 8800:8800 \ --restart=always \ bjdgyc/anylink
-
使用自定义参数启动容器
docker run -itd --name anylink --privileged \ -e IPV4_CIDR=192.168.10.0/24 \ -p 443:443 -p 8800:8800 \ --restart=always \ bjdgyc/anylink \ -c=/etc/server.toml --admin_addr=:8080
-
构建镜像
#获取仓库源码 git clone https://github.com/bjdgyc/anylink.git # 构建镜像 docker build -t anylink .
网络模式选择,需要配置 link_mode
参数,如 link_mode="tun"
,link_mode="tap"
两种参数。 不同的参数需要对服务器做相应的设置。
建议优先选择tun模式,因客户端传输的是IP层数据,无须进行数据转换。 tap模式是在用户态做的链路层到IP层的数据互相转换,性能会有所下降。 如果需要在虚拟机内开启tap模式,请确认虚拟机的网卡开启混杂模式。
- 开启服务器转发
# flie: /etc/sysctl.conf
net.ipv4.ip_forward = 1
#执行如下命令
sysctl -w net.ipv4.ip_forward=1
- 设置nat转发规则
# eth0为服务器内网网卡
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
- 使用AnyConnect客户端连接即可
- 创建桥接网卡
注意 server.toml 的ip参数,需要与 bridge-init.sh 的配置参数一致
- 修改 bridge-init.sh 内的参数
eth="eth0"
eth_ip="192.168.1.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"
eth_gateway="192.168.1.1"
- 执行 bridge-init.sh 文件
sh bridge-init.sh
请前往 问题地址 查看具体信息
添加QQ群: 567510628
QQ群共享文件有相关软件下载
欢迎提交 PR、Issues,感谢为AnyLink做出贡献。
注意新建PR,需要提交到dev分支,其他分支暂不会合并。
本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 LICENSE 文件中。