Skip to content
forked from bjdgyc/anylink

AnyLink是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。

License

Notifications You must be signed in to change notification settings

freegit9527/anylink

 
 

Repository files navigation

AnyLink

Go PkgGoDev Go Report Card codecov GitHub release GitHub downloads) LICENSE

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

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、Ubuntu 18.04测试通过,如需要安装在其他系统,需要服务端支持tun/tap功能、ip设置命令。

Screenshot

online

Installation

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

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

升级 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

Feature

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

  • TLS-TCP通道

  • 兼容AnyConnect

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

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

  • 支持 proxy protocol v1 协议

  • 用户组支持

  • 多用户支持

  • TOTP令牌支持

  • TOTP令牌开关

  • 流量控制

  • 后台管理界面

  • 访问权限管理

  • DTLS-UDP通道

Config

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

# 生成后台密码
./anylink tool -p 123456

# 生成jwt密钥
./anylink tool -s

conf/server.toml

Systemd

添加 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

  1. 获取镜像

    docker pull bjdgyc/anylink:latest
  2. 生成密码

    docker run -it --rm bjdgyc/anylink tool -p 123456
    #Passwd:$2a$10$lCWTCcGmQdE/4Kb1wabbLelu4vY/cUwBwN64xIzvXcihFgRzUvH2a
  3. 生成jwt secret

    docker run -it --rm bjdgyc/anylink tool -s
    #Secret:9qXoIhY01jqhWIeIluGliOS4O_rhcXGGGu422uRZ1JjZxIZmh17WwzW36woEbA
  4. 启动容器

    docker run -itd --name anylink --privileged \
    -p 443:443 -p 8800:8800 \
    --restart=always \
    bjdgyc/anylink
  5. 使用自定义参数启动容器

    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
  6. 构建镜像

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

Setting

网络模式选择,需要配置 link_mode 参数,如 link_mode="tun",link_mode="tap" 两种参数。 不同的参数需要对服务器做相应的设置。

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

tun设置

  1. 开启服务器转发
# flie: /etc/sysctl.conf
net.ipv4.ip_forward = 1

#执行如下命令
sysctl -w net.ipv4.ip_forward=1
  1. 设置nat转发规则
# eth0为服务器内网网卡
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
  1. 使用AnyConnect客户端连接即可

tap设置

  1. 创建桥接网卡
注意 server.toml 的ip参数,需要与 bridge-init.sh 的配置参数一致
  1. 修改 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"
  1. 执行 bridge-init.sh 文件
sh bridge-init.sh

常见问题

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

Discussion

qq.png

添加QQ群: 567510628

QQ群共享文件有相关软件下载

Contribution

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

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

Other Screenshot

展开查看

system.jpg setting.jpg users.jpg ip_map.jpg group.jpg

License

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

Thank

jetbrains.png

About

AnyLink是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 61.7%
  • Vue 31.7%
  • JavaScript 2.9%
  • Shell 2.6%
  • Other 1.1%