dockerfiles/anylink
Stille 087159b5db Create anylink 2021-06-08 20:45:26 +08:00
..
.github/workflows Create anylink 2021-06-08 20:45:26 +08:00
docker Create anylink 2021-06-08 20:45:26 +08:00
dtls-2.0.9 Create anylink 2021-06-08 20:45:26 +08:00
screenshot Create anylink 2021-06-08 20:45:26 +08:00
server Create anylink 2021-06-08 20:45:26 +08:00
systemd Create anylink 2021-06-08 20:45:26 +08:00
web Create anylink 2021-06-08 20:45:26 +08:00
.codecov.yml Create anylink 2021-06-08 20:45:26 +08:00
.gitignore Create anylink 2021-06-08 20:45:26 +08:00
Dockerfile Create anylink 2021-06-08 20:45:26 +08:00
LICENSE Create anylink 2021-06-08 20:45:26 +08:00
README.md Create anylink 2021-06-08 20:45:26 +08:00
build.sh Create anylink 2021-06-08 20:45:26 +08:00
docker_entrypoint.sh Create anylink 2021-06-08 20:45:26 +08:00
question.md Create anylink 2021-06-08 20:45:26 +08:00

README.md

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通道
  • DTLS-UDP通道
  • 兼容AnyConnect
  • 基于tun设备的nat访问模式
  • 基于tap设备的桥接访问模式
  • 支持 proxy protocol v1 协议
  • 用户组支持
  • 多用户支持
  • TOTP令牌支持
  • TOTP令牌开关
  • 流量控制
  • 后台管理界面
  • 访问权限管理

Config

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

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

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

conf/server.toml

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
# 如果执行第一个命令不生效,可以继续执行下面的命令
# iptables -A FORWARD -i eth0 -s 192.168.10.0/24 -j ACCEPT
# 查看设置是否生效
iptables -nL -t nat
  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

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 .
    

常见问题

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

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