Frp搭建

frp 简单介绍

官网地址:https://gofrp.org/zh-cn/docs/

下载地址:https://github.com/fatedier/frp/releases

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:

  • 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
  • TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
  • 代理组间的负载均衡。
  • 端口复用:多个服务可以通过同一个服务端端口暴露。
  • P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
  • 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
  • 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
  • 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。

frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。

由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。

在 frp 中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。

代理类型

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。

安装启动

在官网下载对应版本的安装包,注意服务端和客户端需要使用相同的版本,下载地址

下载完成后在对应位置解压:

  • 服务端启动:./frps -c ./frps.toml
  • 客户端启动:./frpc -c ./frpc.toml

各个版本配置文件不一致,具体参考官网信息。

配置说明

下边使用一个简单的web服务实例,本地端口为 8080,想要代理到服务端的 18080 端口

服务端配置,frps.toml

bindPort = 7000
vhostHTTPPort = 18080

auth.method = "token"
auth.token = "xxxxx"

参数说明:

  • bindPort:frp服务端监听的端口。需要设置防火墙开放指定的端口,如果在云服务器上,还需要指定安全组开发指定端口。
  • vhostHTTPPort:HTTP 类型代理监听的端口,启用后才能支持 HTTP 类型的代理。需要设置防火墙开放指定的端口,如果在云服务器上,还需要指定安全组开发指定端口。
  • auth.method:指定frp认证方式,目前支持两种身份验证方式,tokenoidc,默认为 token。这些认证方式允许您验证客户端与服务端之间的通信,并确保只有授权用户能够建立连接。
  • auth.token:token的值,需要server和client保持一致。

客户端配置,frpc.toml

serverAddr = "x.x.x.x"
serverPort = 7000

auth.method = "token"
auth.token = "xxxxx"

[[proxies]]
name = "web"
type = "http"
localPort = 8080
customDomains = ["www.yourdomain.com"]

参数说明:

  • serverAddr:frps服务器的ip地址。
  • serverPort:frps服务绑定的端口。即前边frp.toml配置文件中的bindPort = 7000参数。
  • auth.method:与服务端一致即可。
  • auth.token:与服务端一致即可。
  • name:当前客户端代理名称,需要保持唯一。
  • type:通信类型。
  • localPort:本地web服务的端口。
  • customDomains:自定义域名列表,需要和你的ip解析到的域名保持一致(必要选项)。

通过上述方式:配置完成后,即可在外网通过ip:18080 访问内网localhost:8080端口的内容。

进阶:Https 配置

服务端配置,frps.toml

bindPort = 7000
# 将 vhostHTTPPort 改为 vhostHTTPSPort
vhostHTTPSPort = 18080

auth.method = "token"
auth.token = "xxxxx"

客户端配置,frpc.toml

serverAddr = "x.x.x.x"
serverPort = 7000

auth.method = "token"
auth.token = "xxxxx"

[[proxies]]
name = "web"
type = "https"
customDomains = ["www.yourdomain.com"]

[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:8080"

# HTTPS 证书相关的配置
crtPath = "./server.crt"
keyPath = "./server.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值