使用FRP实现RuoYi-Cloud-Plus内网穿透实战指南 1. 项目背景与核心需求在开发测试环境中我们经常需要将本地虚拟机服务暴露到公网进行联调或演示。传统方案需要配置复杂的端口映射或购买昂贵的云服务而内网穿透技术提供了一种轻量级解决方案。RuoYi-Cloud-Plus作为基于Spring Cloud的快速开发框架其微服务架构尤其需要灵活的网络访问能力。关键痛点开发者在本地虚拟机搭建的RuoYi测试环境无法被异地同事或客户直接访问导致协作效率低下。公网IP和云服务器成本又成为中小团队的负担。2. 环境准备与工具选型2.1 基础环境配置推荐使用VMware Workstation 17搭配Ubuntu 24.04 LTS桌面版注意以下配置细节CPU分配建议为虚拟机分配至少4核避免微服务启动时资源争抢内存设置RuoYi-Cloud-Plus建议8GB起步Spring Cloud服务较耗内存网络模式选择桥接(Bridged)模式获取独立局域网IP便于后续穿透配置# 检查Ubuntu网络配置 ip addr show | grep inet # 若未安装net-tools sudo apt update sudo apt install net-tools -y2.2 FRP选型建议对比常见穿透工具Ngrok配置简单但免费版不稳定FRP开源可控支持TCP/UDP/HTTP多种协议ZeroTier适合组建虚拟局域网但需要客户端安装选择FRP 0.65.0版本因其完善的TCP穿透支持适合微服务间调用可视化Dashboard监控轻量级服务端仅10MB内存占用3. 服务端配置实战3.1 云服务器初始化以阿里云ECS为例安全组开放7000主端口、7500Dashboard和后续映射端口使用systemd管理服务避免进程意外终止# 创建FRP专用目录 sudo mkdir -p /opt/frp cd /opt/frp # 下载并解压注意替换版本号 wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz tar -xzf frp_0.65.0_linux_amd64.tar.gz3.2 关键配置解析frps.toml核心参数bindPort 7000 # 客户端连接端口 # Dashboard配置建议修改默认密码 webServer.addr 0.0.0.0 webServer.port 7500 webServer.user admin webServer.password StrongPssw0rd! # 安全认证token相当于密钥 auth.method token auth.token RuoYi2025SecureToken启动命令添加-t参数强制token验证./frps -c frps.toml -t RANDOM_STRONG_TOKEN4. 客户端穿透配置4.1 虚拟机端安装通过Xftp上传frp压缩包后# 解压并保留客户端文件 tar -xzf frp_0.65.0_linux_amd64.tar.gz cd frp_0.65.0_linux_amd64 rm frps* # 删除服务端文件4.2 多服务映射方案frpc.toml典型配置serverAddr your.server.ip serverPort 7000 auth.token RuoYi2025SecureToken # 映射SSH服务22→60022 [[proxies]] name ruoyi-ssh type tcp localIP 127.0.0.1 localPort 22 remotePort 60022 # 映射Nacos8848→60848 [[proxies]] name nacos type tcp localIP 127.0.0.1 localPort 8848 remotePort 60848调试技巧先用telnet your.server.ip 60022测试端口连通性再尝试SSH连接5. 系统集成与优化5.1 开机自启动配置创建systemd服务文件sudo vim /etc/systemd/system/frpc.service写入以下内容注意路径修改[Unit] DescriptionFRP Client Afternetwork.target [Service] Typesimple ExecStart/opt/frp/frpc -c /opt/frp/frpc.toml Restarton-failure RestartSec5s [Install] WantedBymulti-user.target启用服务sudo systemctl daemon-reload sudo systemctl enable frpc sudo systemctl start frpc5.2 安全加固措施防火墙配置# 仅允许云服务器IP访问FRP端口 sudo ufw allow from 云服务器IP to any port 7000日志监控# 查看实时日志 journalctl -u frpc -fToken轮换每月更新一次auth.token6. 典型问题排查指南6.1 连接超时问题现象Dashboard可访问但服务不通排查步骤在云服务器执行tcpdump -i eth0 port 7000确认有流量到达检查客户端日志journalctl -u frpc验证安全组规则是否放行所有映射端口6.2 性能调优建议当出现高延迟时在frpc.toml中添加transport.protocol kcp # 改用UDP协议调整心跳参数transport.heartbeatInterval 30 transport.heartbeatTimeout 907. 扩展应用场景7.1 远程调试方案通过穿透实现IDEA远程调试映射5005调试端口Arthas连接暴露3658端口进行线上诊断7.2 多环境协同配置示例# 开发环境 [[proxies]] name dev-mysql localPort 3306 remotePort 60306 # 测试环境 [[proxies]] name test-redis localPort 6379 remotePort 606378. 维护与升级建议版本升级# 保留配置文件的情况下 mv frpc.toml /tmp/ wget 新版本FRP tar -xzf 新版本包 mv /tmp/frpc.toml ./配置备份# 每天凌晨备份 0 0 * * * tar -czf /backups/frp_$(date \%Y\%m\%d).tar.gz /opt/frp实际使用中发现当同时映射超过10个服务时建议在云服务器端调整内核参数echo net.ipv4.ip_local_port_range 1024 65535 /etc/sysctl.conf sysctl -p