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

frp 实现内网穿透实战教程

在当今的网络环境中,内网穿透已经成为程序员和网络管理员不可或缺的工具之一。无论是远程开发、调试,还是访问内网服务,内网穿透工具都极大地提高了工作效率和灵活性。今天,我们就来深入了解一下
FRP(Fast Reverse Proxy),一款简单易用且功能强大的内网穿透工具。

内网穿透的重要性

在计算机网络中,内网通常是指被防火墙或路由器隔离的内部网络。内网中的设备和服务通常无法直接通过公网访问,这给远程工作、开发和调试带来了诸多不便。内网穿透技术通过在公网和内网之间建立一个安全的通道,使得外部设备能够访问内网中的服务。

对于程序员来说,内网穿透有以下几个重要的应用场景:

  1. 访问内网服务:通过内网穿透,开发者可以在外部网络环境中访问公司内网的开发环境、数据库等服务,方便远程工作。
  2. 远程调试与开发:开发者可以在任何地方、任何设备上进行开发工作,通过将本地服务映射到公网上,实现远程调试。
  3. Webhook 接收:内网穿透可以用于接收来自外部服务的 Webhook 请求,例如 GitHub 的 Webhook 回调,这对于自动化开发流程非常重要。
  4. 敏感数据保护:内网穿透工具通过加密和身份验证机制,确保了内网服务与外部环境之间的通信安全性,保护敏感数据不被泄露。

为什么选择 FRP

FRP(Fast Reverse Proxy)是一款开源的内网穿透工具,它以其简单易用、功能强大、安全性高而受到广泛欢迎。以下是 FRP 的一些主要特点:

  1. 不限流、不限连接、开源免费
  2. 简单易用的配置:FRP 提供了简洁明了的配置文件,用户可以通过简单的设置完成对内网服务的映射和穿透,无需复杂的操作。
  3. 多协议支持:FRP 支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,适用于多种应用场景。
  4. 安全性保障:FRP 提供了身份验证和加密机制,支持 TLS/SSL 加密通信,确保数据传输的安全性。
  5. 跨平台支持:FRP 支持 Windows、Linux、macOS 等多个操作系统,方便用户在不同平台上部署。
  6. 高性能和稳定性:FRP 的设计注重性能和稳定性,能够处理大量连接和数据传输。
  7. 活跃的社区和持续更新:FRP 拥有一个活跃的开源社区,用户可以在社区中获取支持、分享经验。同时,FRP 的开发团队也在不断更新和改进,确保其稳定性和安全性。

前置条件

安装 FRP(Fast Reverse Proxy)的前置条件主要包括以下几个方面:

1. 硬件与网络环境

  • 公网服务器:需要一台具备公网 IP 的服务器,用于部署 FRP 服务端(frps)。推荐配置为至少 1 核 1GB 内存,具体配置可根据流量和连接数调整。
  • 内网客户端:需要至少一台内网机器,用于部署 FRP 客户端(frpc),并且该机器需要能够访问公网。
  • 稳定的网络连接:FRP 服务端和客户端之间的网络连接需要稳定,网络波动或中断可能导致内网服务无法正常访问。

2. 软件环境

  • 操作系统支持
    • 服务端:支持主流的 Linux 发行版(如 Ubuntu、CentOS、Debian 等),也支持 Windows Server 和 macOS。
    • 客户端:支持 Windows、Linux、macOS 等多种操作系统。
  • 系统架构:支持 x86_64、aarch64、armv7l 等常见架构。
  • 防火墙与安全组配置:需要确保服务器的系统防火墙以及云服务的安全组策略允许 FRP 所需的端口(如默认的 7000 端口)的入站和出站流量。

架构图

外部网络
公网服务器
家庭/公司内网
本地连接
1. 建立控制连接
保持心跳
2. 访问请求
http://1.2.3.4:8080
3. 通知客户端
有新连接
4. 建立数据通道
5. 获取内网数据
6. 返回响应数据
7. 转发数据
8. 返回给用户
用户设备
手机/电脑
FRP Server
frps
公网IP: 1.2.3.4
监听端口
:7000 控制端口
:8080 服务端口
内网服务
192.168.1.100:8080
FRP Client
frpc

这个流程图展示了FRP内网穿透的工作原理:

核心组件:

  • 内网服务:需要被访问的内网应用(如Web服务、数据库等)
  • FRP Client (frpc):运行在内网的客户端,负责转发数据
  • FRP Server (frps):运行在公网服务器上,接收外部请求
  • 用户设备:需要访问内网服务的外部设备

工作流程:

  1. FRP客户端主动与服务端建立持久的控制连接
  2. 外部用户访问公网服务器的指定端口
  3. 服务端通知客户端有新的连接请求
  4. 客户端建立新的数据通道
  5. 客户端从内网服务获取数据
  6. 内网服务返回响应
  7. 客户端将数据转发给服务端
  8. 服务端将响应返回给用户

这种方式巧妙地解决了内网设备无公网IP的问题,通过反向代理实现了外网对内网的访问。

实战需求

将本地部署的 php 项目,内网穿透到互联网访问。

https://gitee.com/chengxuyuanguashu/crmeb_zzff_class

本地 http://localhost:80/wap/index/index.html 能正常访问。

FRP 的快速入门

frp 官方 github 网址:https://github.com/fatedier/frp

frp 官方文档 网站:https://gofrp.org/

接下来,我们将通过一个简单的示例,介绍如何在 Linux 系统上搭建 FRP 服务端和客户端。

(一)FRP 服务器端配置

  1. 下载 FRP你可以从 FRP 的 GitHub Release 页面下载最新版本的 FRP。

https://github.com/fatedier/frp/releases

我们下载两个,linux 版本作为FRP服务端,window 版作为 FRP 客户端用来映射本地 windows10 启动的网站。

如果公网服务器、内网服务都是 Linux,下载一个即可。

  1. 上传 Linux 安装包到腾讯云服务器,解压得到如下

  1. 修改 FRP 服务器配置
[root@VM-12-16-centos frp]# cat frps.toml
bindPort = 7000
vhostHTTPPort = 80
  1. 启动 FRP 服务器
./frps -c ./frps.toml

(二)FRP 客户端配置

  1. 下载 FRP 并解压得到如下

修改配置文件 ,ip 改为公网 ip

serverAddr = "公网ip"
serverPort = 7000[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000[[proxies]]
name = "crmeb_web"
type = "http"
localPort = 80
customDomains = ["公网ip"]
  1. 启动 FRP 客户端

进入目录,cmd 打开

frpc.exe -c ./frpc.toml

使用公网 ip 打开

如下成功!

FRP 的应用场景

  1. 远程开发与调试:通过 FRP 将本地开发环境映射到公网上,开发者可以在任何地方进行开发和调试。
  2. Webhook 接收:FRP 可以用于接收来自外部服务的 Webhook 请求,例如 GitHub 的 Webhook 回调。
  3. 内网服务访问:通过 FRP,开发者可以在外部网络环境中访问公司内网的服务。
  4. 远程桌面连接:FRP 可以用于远程连接内网中的桌面设备,例如通过 VNC 或 RDP。

总结

FRP 是一款非常优秀的内网穿透工具,它简单易用、功能强大、安全性高,适用于多种应用场景。通过本文的介绍,相信你已经对 FRP 有了初步的了解。如果你需要在远程环境中访问内网服务,或者需要进行远程开发和调试,FRP 绝对值得一试。

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

相关文章:

  • CANopen Magic调试软件使用
  • 1 JQ6500语音播报模块详解(STM32)
  • 工作流调度(草稿)
  • Android Studio注释如何不从行首开始
  • Mysql GROUP_CONCAT函数数据超长导致截取问题记录
  • 常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南
  • React 合成事件系统深度解析
  • Jenkins 实战指南-项目自动构建部署全流程通关
  • 明远智睿T113-i核心板:工业设备制造的“破局者”
  • Qt 常用控件 - 7
  • 大数据与人工智能在保险行业中的应用:2025年精准理赔的优化
  • VirtualBox 虚拟机磁盘扩容完整手册
  • 深入理解二维数组创建与使用
  • Unity TextMeshPro(二)优化
  • Redis知识点+项目+面试八股
  • 深度解读 WizTelemetry 2.0:链路追踪如何让分布式系统“无所遁形”
  • spring-cloud整合nacos详细攻略
  • 《汇编语言:基于X86处理器》第13章 高级语言接口(2)
  • 无人机在环保监测中的应用:低空经济发展的智能监测与高效治理
  • 一体化步进伺服电机在无人机舱门应用中的应用案例
  • gpt-oss-120b 模型:笔记本上的智能“奇幻之旅”
  • 什么叫渲染效果图?啥是渲染图
  • 如何将 AGV 叉车成功集成到仓库自动化系统中?
  • 智能化评估体系:数据生产、在线化与自动化的三重奏
  • ​苹果应用高版本出现:“无法安装此app,因为无法验证其完整性”是怎么回事竟然是错误的
  • 【前端Vue】如何在log-viewer组件中添加搜索定位功能
  • 基于柔性管控终端的新能源汽车充电站有序充电系统设计与实现
  • PiaRef代码库结构梳理
  • Java 大视界 -- Java 大数据在智能教育学习效果评估指标体系构建与精准评估中的应用(394)
  • 关于Linux编程:fread/fwrite/流的定位/文件IO