FRP(Fast Reverse Proxy)是一款专注于内网穿透的高效反向代理工具,用于将位于内网或防火墙后的服务暴露到公网。FRP 的服务端和客户端是其核心组成部分,各自的作用如下:
1. FRP 服务端(frps)
FRP 服务端是运行在公网服务器上的程序,负责接收来自客户端的请求,并将其转发到正确的目标服务。它是整个内网穿透的中枢。
- 部署位置:通常部署在一个有公网 IP 的服务器上(如云服务器)。
- 作用:
- 监听指定端口,等待 FRP 客户端的连接。
- 管理客户端的连接和隧道映射。
- 将外部访问请求转发到内网的服务。
2. FRP 客户端(frpc)
FRP 客户端是运行在内网机器上的程序,负责将本地的服务通过隧道暴露到 FRP 服务端,进而实现公网访问。
- 部署位置:部署在需要暴露服务的内网机器上。
- 作用:
- 连接 FRP 服务端并保持心跳,确保隧道稳定。
- 配置需要转发的内网服务(如 HTTP、SSH、数据库等)。
- 将外部访问的流量从 FRP 服务端反向转发到本地服务。
3.FRP 工作原理简述
- 客户端启动后:
- FRP 客户端连接到 FRP 服务端,并建立一个持久的连接(通常基于 TCP)。
- 根据客户端配置,告诉服务端如何转发流量(指定域名、端口等)。
- 外部访问时:
- 用户通过域名或公网 IP 访问 FRP 服务端。
- FRP 服务端将请求转发到对应的客户端连接。
- FRP 客户端接收到流量后,将其转发到本地指定的服务。
4.配置文件举例
- 服务端配置 (
frps.ini
):
[common] bind_port = 7000
- 客户端配置 (
frpc.ini
):
[common] server_addr = x.x.x.x # 服务端公网 IP server_port = 7000 [web] type = http local_port = 8080 # 内网服务端口 custom_domains = example.com
4.应用场景
- 将本地开发环境暴露到公网测试。
- 在没有公网 IP 的环境下远程访问内网的服务器或服务。
- 解决防火墙限制问题,例如在内网访问远程设备。
5.Mac M4芯片 有FRP 客户端(frpc)吗,安装什么版本的合适?
FRP 支持多种操作系统和架构,包括 macOS,因此 Mac M4 芯片(ARM64 架构) 是支持的。安装 FRP 客户端(frpc)时,只需选择适配 M4 芯片的版本即可。
1. 检查架构
Mac M4 是基于 ARM64 架构,你可以运行以下命令确认:
uname -m
- 如果输出是
arm64
,就需要下载适配 ARM64 的版本。 - 如果输出是
x86_64
(通过 Rosetta 转译),则可以选择适配 x86 的版本,但推荐使用原生 ARM64 版本以获得更高的性能。
2. 下载适配的 FRP 客户端
FRP 的官方 GitHub 提供各种架构和操作系统的预编译版本:
- 访问 FRP 的 GitHub Releases 页面。
- 找到最新版本的发布页面(例如
frp_0.xx.x
)。 - 下载适配 macOS ARM64 的文件,通常命名为:
frp_0.xx.x_darwin_arm64.tar.gz
3. 安装步骤
- 下载并解压:
tar -xzvf frp_0.xx.x_darwin_arm64.tar.gz cd frp_0.xx.x
2.运行客户端(frpc):
./frpc -c frpc.ini
其中,frpc.ini
是你的客户端配置文件。
3.为了便于使用,可以将 frpc
移动到系统的可执行路径:
sudo mv frpc /usr/local/bin/
4. 示例配置
创建配置文件 frpc.ini
,例如:
[common] server_addr = your-server-ip server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
运行:
frpc -c frpc.ini
补充:在较新版本,安装有些变化。
执行解压缩命令tar -zxvf frp_0.61.0_linux_amd64.tar.gz 在当前目录下会出现一个frp_0.61.0_linux_amd64文件夹 文件夹中包含frpc frpc.toml frps frps.toml LICENSE等四个文件
注意:在较新版本中,已经没有frps.init
文件,取而代之的是frps.toml
文件
修改配置文件
服务端配置frps.toml
, 使用nano 或 vim命令对frps.toml
文件稍作修改,参考:
bindPort = 7000 # 服务端监听端口 vhostHTTPPort = 8000 # 用于反向代理HTTP主机时使用 auth.method = "token" # 鉴权方式 auth.token = "password" # 客户端连接的token # 后台管理面板配置 webServer.port = 7500 # 后台面板端口号 webServer.addr = "0.0.0.0" # 后台管理地址 webServer.user = "admin" # 后台管理员账号 webServer.password = "pwd" # 后台管理员密码
开放端口
在阿里云服务器中,我们只需在服务器控制台中添加规则即可。
在上面的配置中,我们使用了 7000
和7001
端口,分别添加规则即可
应用类型 为自定义,协议为TCP, 来源为0.0.0.0 都用默认设置即可,自行设置端口范围和备注。
启动服务
此时,输入./frps -c frps.toml
即可启动服务
任选设备在浏览器中输入x.x.x.x:7001
,出现如下图页面即为服务开放成功,其中,x.x.x.x
为您的服务器公网ip
后台管理面板图片
访问地址:http://[serverAddr]:7500
客户端配置frpc.toml
:
serverAddr = "x.x.x.x" # 服务端IP地址 serverPort = 7000 # 服务端通信端口 auth.method = "token" auth.token = "password" # token 与服务端保持一直 [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 # 本地端口号 remotePort = 6000 # 公网端口号 [[proxies]] name = "web" type = "http" localIP = "127.0.0.1" # 本地监听地址和端口 localPort = 80 # 本地监听端口 customDomains = ["web.test.com"] # 域名或者IP
客户端启动:
./frpc -c ./frpc.toml