快速反向代理(Fast Reverse Proxy, FRP)是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

功能

多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。

TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。

代理组间的负载均衡。

端口复用:多个服务可以通过同一个服务端端口暴露。

P2P 通信:流量不必经过服务器中转,充分利用带宽资源。

客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。

服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。

用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。

组件

服务端(frps):部署在公网服务器,接收外部请求并转发到内网客户端。

客户端(frpc):部署在内网设备,注册到服务端并建立隧道。

域名

公网服务器

#下载
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
#解压
tar -zxvf frp_0.61.1_linux_amd64.tar.gz
sudo mkdir /usr/local/frp
mv ./frp_0.61.1_linux_amd64/* /usr/local/frp
ls /usr/local/frp/

#修改frps.toml,token是安全认证密钥,需与客户端一致。
vi /usr/local/frp/frps.toml

#配置监听端口
bindPort = 7000
#配置监控面版 http://sujj.wiki:7500/metrics
enablePrometheus = true
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
#身份认证
auth.method = "token"
auth.token = "12345678"
#日志配置
log.to = "./frpc.log"
log.level = "info"
log.maxDays = 3

#设置防火墙,未开启不需要设置防火墙
ufw allow 7000/tcp    # 服务端通信端口
ufw allow 80/tcp      # HTTP 穿透
ufw allow 443/tcp     # HTTPS 穿透
ufw allow 7500/tcp    # Dashboard 监控面板(可选)
ufw reload

#创建后台服务
vi /etc/systemd/system/frps.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml

[Install]
WantedBy = multi-user.target


# 启用开机自启
sudo systemctl enable frps
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

# 重新加载配置
systemctl daemon-reload
# 查看日志
journalctl -u frps -f
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
#身份认证
auth.method = "token"
auth.token = "12345678"
#日志配置
log.to = "./frpc.log"
log.level = "info"
log.maxDays = 3

#设置防火墙,未开启不需要设置防火墙
ufw allow 7000/tcp    # 服务端通信端口
ufw allow 80/tcp      # HTTP 穿透
ufw allow 443/tcp     # HTTPS 穿透
ufw allow 7500/tcp    # Dashboard 监控面板(可选)
ufw reload

#创建后台服务
vi /etc/systemd/system/frps.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml

[Install]
WantedBy = multi-user.target


# 启用开机自启
sudo systemctl enable frps
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

# 重新加载配置
systemctl daemon-reload
# 查看日志
journalctl -u frps -f