一、引言

對於許多中小團隊、開發者或實驗室環境而言,購買昂貴的商業VPN網關並非首選。我們通常已經擁有性能強大的本地工作站或服務器,存放着核心代碼、數據和測試環境。能否將這些本地資源安全、便捷地開放給遠程團隊成員訪問呢? 

傳統方案可能是在路由器上配置端口轉發,但這需要公網IP,並會將內網服務直接暴露在公網上,面臨安全風險。而直接在雲上搭建VPN,雖然管理方便,但所有訪問雲下本地設備的流量都需要經過雲服務器中轉,會產生不必要的帶寬費用和延遲。 

本教程將介紹一種 “魚與熊掌兼得” 的創新方案:核心VPN服務(Pritunl)部署在您本地的強大工作站上,通過輕量級的FRP內網穿透工具,藉助阿里雲ECS提供的穩定公網入口,安全地將其服務能力發佈到互聯網。 這樣,遠程員工只需連接到一個統一的雲上地址,即可直接接入您辦公室或實驗室的本地網絡,訪問其中的設備,實現真正意義上的“遠程局域網”體驗。


1.  方案架構

本方案的核心思想是:“服務在身邊,入口在雲端”。它巧妙地將服務主體與訪問入口分離,兼顧了成本、性能和安全性。

1)核心組件與角色:

  • 本地工作站:
  • 角色:整個VPN體系的核心。
  • 運行服務:
  • Pritunl Server:提供專業的OpenVPN/WireGuard接入服務,管理用户認證和VPN IP分配。
  • FRP Client:作為內網穿透的主動發起方。
  • 阿里雲ECS:
  • 角色:提供穩定、可靠的公網訪問入口。
  • 運行服務:
  • FRP Server:接收FRP Client的連接,建立加密隧道,並將外部對特定端口的訪問轉發到本地Pritunl服務。
  • FRP(Fast Reverse Proxy):
  • 角色:連接雲端與本地的“安全信使”。它避免了在本地網絡進行復雜的端口轉發,實現了“服務隱藏”。

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_部署教程

2)整體數據流如下:

  • 準備階段:本地工作站上的FRP客户端主動連接到雲ECS上的FRP服務端,建立一條穩定的加密隧道。
  • 連接階段:遠程用户配置Pritunl客户端,連接至雲ECS服務器的公網IP和FRP映射的端口(例如,your-ecs-ip:11940)。
  • 穿透階段:ECS上的FRP服務端收到VPN連接請求後,通過已建立好的隧道,將該請求無縫轉發給本地工作站的Pritunl服務。
  • 接入階段:遠程用户通過Pritunl的身份驗證後,成功接入本地工作站所在的物理網絡,獲取到一個該內網的IP地址(如 192.168.1.x)。
  • 訪問階段:此時,遠程用户如同直接坐在辦公室的局域網內一樣,可以直接訪問網絡中的其他設備,如NAS(192.168.1.10)、開發服務器(192.168.1.20)或打印機等。

3)  架構優勢:

  • 成本極低:雲ECS僅需最基礎的配置(1核1G),僅作為流量入口,消耗資源極少。
  • 性能無損:訪問本地設備時,數據在遠程用户和本地網絡間直接路由(通過VPN隧道),不經過ECS中轉,避免了雲服務帶寬費用和延遲。
  • 安全性高:本地網絡無需配置公網IP或端口轉發,所有服務都被FRP隧道保護起來,外部無法直接掃描到Pritunl服務。


2.  為何選擇Pritunl?

在本架構中,Pritunl的價值不僅在於其自身強大,更在於它與FRP結合的可行性。一個命令行操作的OpenVPN服務器很難通過FRP穩定地暴露出去,而Pritunl解決了這個難題。

特性

傳統方案(純CLI OpenVPN)

本方案 (Pritunl + FRP)

本方案的優勢

內網穿透適配性

配置複雜,需要通過腳本處理IP轉發和路由,與FRP結合難度高

Web界面統一配置路由,與FRP無縫集成,只需轉發VPN端口即可

極大地簡化了穿透部署,使“本地VPN上雲”成為可能

運維管理

需SSH到本地工作站,通過命令行管理證書和用户,非常不便

無論身處何地,都能通過Web界面管理本地VPN。用户配置可通過鏈接分發,體驗堪比商業VPN

實現了本地服務的遠程化管理,運維效率飛躍式提升

用户體驗

需要為每個用户手動分發證書文件,體驗差且不安全

管理員在Web界面創建用户後,可直接生成預配置鏈接或二維碼,用户一鍵導入

提供了現代化、友好的用户接入流程,降低培訓成本

狀態可視性

需要登錄服務器查看日誌,無法實時瞭解誰在連接

提供清晰的實時連接監控面板,在線用户、流量、連接時長一目瞭然

讓運維狀態透明化,快速響應問題

安全與靈活性

證書管理繁瑣,吊銷需要維護CRL列表

支持數據庫後端、OAuth2集成,可以方便地啓用雙因素認證(2FA),輕鬆管理用户生命週期

為企業級安全要求提供了便捷的實現路徑


二、部署詳解

1.  ECS部署Frps服務

  • Github克隆或下載frp: https://github.com/fatedier/frp

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_遠程辦公_02

  • 編輯配置文件:
# nano frp_0.65.0_linux_amd64/frps.toml

# 服務綁定的IP與端口
bindAddr = "0.0.0.0"
bindPort = 8888

# web dashboard配置
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin@123"
# token權限驗證,需與客户端配置一致,隨機的、足夠長的字符串
auth.method = "token"
auth.token = "Q5-CzF2v-GkVXylfpTBqpjoJdB71wyYWSGV4yzyM7Gw"
# 日誌配置
log.to = "/root/frp_0.65.0_linux_amd64/logs/frps.log"
log.level = "info"
log.maxDays = 3
  • 編輯service文件,實現開機自啓動:
# nano /etc/systemd/system/frps.service

[Unit]
# 服務名稱
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 啓動frps的命令 您的frps的安裝路徑
ExecStart = /root/frp_0.65.0_linux_amd64/frps -c /root/frp_0.65.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target
  • 啓動frps service:
systemctl daemon-reload
systemctl start frps
systemctl enable frps

注意:ECS防火牆需開放8888端口,安全組開放8888端口

2.  本地安裝MongoDB和Pritunl

# 添加 MongoDB 源
sudo tee /etc/apt/sources.list.d/mongodb-org.list << EOF
deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse
EOF

# 添加 Pritunl 源
sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb [ signed-by=/usr/share/keyrings/pritunl.gpg ] https://repo.pritunl.com/stable/apt noble main
EOF

# 添加 OpenVPN 源
sudo tee /etc/apt/sources.list.d/openvpn.list << EOF
deb [ signed-by=/usr/share/keyrings/openvpn-repo.gpg ] https://build.openvpn.net/debian/openvpn/stable noble main
EOF

# 安裝並啓動服務
sudo apt --assume-yes install gnupg
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor --yes
curl -fsSL https://swupdate.openvpn.net/repos/repo-public.gpg | sudo gpg -o /usr/share/keyrings/openvpn-repo.gpg --dearmor --yes
curl -fsSL https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc | sudo gpg -o /usr/share/keyrings/pritunl.gpg --dearmor --yes
sudo apt update
sudo apt --assume-yes install pritunl openvpn mongodb-org 
sudo systemctl start pritunl mongod
sudo systemctl enable pritunl mongod

3.  Web登錄並初始化

  • 訪問 https://192.168.1.88/setup
  • 獲取初始化密鑰:
sudo pritunl setup-key
# 填入setup key完成數據庫初始化
  • 獲取默認用户名和密碼登錄:
sudo pritunl default-password
# 根據username和password登錄web,然後填入ECS的公網IP和新密碼完成初始化

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_pritunl_03

  • 添加組織: Users->Add Organization

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_VPN搭建_04

  • 添加用户 Users->Add User

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_VPN搭建_05

4.  Server配置

  • 添加server Servers->Add Server ,其中port為你的frpc客户端轉發的端口。

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_pritunl_06

  • 添加route Servers->Add Route,其中network為你內網設備的IP段

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_遠程辦公_07

5.  本地Frpc配置

  • 編輯frpc.toml配置文件:
# nano frp_0.65.0_linux_amd64/frpc.toml

#配置公網服務器上frp服務的IP與端口
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 8888

#日誌配置
log.to = "/root/frp_0.65.0_linux_amd64/logs/frpc.log"
log.level = "info"
log.maxDays = 3
#token權限驗證,需與服務端配置一致
auth.method = "token"
auth.token = "Q5-CzF2v-GkVXylfpTBqpjoJdB71wyYWSGV4yzyM7Gw"
#面板相關配置
webServer.port = 7200
webServer.user = "admin"
webServer.password = "admin"


#代理配置
[[proxies]]
name = "gz_vpn_admin"                   #名稱
type = "tcp"                            #代理類型
localIP = "127.0.0.1"                   #本地IP
localPort = 13204                       #內網服務監聽的端口
remotePort = 13204                      #需要在公網服務器上監聽的端口

注意:ECS防火牆開放13204端口,安全組開放13204端口

  • 啓動frpc服務:
# cat /etc/systemd/system/frpc.service

[Unit]
# 服務名稱
Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 啓動frpc的命令 您的frpc的安裝路徑
ExecStart = /home/snpbio/frp_0.65.0_linux_amd64/frpc -c /home/snpbio/frp_0.65.0_linux_amd64/frpc.toml

[Install]
WantedBy = multi-user.target

# frpc開機自啓
systemctl daemon-reload
systemctl start frpc
systemctl enable frpc

6.  遠程測試

1)安裝OpenVPN客户端:https://openvpn.net/client/

2)從本地的Pritunl Web下載用户的配置文件:

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_pritunl_08

3)解壓下載的tar文件,打開OpenVPN客户端導入.ovpn:

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_pritunl_09

輸入創建用户時設置的PIN登錄

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_部署教程_10

提示連接成功!

毅碩HPC | Pritunl + ECS + Frp 搭建遠程辦公VPN_VPN搭建_11


三、ENJOY

教程到這,我們已經成功地將本地的強大工作站,通過FRP這把“神奇的鑰匙”,變成了一個擁有云上公網入口的專業級VPN網關。這個方案架構最大限度地利用了現有資源:本地工作站的算力和雲服務器的網絡可達性。

本方案的核心價值:

  • 資源最大化:無需購買專用VPN硬件,將已有的高性能本地工作站物盡其用。
  • 成本最優化:雲服務器僅作為入口,配置要求低,有效控制雲端開支。
  • 訪問直接化:遠程用户直接接入目標局域網,訪問延遲低,體驗流暢。
  • 管理現代化:通過Pritunl的Web界面,像管理雲服務一樣管理您部署在本地的VPN。