毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN

举报
湾联科技 发表于 2025/11/24 17:36:07 2025/11/24
【摘要】 本教程将介绍一种 “鱼与熊掌兼得” 的创新方案:核心VPN服务(Pritunl)部署在您本地的强大工作站上,通过轻量级的FRP内网穿透工具,借助阿里云ECS提供的稳定公网入口,安全地将其服务能力发布到互联网。 这样,远程员工只需连接到一个统一的云上地址,即可直接接入您办公室或实验室的本地网络,访问其中的设备,实现真正意义上的“远程局域网”体验。

一、引言

对于许多中小团队、开发者或实验室环境而言,购买昂贵的商业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):

    • 角色:连接云端与本地的“安全信使”。它避免了在本地网络进行复杂的端口转发,实现了“服务隐藏”。

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

  • 编辑配置文件:
# 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和新密码完成初始化

  • 添加组织:
    Users->Add Organization

  • 添加用户
    Users->Add User

4. Server配置

  • 添加server
    Servers->Add Server ,其中port为你的frpc客户端转发的端口。

  • 添加route
    Servers->Add Route,其中network为你内网设备的IP段

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下载用户的配置文件:

3)解压下载的tar文件,打开OpenVPN客户端导入.ovpn:

输入创建用户时设置的PIN登录

提示连接成功!


三、ENJOY

教程到这,我们已经成功地将本地的强大工作站,通过FRP这把“神奇的钥匙”,变成了一个拥有云上公网入口的专业级VPN网关。这个方案架构最大限度地利用了现有资源:本地工作站的算力和云服务器的网络可达性。

本方案的核心价值:

  • 资源最大化:无需购买专用VPN硬件,将已有的高性能本地工作站物尽其用。
  • 成本最优化:云服务器仅作为入口,配置要求低,有效控制云端开支。
  • 访问直接化:远程用户直接接入目标局域网,访问延迟低,体验流畅。
  • 管理现代化:通过Pritunl的Web界面,像管理云服务一样管理您部署在本地的VPN。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。