frp服务配置及应用
文章目录
- frp服务配置及应用
- 前言
- 一、frp是什么?
- 二、为什么使用 frp ?
- 三、原理及概念
- 原理
- 代理
- 代理类型
- 功能特性
- 四、安装部署
- 五、配置实例
- 5.1 frps配置
- 5.1.1 公网IP配置
- 5.1.2 端口配置
- 5.2 frpc配置
前言
提示:部署frp服务需要有公网IP(固定IP或者动态IP)
一、frp是什么?
frp官网:https://gofrp.org/ github主页:https://github.com/fatedier/frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。
以上摘自frp官网。更多信息请查阅官方页面。
二、为什么使用 frp ?
以下引自frp官网
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
三、原理及概念
原理
frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP
的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。 内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。
用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
代理
在 frp 中一个代理对应一个需要暴露的内网服务。一个客户端支持同时配置多个代理。
代理类型
frp 支持多种代理类型来适配不同的使用场景。
类型 | 描述 |
tcp | 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
udp | 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
http | 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。 |
https | 针对 HTTPS 应用定制了一些额外的功能。 |
stcp | 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
xtcp | 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。 |
sudp | 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
tcpmux | 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。 |
功能特性
https://gofrp.org/docs/features/
四、安装部署
参考项目官网即可 https://gofrp.org/docs/setup/
五、配置实例
5.1 frps配置
5.1.1 公网IP配置
- frps所在主机直接接入公网 网络拓扑如下:
这部分没啥重点,主要分2种情况:
- 公网IP是固定的,直接使用即可。
- 公网IP是动态变化的,需要使用DDNS服务,将变化的IP,解析到指定的域名上。- frps所在主机位于局域网内 多数属于这种网络 在这种情况下,我们按照最简单的情况为例:frps主机位于主路由器下。网络拓扑如下:
-
此时主路由器 必须 有公网IP(固定IP或者动态IP均可,DDNS解析看情况配置),然后在主路器由上设置虚拟服务器,将frps及frpc所使用的端口映射到主路由器的外部端口上,并且要设置frps主机的防火墙规则。具体设置参看下一章节。
5.1.2 端口配置
frps和frpc通信,需要指定一个固定的接收客户端连接的端口,假设端口是11111;同时如果frp客户端使用了remote_port,假设端口号为22222,则需要在frps主机上设置允许上述端口的流量进入,如果frps主机在内网中,则需要同时设置虚拟服务器,将上述端口映射到frps主机。其他更详细的端口设置参考官网:示例 以及 服务端详细配置参考
5.2 frpc配置