当前位置: 首页 > news >正文

【内网穿透】使用FRP实现内网与公网Linux/Ubuntu服务器穿透项目部署多项目穿透方案

一、核心原理

FRP通过公网服务器(frps) 反向代理内网服务器(frpc) 的服务,将内网端口映射到公网端口,实现穿透。


二、准备工作

  1. 公网服务器(假设IP:1.1.1.1

    开放端口:7000(FRP服务端通信端口)、8080(映射后访问Vue的端口)。
  2. 内网服务器

    运行Vue3项目(例如在localhost:3000)。
  3. 域名(可选,若需域名访问需提前解析到公网IP)。


三、具体步骤

1. 公网服务器部署 FRP 服务端(frps)

(1) 下载并解压 FRP

wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar -zxvf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64

(2) 配置 frps.ini

[common]
bind_port = 7000  # 服务端监听端口
token = your_secure_token  # 客户端连接凭证(建议强密码)
dashboard_port = 7500      # 监控面板端口(可选)
dashboard_user = admin     # 面板用户名(可选)
dashboard_pwd = admin_pwd  # 面板密码(可选)

(3) 启动 frps

./frps -c ./frps.ini
# 或后台运行:nohup ./frps -c ./frps.ini > frps.log 2>&1 &

验证:访问 http://1.1.1.1:7500 输入账号密码可查看FRP状态(如果配置了dashboard)。

2. 内网服务器部署 FRP 客户端(frpc)

(1) 下载并解压 FRP(同服务端步骤)

wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar -zxvf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64

(2) 配置 frpc.ini

[common]
server_addr = 1.1.1.1    # 公网服务器IP
server_port = 7000       # 对应frps的bind_port
token = your_secure_token # 与frps的token一致[vue3-app]                # 自定义服务名称
type = tcp                # 使用TCP协议(HTTP/HTTPS可选)
local_ip = 127.0.0.1      # 内网服务IP(本机)
local_port = 3000         # Vue项目端口
remote_port = 8080        # 公网映射端口(通过1.1.1.1:8080访问)

(3) 启动 frpc

./frpc -c ./frpc.ini
# 或后台运行:nohup ./frpc -c ./frpc.ini > frpc.log 2>&1 &
3. 部署并运行 Vue3 项目

在内网服务器启动Vue项目(确保运行在3000端口):

# 以Vite为例(端口需与frpc中的local_port一致)
npm run dev -- --port 3000
# 生产环境建议用PM2管理:pm2 serve dist 3000 --spa
4. 通过公网访问 Vue 项目

浏览器访问公网IP + 映射端口:http://1.1.1.1:8080


四、防火墙与安全

位置需开放端口说明
公网服务器TCP: 7000FRP服务端通信
TCP: 8080访问Vue的端口
TCP: 80/443若使用域名访问需开放
内网服务器无特殊要求只需能访问公网7000端口

五、常见问题

1. 连接失败

  • 检查公网7000端口是否开放:telnet 1.1.1.1 7000
  • 确认frps/frpctoken一致。

2. 能连接但无法访问Vue

  • 检查内网Vue项目是否运行在local_port(如3000)。
  • 确认公网防火墙开放remote_port(如8080)。

3. 性能优化

  • 生产环境建议用type = http + Nginx压缩静态资源。
  • 启用HTTPS:在frps配置vhost_https_port并配置SSL证书。


六、多项目穿透配置方案

1. 修改公网服务器 FRPS 配置 (frps.ini)
[common]
bind_port = 7000
token = your_secure_token
# 允许使用的端口范围(可选,但推荐设置)
allow_ports = 8000-9000

无需重启 frps,配置动态生效

2. 内网服务器 FRPC 配置 (frpc.ini)
[common]
server_addr = 1.1.1.1
server_port = 7000
token = your_secure_token# 项目1:Vue3 管理后台
[project-admin]
type = tcp
local_ip = 127.0.0.1
local_port = 3000
remote_port = 8080  # 通过公网IP:8080访问# 项目2:Vue3 用户端
[project-client]
type = tcp
local_ip = 127.0.0.1
local_port = 3001
remote_port = 8081  # 通过公网IP:8081访问# 项目3:Node.js API 服务
[project-api]
type = tcp
local_ip = 127.0.0.1
local_port = 4000
remote_port = 8082  # 通过公网IP:8082访问# 项目4:数据库管理 (phpMyAdmin)
[project-db]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 33060  # 通过公网IP:33060访问
3. 重启 FRPC 客户端
# 先停止运行中的frpc
pkill frpc# 重新启动
nohup ./frpc -c ./frpc.ini > frpc.log 2>&1 &

访问方式

项目内网地址公网访问地址
Vue3 管理后台localhost:3000http://1.1.1.1:8080
Vue3 用户端localhost:3001http://1.1.1.1:8081
Node.js APIlocalhost:4000http://1.1.1.1:8082
数据库管理localhost:8080http://1.1.1.1:33060

七、高级技巧:使用域名区分项目

1. FRPC 配置 (HTTP 模式)
[common]
# ... 同上 ...# 项目1:admin.example.com
[web-admin]
type = http
local_port = 3000
custom_domains = admin.example.com# 项目2:client.example.com
[web-client]
type = http
local_port = 3001
custom_domains = client.example.com
2. FRPS 配置
[common]
bind_port = 7000
token = your_secure_token
vhost_http_port = 80  # HTTP 统一监听80端口
3. 域名解析

将两个域名都解析到公网服务器 IP 1.1.1.1

4. 访问方式
  • 管理后台: http://admin.example.com

  • 用户端: http://client.example.com


八、端口管理建议

1. 端口规划表

| 项目名称    | 内网端口 | 公网端口 | 用途         |
|-------------|----------|----------|--------------|
| admin       | 3000     | 8080     | Vue管理后台  |
| client      | 3001     | 8081     | 用户界面     |
| api-server  | 4000     | 8082     | 后端API      |
| db-manage   | 8080     | 33060    | 数据库管理   |

2. 防火墙配置

# 公网服务器开放端口
sudo ufw allow 7000  # FRP控制端口
sudo ufw allow 8080  # 项目1
sudo ufw allow 8081  # 项目2
sudo ufw allow 8082  # 项目3
sudo ufw allow 33060 # 项目4

九、注意事项

1. 端口冲突问题

  • 确保公网服务器上的 remote_port 不重复
  • 避免使用系统保留端口(<1024)

2. 动态添加项目

  • 修改 frpc.ini 后只需重启 frpc 服务
  • 无需重启公网服务器的 frps

3. 性能考虑

  • 每个TCP连接需要约10-20KB内存
  • 监控命令:watch -n 1 "ss -t | grep 1.1.1.1"

4. 安全建议

# 在frpc.ini中为敏感服务添加ACL
[project-db]
type = tcp
local_port = 8080
remote_port = 33060
allow_users = admin,dev_user  # 只允许特定用户访问

十、常用管理命令

1. 查看FRP连接状态

# 公网服务器
netstat -antp | grep frps# 内网服务器
netstat -antp | grep frpc

2. 日志查看

# 实时查看frpc日志
tail -f frpc.log# 查看错误日志
grep ERROR frpc.log

3. 服务管理

# 优雅重启frpc
kill -HUP $(pgrep frpc)

通过这种多端口配置方案,可以轻松实现多个项目的穿透访问,每个项目都有独立的公网访问入口,同时保持配置的清晰和管理的便捷性。

http://www.dtcms.com/a/297179.html

相关文章:

  • vue使用xlsx库导出excel
  • 编程语言Java——核心技术篇(三)异常处理详解
  • 字符串 “asdasjkfkasgfgshaahsfaf” 经过哈夫曼编码之后存储比特数是多少?
  • [实战] 用1 PPS 驯服本地恒温晶振(OCXO/TCXO)
  • 医疗AI跨机构建模实施总结:基于 Flower 联邦学习与差分隐私的实践指南
  • ESP32学习笔记_Components(1)——使用LED Strip组件点亮LED灯带
  • 迷宫生成与寻路可视化
  • 广州 VR 安全用电技术:工作原理、特性及优势探析​
  • 天通卫星赋能三防智能平板:AORO P1100打造全域通信新范式
  • 【数据结构与算法】数据结构初阶:详解二叉树(六)——二叉树应用:二叉树选择题
  • 【数据库】探索DBeaver:一款强大的免费开源数据库管理工具
  • 医疗数据挖掘Python机器学习案例
  • PAT 甲级题目讲解:1008《Elevator》
  • Agent领域,近年来的前沿研究方向:多智能体协作、认知启发架构、伦理安全、边缘计算集成
  • Modbus RTU转Profinet网关与涡街液体流量计:工业自动化数据传输的完美协同
  • 【橘子分布式】gRPC(番外篇-拦截器)
  • 关闭chrome自带的跨域限制,简化本地开发
  • XORIndex:朝鲜不断发展的供应链恶意软件再次瞄准 npm 生态系统
  • 《基于电阻抗断层扫描(EIT)驱动的肌肉骨骼模型表征人体手臂动态意图用于人机交互》论文解读
  • Linux: network: wireshark: esp attempt to detec null-encrypted esp payloads
  • chrome使用Modheader插件让浏览器直接预览图片,不下载
  • 算法思维进阶 力扣 62.不同路径 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题
  • kafka如何保证数据不丢失
  • 机器学习中knn的详细知识点
  • Linux725 磁盘阵列RAID0 RAID1
  • OneCode3.0 Gallery 组件前后端映射机制:从注解配置到前端渲染的完整链路
  • 应用代码解释
  • 从零开始的云计算生活——番外6,使用zabbix对中间件监控
  • pycharm安装教程-PyCharm2023安装详细步骤【MAC版】【安装包自取】
  • Spring 策略模式实现