AnyLink是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。
Go to file
bjdgyc 31b1f12dbe 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
.github/workflows github actions 2020-08-21 17:22:24 +08:00
arpdis 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
common 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
conf 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
dbdata 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
handler 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
proxyproto 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
router 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
sessdata 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
.gitignore init 2020-08-18 16:39:46 +08:00
LICENSE Initial commit 2020-08-18 16:37:11 +08:00
README.md 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
bridge-init.sh 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
go.mod 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
go.sum 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00
main.go 增加基于tap设备的桥接访问模式 2020-09-14 17:17:50 +08:00

README.md

AnyLink

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

Introduction

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

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

AnyLink 服务端仅在CentOS7测试通过如需要安装在其他系统需要服务端支持tun/tap功能、ip设置命令。

Installation

git clone https://github.com/bjdgyc/anylink.git
cd anylink
go build -o anylink -ldflags "-X main.COMMIT_ID=`git rev-parse HEAD`"
#注意使用root权限运行
sudo ./anylink -conf="conf/server.toml"

Feature

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

  • TLS-TCP通道

  • 兼容AnyConnect

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

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

  • 多用户支持

  • 支持 proxy protocol v1 协议

  • 用户组支持

  • TOTP令牌支持

  • 流量控制

  • 访问权限管理

  • 后台管理界面

  • DTLS-UDP通道

Config

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

Setting

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

建议优先选择tun模式因客户端传输的是IP层数据无须进行数据转换。 tap模式是在用户态做的链路层到IP层的数据互相转换性能会有所下降。

tun设置

  1. 开启服务器转发

    # flie: /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
    #执行如下命令
    sysctl -w net.ipv4.ip_forward=1
    
  2. 设置nat转发规则

    # eth0为服务器内网网卡
    iptables -t nat -A POSTROUTING -s 192.168.10.0/255.255.255.0 -o eth0 -j MASQUERADE
    
  3. 使用AnyConnect客户端连接即可

tap设置

  1. 创建桥接网卡

    注意 server.toml 的ip参数需要与 bridge.sh 的配置参数一致
    
  2. 修改 bridge-init.sh 内的参数

    # file: ./bridge.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"
    
  3. 执行 bridge.sh 文件

    sh bridge.sh
    

License

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