一次内网开发环境访问方式的改进实践:使用 FRP 替代远程桌面
一次内网开发环境访问方式的改进实践:使用 FRP 替代远程桌面
一、背景
在公司项目中,经常会遇到这样一种开发环境限制:
项目内网服务器禁止直接访问外网
为了在该环境下进行开发和调试,常见的做法是:
- 准备一台 可以联网的台式机
- 通过 向日葵 / ToDesk / Windows 远程桌面 等方式远程控制这台机器
- 再由该机器访问内网服务器进行开发、调试等操作
二、问题描述
2.1 现有方案的痛点
远程桌面主要有下面几个问题:
-
受网络质量影响较大
网络如有波动,画面就会卡顿、延迟断连,影响开发体验。 -
开发环境重复搭建
需要在“中转的联网机器”上安装 IDE、SDK、编译工具以及各种依赖,维护成本较高。 -
图形化并非必需
实际开发过程中,大多数操作(代码编辑、服务运行、日志查看等)完全可以通过 SSH 完成,并不依赖 GUI,甚至当你需要调试前端代码时也可以通过将该前端端口也映射出来的方式实现。
三、思路分析
仔细想想:
我们主要为的不是“远程控制一台电脑”,而是“访问内网服务器”。
由此便可得出一个新路线:
- 联网台式机可以访问内网服务器
- 联网台式机可以访问外网
- 那么它天然可以作为一个 网络转发节点
由此引入 FRP(Fast Reverse Proxy),通过端口映射的方式,将内网服务器的服务暴露到外网。
四、方案设计
4.1 网络结构示意
本地开发电脑
|
| SSH
v
外网服务器 (frps)
|
| 端口转发
v
联网台式机 (frpc)
|
| 内网访问
v
内网服务器 (192.168.1.144:22)
4.2 端口映射说明
假设环境如下:
- 内网服务器 SSH 地址:
192.168.1.144:22 - 外网服务器地址:
114.113.112.111 - 映射端口:
6666
最终可以通过以下方式访问内网服务器:
ssh user@114.113.112.111 -p 6666
等价于:
ssh user@192.168.1.144 -p 22
4.3 FRP 客户端配置示例
frpc 运行在 联网台式机 上,配置示例:
[ssh_proxy]
type = tcp
local_ip = 192.168.1.144
local_port = 22
remote_port = 6666
frps 部署在外网服务器上,用于接收外部连接并转发流量。
五、结果与效果
5.1 方案对比
| 方案 | 稳定性 | 延迟 | 维护成本 |
|---|---|---|---|
| 远程桌面 | 较差 | 高 | 高 |
| SSH + FRP | 稳定 | 低 | 低 |
5.2 实际收益
- 不再依赖图形化远程桌面
- SSH 连接稳定性显著提升
- 中转机器只需保持开机,无需长期占用
- 不影响现场工作人员正常使用联网台式机
六、总结
-
默认方案不一定是最优方案
远程桌面更适合运维或临时操作,而非高频开发场景。 -
FRP 非常适合内外网桥接场景
显著提升开发效率和体验。
浙公网安备 33010602011771号