AnyLink 是一款 SSL VPN 軟件,它可以兼容 AnyConnect 以滿足對企業(yè)內(nèi)網(wǎng)的接入。另外你也可以像 x-ui 那樣分配用戶組以及規(guī)則,總之在 Clash 紛紛刪庫后使用三層VPN當梯子確實是個退而求其次的方案。本文以CentOS 7為例,簡單介紹 AnyLink 的部署及使用技巧。
準備工作
- CentOS 7 服務器(AnyLink 服務端僅在 CentOS 7、CentOS 8、Ubuntu 18.04、Ubuntu 20.04 測試通過,因此奶昔選擇 CentOS 7)
- 獲取 anylink-deploy.tar.gz 并上傳至服務器
- 獲取域名證書(騰訊云、阿里云都可以免費簽一年)
確認好網(wǎng)絡環(huán)境
AnyLink 的 link_mode 參數(shù)有 tun、macvtap和tap模式。**當然作者不推薦使用tap模式,實際測試下性能確實會大幅衰減。**區(qū)別tun和macvtap這倆模式主要取決于環(huán)境,這邊簡單描述下就懂了。
tun模式
一般是云服務器使用,你可以理解成 NAT 了一層。(VMware中的NAT模式)
即VPN客戶端能訪問服務器內(nèi)網(wǎng),但服務器內(nèi)網(wǎng)不能訪問VPN客戶端,就像在公司網(wǎng)絡中放了一臺路由器,VPN客戶端則是這臺二級路由下的一個主機。被代理的IP段叫做安全路由(router),不被代理的IP段叫做非安全路由(norouter)。
為了方便演示我購買了一臺云服務器,按 AnyLink 默認配置 192.168.90.0/24 (與服務器內(nèi)網(wǎng)不同段)為例VPN客戶端分配的IP為 192.168.90.100-200,其網(wǎng)卡為 eth0 并出于 172.24.135.36/20 這個VPC中。
VPN客戶端連接的地址會以 /conf/server.toml 中所設定的內(nèi)網(wǎng)(默認為 192.168.90.0/24)進行分配并作為安全路由,例如要訪問服務器的VPC網(wǎng)絡,在部署完成后需在面板添加 172.24.135.0/20 為安全路由。
macvtap模式
與 tun 模式不同的是,macvtap 模式少了一層NAT,直接接在服務器內(nèi)網(wǎng)上(VMware中的橋接模式)
VPN客戶端在連上后分配的是服務器內(nèi)網(wǎng)同段的地址,相當于是直接連接物理網(wǎng)絡。因此 /conf/server.toml 中的網(wǎng)絡參數(shù)需與服務器網(wǎng)卡一致,區(qū)別在于IP分配范圍以避免IP沖突問題。
如何給VPN客戶端發(fā)公網(wǎng)IP
扯個題外話,例如我有宿遷移動 221.131.165.129/25 所有IP地址的使用權(quán),但除業(yè)務外只有 200 - 254 屬于空閑IP。那么使用macvtap模式設置的VPN客戶端分配的IP地址池應為:
#客戶端分配的ip地址池
ipv4_master = "eth0"
ipv4_cidr = "221.131.165.129/25"
ipv4_gateway = "221.131.165.129"
ipv4_start = "221.131.165.200"
ipv4_end = "221.131.165.254"
當連接成功后,服務器將會分配 221.131.165.200-254 (按順序或管理面板固定IP)給VPN客戶端。若內(nèi)網(wǎng)環(huán)境為公網(wǎng),則可以做到發(fā)公網(wǎng)IP的目的。
服務器設置
安全組又叫防火墻,云廠商默認開啟的東西。AnyLink需要開放443和8800,分別用于連接和管理面板,有安全考慮的同學可以自行放行,一般我簡單粗暴設置全放行。
安全組開放后,要關閉系統(tǒng)中的 selinux 和防火墻
如果你是本地機房也需要開放一個公網(wǎng)IP地址+端口供客戶端遠程連接,并且關閉selinux和firewalld
-
關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久關閉selinux(重啟后生效) setenforce 0 # 臨時關閉selinux(不需要重啟,立即生效)
-
關閉firewalld
systemctl stop firewalld # 臨時關閉防火墻 systemctl disable firewalld # 永久關閉防火墻
部署 AnyLink
安裝和配置
-
下載anylink,點擊獲取 anylink-deploy.tar.gz ,然后上傳到服務器
-
SSH連接到,解壓二進制包到/usr/local目錄
tar -xzvf anylink-deploy.tar.gz -C /usr/local/
-
進入anylink目錄
cd /usr/local/anylink-deploy
-
生成密碼
password
的密文,請修改為你自己要設置的密碼注意密碼不能有
$
符號,會被當成變量,也可以用單引號包起來./anylink tool -p password
記錄下 Passwd: 后的密鑰,等會改配置文件要用
-
生成jwt密鑰
./anylink tool -s
記錄下 Secret: 后的密鑰,等會改配置文件要用
修改 server.toml 文件
打開 https://github.com/bjdgyc/anylink/blob/main/server/conf/server-sample.toml 下載配置模板,然后重命名為 server.toml,開始修改配置文件:
#系統(tǒng)名稱
issuer = "XX公司VPN"
#后臺管理用戶
admin_user = "admin"
#pass 123456
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
# 留空表示不開啟 otp, 開啟otp后密碼為 pass + 6位otp
# 生成 ./anylink tool -o
admin_otp = ""
jwt_secret = "abcdef.0123456789.abcdef"
系統(tǒng)名稱在等會會用到,可以帶空格。另外建議把后臺用戶名 admin_user 改掉,使用 admin 可能會存在風險。然后將上一步, Passwd: 后和 Secret: 后的密鑰依次替換admin_pass和jwt_secret對應引號的內(nèi)容。
往下有個 link_mode ,若為NAT模式則保持tun即可,想橋接到內(nèi)網(wǎng)中請改為macvtap。將 ipv4_master 的 eth0 設置為服務器網(wǎng)卡,使用 ip addr 指令就能看到,一般不是eth0就是ens192。
接下來找到發(fā)布默認域,改成你的域名。例如 vpn.itxe.net (與后面的證書保持一致),這個等下改下發(fā)配置文件也會用到,與系統(tǒng)名稱一樣要記住。
# 要發(fā)布的默認域
default_domain = " vpn.itxe.net"
最后是啟用壓縮功能,這個吃CPU算力。默認配置文件中不開,但正常的服務器開了反而節(jié)流也不會影響到速度,能相對的提升小包的轉(zhuǎn)發(fā)性能。
修改 profile.xml 文件
從這個文件的23行開始看:
<BackupServerList>
<HostAddress>localhost</HostAddress>
</BackupServerList>
</ClientInitialization>
<ServerList>
<HostEntry>
<HostName>VPN Server</HostName>
<HostAddress>localhost</HostAddress>
</HostEntry>
</ServerList>
我們需要修改兩個 HostAddress 為上面的發(fā)布默認域,另外我司sslvpn使用的是443端口,則寫作
<HostAddress>vpn.itxe.net:443</HostAddress>
另外將 HostName 改為剛剛寫的名稱:
<HostName>XX公司VPN</HostName>
當VPN客戶端首次連接后,AnyLink服務器會向客戶端下發(fā)該配置文件,以確保下次連接時可以直接在列表中選擇該服務器~~,如你有多個sslvpn服務器請用 xx公司VPN - xxx 來區(qū)別,并將 中放入其他服務器。~~
傳SSL證書
選擇簽發(fā)證書的nginx格式,會得到fullchaim.pem和private.key倆文件。fullchaim.pem重命名為vpn_cert.crt,private.key重命名為vpn_cert.key并上傳至 /usr/local/anylink-deploy/conf 中。這個證書可以考慮配置好后吊銷,因為AnyLink內(nèi)置了 Let’s Encrypt 證書且定時更新。
啟動前需要設置的內(nèi)容
tun
-
開啟服務器ipv4轉(zhuǎn)發(fā)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
-
立即生效
sysctl -p
-
設置nat,請?zhí)鎿Q網(wǎng)卡名稱為前面查看的內(nèi)網(wǎng)網(wǎng)卡名稱,另外,如果server.toml文件里面客戶端的IP地址池不是默認的192.168.90.0/24,也請修改為對應的IP地址池
iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -o eth0 -j MASQUERADE
- 查看設置是否生效
iptables -nL -t nat
若顯示上面配的規(guī)則,則ipv4轉(zhuǎn)發(fā)生效
- 安裝iptables-services,用于保存iptables配置,永久生效
yum install -y iptables-services
- 設置開機自啟
systemctl enable iptables.service
- 保存當前iptables設置
service iptables save
若提示 iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ] 則說明配置成功
macvtap
若選擇橋接模式,請在 server.toml 中禁用NAT
#是否自動添加nat
iptables_nat = false
創(chuàng)建日志文件目錄
請修改為自己配置的日志路徑,不創(chuàng)建會啟動失敗,如果沒有打開日志輸出,可以跳過
mkdir /usr/local/anylink-deploy/log
啟動 AnyLink
-
復制service文件到系統(tǒng)中
cp /usr/local/anylink-deploy/systemd/anylink.service /usr/lib/systemd/system/
-
啟動anylink
systemctl start anylink systemctl enable anylink
-
查看啟動狀態(tài)
systemctl status anylink
看到綠色的 Active: active (running) 則說明AnyLink啟動成功。
配置管理面板
訪問地址公網(wǎng)IP+端口(默認8800),輸入賬號(admin)和 密碼(password)點擊登錄
http://vpn.itxe.net:8800
自定義 SSL VPN
選擇 其他設置 - VPN 對外地址,修改為配置文件中寫的默認域
修改 Banner 信息及自定義首頁,Banner信息將會在登錄成功后在客戶端顯示
配置自動更新證書
選擇 其他設置 - 證書設置 - Let’s Encrypt證書,按照api填寫就好了。這樣就不用擔心證書過期而報信任錯誤,每3個月將會自動續(xù)期一次。
企業(yè)配置項
如果你想搞統(tǒng)一認證賬號,我推薦你搭個WinRadius(搞AD域再弄,或是freeredius指令我想對于小白是并不友好的),然后交給 Radius 服務器來認證
WinRadius下載: https://www.123pan.com/s/WekeVv-SKSY3.html
由于該軟件并不支持第三方登錄的OTP,在此我配置了公司的LDAP:
另外默認是sqlite3存儲數(shù)據(jù)庫,可能較為簡單的是mysql數(shù)據(jù)庫對接?但我還沒嘗試過,還請其他dalao研究以后在底下評論區(qū)告知。
客戶端指引下載
訪問 https://devops-100tal.oss-cn-beijing.aliyuncs.com/vpnuserguide/vpnuserguide.htm 里面教程寫的清清楚楚,這里就不多贅述可以自己慢慢看
Windows 客戶端
win10-5.0.02075 版
win10-4.10 版
win10 ARM64(Surface pro X/Raspberry Pi) 版
win7/win8 版
macOS 客戶端
mac 客戶端(13.0 以上)
mac 客戶端(10.11 以上/ 支持OS 11 Big Sur 版)
mac 客戶端(Maverick 10.9 版/Yosemite 10.10 版)
注:更新客戶端版本時,先按照如下方法卸載掉老客戶端后再安裝,不要直接把程序仍到回收站,否則會出現(xiàn)無法安裝的情況
打開桌面“訪達 ”,選擇左邊的 “應用程序 ”,找到 “Cisco”文件夾下的 “Uninstall Anyconnect”,雙擊卸載時輸入電腦的開機密碼即可完成卸載
Android
Android用戶
VPN客戶端APK安裝包
https://play.google.com/store/apps/details?id=com.cisco.anyconnect.vpn.android.avf&hl=zh
iOS
登錄 app store,搜索“cisco anyconnect”,下載安裝 VPN客戶端文章來源:http://www.zghlxwxcb.cn/news/detail-841469.html
https://apps.apple.com/cn/app/cisco-secure-client/id1135064690文章來源地址http://www.zghlxwxcb.cn/news/detail-841469.html
到了這里,關于AnyLink:一款基于ocserv的 SSL VPN 企業(yè)級解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!