FRP 安装与配置详解
FRP(Fast Reverse Proxy)是一款内网穿透工具,它帮助内网设备通过公网服务器将服务暴露到外网。以下是详细的安装与配置步骤,帮助你快速部署 FRP。
一、安装 FRP
1. 下载 FRP
FRP 支持多种系统平台(Windows、Linux、MacOS)。从 GitHub 仓库下载最新版本的 FRP:
- GitHub 仓库:Releases · fatedier/frp · GitHub
选择对应系统的压缩包,如:
- Linux (64位):
frp_x.x.x_linux_amd64.tar.gz
- Windows (64位):
frp_x.x.x_windows_amd64.zip
2. 解压文件
下载完成后,解压缩文件:
# Linux 示例
tar -zxvf frp_x.x.x_linux_amd64.tar.gz# Windows 示例
解压缩到某个目录
解压后,目录下包含如下文件:
frps
:服务端可执行文件frpc
:客户端可执行文件frps.ini
:服务端配置文件frpc.ini
:客户端配置文件LICENSE
:许可文件README.md
:说明文档
二、配置 FRP
1. 配置服务端 (frps)
服务端负责接收客户端的请求,并将其转发到内网服务。服务端通常部署在公网服务器上。
编辑 frps.ini
文件,常见配置如下:
[common]
bind_port = 7000 # 服务端监听的端口,客户端通过这个端口连接
vhost_http_port = 8080 # HTTP 请求的端口(外网访问 HTTP 服务时使用)
vhost_https_port = 8443 # HTTPS 请求的端口
dashboard_port = 7500 # FRP 仪表盘访问端口
dashboard_user = admin # 仪表盘登录用户名
dashboard_pwd = password # 仪表盘登录密码
log_file = ./frps.log # 日志文件路径
log_level = info # 日志级别
token = your_secure_token # 用于客户端和服务端验证的密钥
2. 启动 FRP 服务端
启动命令:
./frps -c ./frps.ini
成功启动后,frps 服务端将监听配置文件中定义的端口。
3. 配置客户端 (frpc)
客户端运行在内网机器上,负责将内网服务代理到外网。
编辑 frpc.ini
文件,典型的配置示例如下:
[common]
server_addr = x.x.x.x # 公网服务器(frps)的 IP 地址
server_port = 7000 # frps 监听的端口
token = your_secure_token # 与服务端一致的密钥[web]
type = http # 使用 HTTP 代理
local_port = 80 # 本地 HTTP 服务的端口
custom_domains = www.example.com # 外网访问时的域名[ssh]
type = tcp # 使用 TCP 代理
local_port = 22 # 本地 SSH 服务的端口
remote_port = 6000 # 外网访问的远程端口
上面的配置表示:
web
配置:将本地的 HTTP 服务(80 端口)通过自定义域名www.example.com
暴露到外网。ssh
配置:将本地的 SSH 服务(22 端口)通过公网 6000 端口进行访问。
***注意:避免在配置项的同一行添加注释
4. 启动 FRP 客户端
启动命令:
./frpc -c ./frpc.ini
三、验证与使用
1. 访问 HTTP 服务
在客户端运行后,外网用户可以通过 http://www.example.com
访问客户端的 HTTP 服务。
2. SSH 远程登录
外网用户可以通过以下命令登录客户端的 SSH:
ssh -p 6000 user@x.x.x.x # x.x.x.x 为公网服务器的 IP
四、仪表盘配置与监控
FRP 提供了 Web 仪表盘用于监控代理服务的状态。
-
启用仪表盘:确保在
frps.ini
中配置了dashboard_port
和登录凭据:dashboard_port = 7500 dashboard_user = admin dashboard_pwd = password
-
访问仪表盘:通过浏览器访问
http://x.x.x.x:7500
,并使用配置文件中的用户名和密码登录。
五、高级配置
1. 自定义域名与 DNS
如果需要通过域名访问,确保正确配置 DNS 解析。将域名解析到 FRP 公网服务器的 IP 地址。
2. TLS/SSL 安全传输
对于生产环境,建议使用 HTTPS 代理,开启安全传输。可以使用 Let’s Encrypt 等工具生成 SSL 证书,将其配置在 frps 中。
示例:
[common]
vhost_https_port = 443
tls_cert_file = /path/to/cert.pem
tls_key_file = /path/to/key.pem
3. 负载均衡
FRP 支持将同一个服务的多台内网设备配置为负载均衡。可以在多个客户端使用同样的 custom_domains
或 remote_port
。
4. 流量控制与限速
你可以通过 bandwidth_limit
限制流量。配置文件中加入以下内容:
bandwidth_limit = 1MB # 限制带宽为 1MB/s
六、常见问题与排查
1. 连接失败
- 检查防火墙配置,确保
frps
监听的端口已开放。 - 检查
frpc
和frps
是否使用相同的token
。
2. 域名无法访问
- 确认域名解析正确,且
custom_domains
配置无误。 - 检查服务端配置中的
vhost_http_port
或vhost_https_port
是否正确。
3. 高并发性能问题
- 调整服务端和客户端的
max_pool_count
来支持更多连接。 - 使用较强性能的服务器来运行
frps
。
总结
FRP 是一种非常强大的内网穿透工具,通过简单的配置即可将内网服务发布到公网。它的多协议支持、自定义域名、加密传输等功能让它适合多种场景,包括远程办公、内网服务外网访问等。