前言:
2022春節以來,新冠病毒又在全國各地爆發,很多公司都被迫安排員工轉為線上遠程辦公的方式進行。
相對如深信服之類昂貴的SSL VPN,最近無意中在github看到了這款免費的SSL VPN,并進行了安裝測試,總體來說該項目可以很好的滿足企業遠程在家辦公的需求,且安裝部署、使用都相對比較簡單易上手,最重要的是免費、免費、免費!
但在測試使用過程中唯一一個比較遺憾的點:沒有集成LDAP的功能,這對一般企業使用的管理員賬號管理會比較麻煩,而且客戶端使用者也無法自行修改密碼。
項目介紹:
AnyLink 基于 ietf-openconnect 協議開發,并且借鑒了 ocserv 的開發思路,使其可以同時兼容 AnyConnect 客戶端。
AnyLink 使用 TLS/DTLS 進行數據加密,因此需要 RSA 或 ECC 證書,可以通過 Let's Encrypt 和 TrustAsia 申請免費的 SSL 證書。
AnyLink 服務端僅在 centos 7、Ubuntu 18.04 測試通過,如需要安裝其他系統,需要服務端支持 tun/tap 功能、ip 設置命令。
上鏈接:
https://github.com/bjdgyc/anylink
安裝方式:個人喜好問題,使用編譯安裝
1.編譯安裝
2.使用Docker安裝
部署環境:
系統版本:Centos 7.9;
網絡需求:一張內網網卡、一張外網網卡;
內存:8G
硬盤:80G
安裝前準備:
a.關閉selinux
b.g
安裝步驟:
1.下載程序壓縮包:
wget https://github.com/bjdgyc/anylink/releases/download/v0.7.3/anylink-deploy.tar.gz
2.將安裝包解壓到etc目錄:
tar -zxvf anylink-deploy.tar.gz -C /etc
3.進入anylink-deploy目錄:
cd anylink-deploy
4.生成web管理端的admin的密碼(密碼中不能使用$):
[root@vpn-test anylink-deploy]# ./anylink tool -p qwer1234
Passwd:$2a$10$mw.35yANbMoaFNGs5dZKXeCq1iQHxK7bnOhBJOHobIhDGCPr1qo2G
5.生成jwt密鑰:
[root@vpn-test anylink-deploy]# ./anylink tool -s
Secret:jaodE8zrFbsmFyPn9A0UO0EW3YBoWA3CX4OL_EJS8tG0ZDUcQH4nr8Uu3nsAFVSy7q3zsloI
6.進入conf目錄進行配置:
vi server.toml 修改如下:
#示例配置信息
#其他配置文件,可以使用絕對路徑
#或者相對于 anylink 二進制文件的路徑
#數據文件
db_type = "sqlite3"
db_source = "./conf/anylink.db"
#證書文件 使用跟Nginx一樣的證書即可
cert_file = "./conf/vpn_cert.pem"
cert_key = "./conf/vpn_cert.key"
files_path = "./conf/files"
profile = "./conf/profile.xml"
#日志目錄,為空寫入標準輸出
log_path = "./log"
# 添加日志文件路徑
log_level = "info"
# 修改日志等級為
info pprof = false
#系統名稱
issuer = "ssl vpn"
# 修改系統名稱 #后臺管理用戶
admin_user = "admin"
#pass qwer1234 你可以將明文密碼寫在這里,不建議
admin_pass = "$2a$10$mw.35yANbMoaFNGs5dZKXeCq1iQHxK7bnOhBJOHobIhDGCPr1qo2G"
# 填 入第4步生成的密文
jwt_secret = "jaodE8zrFbsmFyPn9A0UO0EW3YBoWA3CX4OL_EJS8tG0ZDUcQH4nr8Uu3nsAFVSy7q3zsloI"
# 填 入第5步生成的jwt密鑰
#服務監聽地址
server_addr = ":443"
# 客戶端要連接的端口,如果有需要請自行修改,安全組記得開放該端口
#開啟 DTLS, 默認關閉
server_dtls = false
server_dtls_addr = ":4433"
#后臺服務監聽地址
admin_addr = ":8800"
# 后臺管理端口
#開啟tcp proxy protocol協議
proxy_protocol = false
link_mode = "tun"
# 網絡模式,只演示該模式,其他模式請自行參考github
#客戶端分配的ip地址池
ipv4_master = "eth0" # 網卡名,前面查看綁定內網的網卡名稱
ipv4_cidr = "192.168.10.0/24" # 如果沒有和內網網段沖突就不要改了,這個是分配給客戶端的ip地 址池,并且后面配置nat也要與這個地址池保持一致
ipv4_gateway = "192.168.10.1"
ipv4_start = "192.168.10.100"
ipv4_end = "192.168.10.200"
#最大客戶端數量,最大客戶數量需要與上面的IP地址段數量匹配。
max_client = 100
#單個用戶同時在線數量
max_user_client = 3
#IP租期(秒)
ip_lease = 1209600
#默認選擇的組
default_group = "one"
#客戶端失效檢測時間(秒)dpd > keepalive
cstp_keepalive = 20
cstp_dpd = 30
mobile_keepalive = 40
mobile_dpd = 50
#session過期時間,用于斷線重連,0永不過期
session_timeout = 3600
auth_timeout = 0
audit_interval = -1
7.創建日志目錄,與上述配置路徑保持一致
mkdir /etc/anylink-deploy/log
8.打開profile.xml文件,并修改如下:
vi profile.xml
<HostName>ssl vpn</HostName> # 第30行,最好與server.toml配置文件中的系統名稱保持一 致,用于客戶端區分
<HostAddress>123.123.13.13:443</HostAddress> # 第31行,客戶端連接地址,域名加端口,或者 IP加端口(需公網IP地址)
9.導入SSL 證書,我這邊已經有現成的證書了,上傳到服務器后,復制到配置文件指定的目錄/etc/anylink-deploy/conf 即可。
配置IPV4轉發及NAT
1.開啟服務器ipv4轉發
echo ".NET.ipv4.ip_forward=1" >> /etc/sysctl.conf
2.立即生效:
sysctl -p
3.設置nat ,eth0替換為你系統上內網網卡的名稱即可。192.168.10.0/24與你server.toml中的客戶端IP地址池保持一致。
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
啟動anylink服務
1. 復制service文件到系統中
cp /etc/anylink-deploy/systemd/anylink.service /usr/lib/systemd/system/
2. 啟動anylink
systemctl start anylink
3. 查看啟動狀態
systemctl status anylink
瀏覽器訪問后臺管理:
1. 訪問地址公網IP+端口(默認8800),輸入賬號(admin)和 密碼(qwer1234)點擊登陸
http://123.123.13.13:8800