
frp是什么详解:
frp是一个快速的反向代理服务,可以把NAT或防火墙后面的本地服务暴露到公网上。
frp目前支持TCP、UDP、HTTP以及HTTPS等协议,通过域名可以将请求转发到内网的服务上。
frp的主要功能和优点有:
简单易用,无需复杂的配置就可以直接暴露内网服务。
连接速度快,利用长连接池可以显著提高访问速度。
支持多种协议,包括TCP、UDP、HTTP、HTTPS等。
安全可靠,支持参数加密、身份验证等功能。
跨平台支持,客户端和服务器支持常见的操作系统。
轻量高效,资源占用低,不会明显降低主机性能。
原理:

FRP 主要由两部分组成:
FRPC 客户端(frp client)
运行在公司内网机器上
接收来自公网的访问请求
将请求转发给内网服务
FRPS 服务端(frp server)
部署在具有公网 IP 的机器上
暴露服务的公网入口
接收公网访问请求
通过加密隧道转发到 FRPC
配置过程:
官网地址:
官方仓库:
关于releases选择:
不同平台选择差异,自己的平台苹果、arm、amd和对应的linux、windows看清,不清楚百度
运行平台和运行环境配置:
本教程为树莓派和linux搭配阿里云,阿里云记得把防火墙需要开的端口放行,客户端同理
首先关于frp运行需要go语言环境,go环境安装如下:
一、下载 Golang 软件包
首先,我们需要去 Golang 官方网站上下载对应 ARM 架构的 Golang 软件包。目前官方网站提供了多个版本的 Golang 软件包,我们需要选择适合自己系统及架构的软件包进行下载。
根据官方文档显示,目前官方支持的 ARM 架构有 ARMv6、ARMv7 和 ARM64。我们可以通过以下命令查看当前使用的系统架构:
如果是 ARMv6 或 ARMv7,建议下载 Golang 1.16 版本之前的版本;如果是 ARM64,建议下载 Golang 1.16 或者更高版本。
在本示例中,我们将使用 Raspberry Pi 4 Model B,下载链接:
https://go.dev/dl/go1.21.5.linux-armv6l.tar.gz
二、安装 Golang 软件包
下载完成之后,我们需要将 Golang 软件包解压到指定目录下。在这里,我们选择将软件包解压到 /usr/local 目录下,这里的 /usr/local 是一个惯例,通常情况下会将第三方软件安装到该目录下。
执行以下命令将软件包解压到 /usr/local 目录下:
$ sudo tar -C /usr/local -xzf go1.21.5.linux-armv6l.tar.gz
解压完成之后,在 /usr/local 目录下将会产生一个 go 的目录,其中包含了 Golang 的相关文件。在这个目录中,我们可以看到以下文件和目录:
go/
├── api
├── bin
├── lib
├── pkg
└── src
其中,bin、lib 和 pkg 目录是 Golang 编译器需要的一些文件和库;src 目录包含了所有的标准库源代码;api 目录中则包含了 Golang 的所有版本的 API 文档。
接下来,我们需要配置 Golang 相关的环境变量,以便我们在终端中使用 Golang。
三、设置 Golang 环境变量
在设置 Golang 环境变量之前,我们先需要确认一下以下两个路径是否包含在当前用户的 PATH 变量中:
/usr/local/go/bin
$HOME/go/bin
如果以上两个路径都未包含在 PATH 变量中,可以在 /etc/profile 文件中加入以下代码:
export PATH=$PATH:/usr/local/go/bin
如有需要还需要修改~/.bashrc文件,在后面加上以下几行
export PATH=$PATH:/usr/local/go/bin
一旦完成设置,直接在终端中执行以下命令,即可看到当前系统中安装的 Golang 版本:
go version
至此,我们已经成功在 ARM 系统上安装了 Golang。在接下来的开发工作中,可以放心地使用 Golang 进行程序开发。
服务端配置:
项目下载后目录:

将不属于服务主机和客户端的部分删除即可
服务器主机的配置文件参考如下:
bindPort = 7000 # 服务端与客户端通信端口
transport.tls.force = true # 服务端将只接受 TLS链接
auth.token = "public" # 身份验证令牌,frpc要与frps一致
# Server Dashboard,可以查看frp服务状态以及统计信息
webServer.addr = "0.0.0.0" # 后台管理地址
webServer.port = 7500 # 后台管理端口
webServer.user = "admin" # 后台登录用户名
webServer.password = "admin" # 后台登录密码
vhostHTTPPort = 80 #开启http代理的端口,需要网站类服务可以开启
vhostHTTPSPort = 443 #开启https代理的端口
客户端配置文件参考如下:
transport.tls.enable = true
serverAddr = "***.***.***.***" #远程服务器地址
serverPort = 7000 #服务端口
auth.token = "public" #密匙
[[proxies]] #ssh代理
name = "ssh-ikaros-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
[[proxies]] #宝塔后台代理
name = "baota"
type = "tcp"
localIP = "127.0.0.1"
localPort = 35856
remotePort = 8000
[[proxies]] #个人服务代理
name = "wangpan"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5000
remotePort = 5000
[[proxies]] #https代理,这个有点安全问题,但简单能用
name = "httpsdaili"
type = "tcp"
localIP = "127.0.0.1"
localPort = 443
remotePort = 443
[[proxies]] #网站http代理,a记录
name = "webfan_http"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["***.***"]
[[proxies]] #网站http代理,@记录
name = "block_web_http"
type = "http"
localIP = "127.0.0.1"
localPort = 88
customDomains = ["***.***.***"]
配置完成后需要配置开机自启动:
同样,也区分为服务器端和客户端。
开机自启动主要就是运用 systemd 功能,要把 service文件创建在/lib/systemd/system
目录下。
公网服务端:
复制frps文件到 /usr/bin/ 目录下
sudo cp frps /usr/bin/frps
复制frps
.tmol文件到 /etc/frp
目录下,不存在该目录就先创建
sudo mkdir /etc/frp
sudo cp frps.toml /etc/frp/frps.toml
权限不够记得更改权限
sudo chmod 775 对应文件或文件夹
创建一个 frps.service
文件,填入以下内容:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=1min
ExecStart=/usr/bin/frps -c /etc/frp/frps.toml
[Install]
WantedBy=multi-user.target
复制frps.service
文件到 /lib/systemd/system
目录下
sudo cp frps.service /lib/systemd/system/frps.service
使用systemctl的命令启动并设置自启
sudo systemctl start frps # 启动frps,可以先进行测试
sudo systemctl status frps # 查看目前的运行状态
sudo systemctl stop frps # 停止frps
sudo systemctl enable frps # 设置开机自启动
设置好之后,当然重启一下后看看进程
sudo systemctl enable frps
sudo reboot
sudo systemctl status frps
客户端配置:
复制frpc
文件到 /usr/bin/
目录下
sudo cp frpc /usr/bin/frpc
复制frpc.
toml文件到 /etc/frp
目录下,不存在该目录就先创建
sudo mkdir /etc/frp
sudo cp frpc.toml /etc/frp/frpc.toml
创建一个 frpc.service 文件,填入以下内容
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
TimeoutStartSec=30
Restart=always
RestartSec=1min
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.toml
[Install]
WantedBy=multi-user.target
复制frpc.service文件到 /lib/systemd/system 目录下
sudo cp frpc.service /lib/systemd/system/frpc.service
使用systemctl的命令启动并设置自启
sudo systemctl start frpc # 启动frpc,可以先进行测试
sudo systemctl status frpc # 查看目前的运行状态
sudo systemctl stop frpc # 停止frpc
sudo systemctl enable frpc # 设置开机自启动
设置好之后,当然重启一下树莓派然后看看进程
sudo systemctl enable frpc
sudo reboot
sudo systemctl status frpc
客户端宝塔配置细节:

文中环圈网站对应的域名需要和客户端frpc.toml中填写的customDomains对应否则失败,查看frp代理详细信息可以在frps.tmol中的端口查看 例如http://***.****.***:7500/
本教程完毕