上级 项目
type
status
date
slug
summary
password
子级 项目
tags
category
一、Frp简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp 项目地址: https://github.com/fatedier/frp
二、Frp特性
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
- 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
三、架构与工作原理
frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。
由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。
四、相关概念
4.1、代理
在 frp 中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。
4.2、代理类型
frp 支持多种代理类型,以适应不同的使用场景。以下是一些常见的代理类型:
- TCP:提供纯粹的 TCP 端口映射,使服务端能够根据不同的端口将请求路由到不同的内网服务。
- UDP:提供纯粹的 UDP 端口映射,与 TCP 代理类似,但用于 UDP 流量。
- HTTP:专为 HTTP 应用设计,支持修改 Host Header 和增加鉴权等额外功能。
- HTTPS:类似于 HTTP 代理,但专门用于处理 HTTPS 流量。
- STCP:提供安全的 TCP 内网代理,要求在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
- SUDP:提供安全的 UDP 内网代理,与 STCP 类似,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
- XTCP:点对点内网穿透代理,与 STCP 类似,但流量不需要经过服务器中转。
- TCPMUX:支持服务端 TCP 端口的多路复用,允许通过同一端口访问不同的内网服务。
每种代理类型适用于不同的使用情境,您可以根据需求选择合适的代理类型来配置 frp。
五、安装
5.1、需求描述
公司有一台内网服务器A和一台具有公网IP的云服务器B ,内网服务器上有一个服务,如jenkins服务,需要将内网jenkins服务发布到公网进行访问,即通过云服务器B的公网IP进行访问。
5.2、下载安装包
从官方GitHub的Release页面下载最新版的二进制文件:https://github.com/fatedier/frp/releases ,截至目前最新版为:v0.54.0,linux版下载地址:https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
5.3、公网服务器部署frp
(1) 上传安装包并解压
(2) 修改配置
(3) 创建日志目录
(4) 启动服务
5.4、内网服务器部署frp
(1) 上传安装包并解压
(2) 创建代理配置目录与日志存储目录
(3) 修改配置
(4) 启动服务
5.5、访问测试
在浏览器使用公网服务器端使用:http://<公网IP>:8500,即可访问到内网的jenkins服务,注意,如果公网服务器有安全组,记得放开相应的端口。
公网服务器web界面:http://<公网IP>:7500
公网服务器监控指标:http://<公网IP>:7500/metrics
六、附录:
从官网下载了服务端与客户端的全配置文件,仅供参考
6.1、服务端全配置文件 frps_full_example.toml
6.2、客户端全配置文件 frpc_full_example.toml
6.3、官网示例配置参考
- 作者:团子
- 链接:https://ikun.su//article/frp
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章