FRP 代理服务
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透
用途
- 利用处于防火墙后的机器,对外网环境提供 http 或 https 服务
- 对于 http、https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口
- 利用处于防火墙后的机器,对外网环境提供 tcp/udp 服务,例如通过 ssh 访问处于公司局部环境的主机
原理
- frp 主要由 frpc(客户端)和 frps(服务端)组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
- 内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。
- 用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
在 frp 中一个代理对应一个需要暴露的内网服务,一个客户端支持同时配置多个代理。
frp 支持多种代理类型来适配不同的使用场景
类型 | 描述 |
---|---|
tcp | 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务 |
udp | 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务 |
http | 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权 |
https | 针对 HTTPS 应用定制了一些额外的功能 |
stcp | 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口 |
sudp | 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口 |
xtcp | 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转 |
tcpmux | 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务 |
部署
FRPS
frps.ini1
2
3
4
5[common]
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
bind_udp_port = 7000
FRPC
frpc.ini
- local_ip:本地需要暴露到公网的服务地址
- local_port:本地需要暴露到公网的服务端口
- remote_port:服务端的远程监听端口,转发客户端的 local_port 端口,如果填 0 则会随机分配一个端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26[common]
server_addr = x.x.x.x
server_port = 7000
token = xxxxx
#log_file = /dev/null
#log_level = info
#log_max_days = 3
vhost_http_port = 80
vhost_https_port = 443
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web_http]
type = http
local_ip = 192.168.2.1
local_port = 80
custom_domains = www.yuwei.cc
[web_https]
type = https
local_port = 443
custom_domains = www.yuwei.cc文档
https://gofrp.org/docs/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 君玉自牧!