1. 概述
本案例使用的frp版本为:v0.61.1
Frp 是一款高性能的反向代理开源工具,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
Frp 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,Frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。此外,还可以通过 xtcp 实现 P2P 通信。
Frp 官网地址:https://gofrp.org/zh-cn/
Github 地址:https://github.com/fatedier/frp
Frp 的下载页面地址为:https://github.com/fatedier/frp/releases
2. Linux版本
以下是 FRP 内网穿透工具的安装和配置步骤,分为服务端(公网服务器)和客户端(内网机器)两部分:
2.1 下载
本案例的下载链接为:https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
下载安装包后,可下载到任意目录
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
2.2 解压
tar -zxvf frp_0.61.1_linux_amd64.tar.gz
2.3 进入目录
cd frp_0.61.1_linux_amd64
目录结构和作用说明:
![图片[1]-Frp内网穿透Linux安装使用说明](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250419235514341-image-1024x325.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
3. 服务端
3.1 配置服务端文件 frps.toml
从 v0.52.0 版本开始,frp 开始支持 TOML、YAML 和 JSON 作为配置文件格式。
请注意,INI 已被弃用,并将在未来的发布中移除。新功能只能在TOML、YAML 或 JSON 中使用。希望使用这些新功能的用户应相应地切换其配置格式。
# 服务端监听地址,用于接收 frpc 的连接,默认监听 0.0.0.0。
bindAddr = "0.0.0.0"
# 服务端监听端口,默认值为 7000。
bindPort = 7000
#鉴权方式,可选值为 token 或 oidc,默认为 token。
auth.method = "token"
#在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。 根据实际使用进行配置
auth.token = "********"
#服务端 Dashboard 配置。
#默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
webServer.addr = "0.0.0.0"
# dashboard端口
webServer.port = 7500
# 用户名 根据实际使用进行配置
webServer.user = "****"
# 密码 根据实际使用进行配置
webServer.password = "**********"
# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
3.2 启动服务端frps
启动命令:
./frps -c ./frps.toml
因配置了Dashboard,所以可以通过web界面来进行查看。
打开浏览器通过 http://[server addr]:7500
访问 Dashboard 界面,输入用户名密码 根据配置进行输入。
![图片[2]-Frp内网穿透Linux安装使用说明](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250419235905392-image-1024x376.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
3.3 配置systemd管理frps服务
此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。
在 Linux 系统下,使用 systemd
可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
以下是具体的操作步骤:
1.安装 systemd
如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum
(适用于 CentOS/RHEL)或 apt
(适用于 Debian/Ubuntu)来安装它:
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
2.创建 frps.service 文件
使用文本编辑器 (如 vim) 在 /etc/systemd/system
目录下创建一个 frps.service
文件,用于配置 frps 服务。
sudo vim /etc/systemd/system/frps.service
写入内容
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
3.使用 systemd 命令管理 frps 服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
4.设置 frps 开机自启动
sudo systemctl enable frps
4.客户端配置
4.1 配置客户端文件
具体地,需要修改客户端的配置文件 frpc.toml
# 服务端的公网ip地址 根据真实ip进行配置
serverAddr = "********"
# 服务端监听端口
serverPort = 7000
#鉴权方式,可选值为 token 或 oidc,默认为 token。
auth.method = "token"
#在 method 为 token 时生效,需要和服务端设置一样的值才能鉴权通过。 根据实际使用进行配置
auth.token = "*******"
webServer.addr = "0.0.0.0"
webServer.port = 7400
# 根据实际使用进行配置 用于web端管理界面的登录用户名
webServer.user = "*****"
# 根据实际使用进行配置 用于web端管理界面的登录密码
webServer.password = "*******"
webServer.pprofEnable = false
# tls
#transport.tls.certFile = "/etc/frp/ssl/client.crt"
#transport.tls.keyFile = "/etc/frp/ssl/client.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
4.2 启动客户端frpc
./frpc -c ./frpc.toml
打开浏览器通过 http://[server addr]:7400
访问 Dashboard 界面,输入用户名密码 根据配置进行输入。
![图片[3]-Frp内网穿透Linux安装使用说明](https://cos.soyisou.cn/wp-content/uploads/2025/04/20250420000413774-image-1024x204.png?watermark/2/text/6ZOt6L2p57K-6YCJCkFjSmF2YQp3d3cuYWNqYXZhLmNvbQ/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/73/shadow/0/gravity/southeast/dx/20/dy/20)
配置systemd管理frpc服务,具体步骤可以参考服务端配置
5. 配置示例
Frp有多种应用场景,以通过SSH访问内网机器为例,通过简单配置 TCP 类型的代理,使用户能够访问内网服务器。
5.1 在具有公网 IP 的机器上部署 frps
部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:
bindPort = 7000
5.2 在需要被访问的内网机器上部署 frpc
部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置:
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口。
remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
5.3 启动 frps 和 frpc
分别启动frps服务和frpc服务即可
5.4 通过 SSH 访问内网机器
使用以下命令通过 SSH 访问内网机器,假设用户名为 test:
ssh -o Port=6000 test@x.x.x.x
frp 将请求发送到 x.x.x.x:6000
的流量转发到内网机器的 22 端口。
5.更多示例
更多示例请参考官网所给示例
示例链接:https://gofrp.org/zh-cn/docs/examples/
更多示例请参考官网所给示例
暂无评论内容