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
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 設置
開啟服務器轉發
# 新版本支持自動設置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
使用 AnyConnect 客戶端連接即可
橋接設置
設置配置文件
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
添加 anylink 程序
- 首先把
anylink-deploy
文件夾放入 /usr/local/anylink-deploy
- 添加執行權限
chmod +x /usr/local/anylink-deploy/anylink
把 anylink.service
腳本放入:
- centos:
/usr/lib/systemd/system/
- ubuntu:
/lib/systemd/system/
操作命令:
- 加載配置:
systemctl daemon-reload
- 啟動:
systemctl start anylink
- 停止:
systemctl stop anylink
- 開機自啟:
systemctl enable anylink
Docker Compose
進入 deploy
目錄
執行腳本 docker-compose up
k8s
進入 deploy
目錄
執行腳本 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
操作步驟
獲取鏡像
# 具體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
查看命令信息
docker run -it --rm bjdgyc/anylink -h
生成密碼
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 -it --rm bjdgyc/anylink tool -d
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
啟動容器
# 默認啟動
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
使用自定義參數啟動容器
# 參數可以參考 ./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地址租約時長
使用非特權模式啟動容器
# 參數可以參考 ./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
構建鏡像 (非必需)
#獲取倉庫源碼
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
展開查看





License
本項目采用 AGPL-3.0 開源授權許可證,完整的授權說明已放置在 LICENSE 文件中。
注意事項
- 《中華人民共和國計算機信息網絡國際聯網管理暫行規定》第六條:“計算機信息網絡直接進行國際聯網,必須使用郵電部國家公用電信網提供的國際出入口信道。任何單位和個人不得自行建立或者使用其他信道進行國際聯網。”
- 根據工信部《工業和信息化部關于清理規范互聯網網絡接入服務市場的通知》的規定:“未經電信主管部門批準,不得自行建立或租用專線(含虛擬專用網絡VPN)等其他信道開展跨境經營活動。”
參考文檔
bjdgyc/anylink: AnyLink是一個企業級遠程辦公 ssl vpn 軟件,可以支持多人同時在線使用。基于 openconnect 協議開發,并且借鑒了 ocserv 的開發思路,可以完全兼容 AnyConnect 客戶端。
地址:https://github.com/bjdgyc/anylink
開源企業級遠程辦公 VPN 軟件 AnyLink 的 docker 部署及使用心得 - 思有云 - IOIOX
地址:https://www.ioiox.com/archives/128.html
OpenWRT 路由器 OpenConnect VPN 詳細圖文教程 - 基礎配置篇 - 思有云 - IOIOX
地址:https://www.ioiox.com/archives/89.html
MAC上Cisco AnyConnect刪除不干凈,造成無法重新安裝的解決辦法 - 簡書
地址:https://www.jianshu.com/p/8cf02bfa0388
該文章在 2025/4/11 9:31:22 編輯過