HPC
DCV 应用教程
DCV | Nice DCV 安装手册
DCV | RLM 提取 HOSTID
EF Portal and DCV HA Solution
Enginframe 应用教程
Enginframe | 技术参数说明
毅硕HPC教程
毅硕HPC | HPC环境下的LDAP配置
毅硕HPC | Rocky Linux 9 SLURM软件编译安装
毅硕HPC | RHEL 8 上的NVIDIA驱动安装
毅硕HPC | 配置SLURM作业队列优先级
毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN
毅硕HPC | 在HPC集群上优雅地使用 Conda
毅硕HPC | 一文详解HPC环境中的MPI并行计算
毅硕HPC | NVIDIA DGX Spark 万字硬核评测:将AI超级工厂带上桌面
毅硕HPC | Lustre文件系统在HPC集群中的部署实战
毅硕HPC | InfiniBand网络在HPC集群中的核心应用
毅硕HPC | OpenPBS构建高效稳定的HPC作业调度环境
毅硕HPC | HPC集群LSF调度系统部署指南
毅硕HPC | 轻量高效的XFCE桌面环境
毅硕HPC | Ubuntu 24 SLURM 编译安装
-
+
首页
毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN
# 一、引言 对于许多中小团队、开发者或实验室环境而言,购买昂贵的商业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。
chsnp
2026年1月28日 11:04
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期