frp内网穿透工具安装使用说明

2025-08-26 00:07:29 | 世界杯足球队 | admin | 6892°c

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

解压

tar -zxvf frp_0.61.1_linux_amd64.tar.gz

进入目录

cd frp_0.61.1_linux_amd64

目录结构和作用说明:

文件/目录类型作用1frpc可执行文件FRP 的客户端端程序 ,部署在内网服务器上,用于将内网服务暴露到公网。2frpc.toml配置文件FRP 客户端 的配置文件,定义客户端的行为和规则。3frps可执行文件FRP 的服务端程序,部署在有公网 IP 的服务器上,负责接收客户端请求并转发流量。4frps.toml配置文件FRP 服务端的配置文件,定义服务端的行为和规则。5LICENSE文本文件FRP 的开源协议声明文件,通常为 MIT 协议(具体以实际版本为准)。

2.2. 服务端安装配置

2.2.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"

2.2.2. 启动服务端frps

启动命令:

./frps -c ./frps.toml

因配置了Dashboard,所以可以通过web界面来进行查看。

打开浏览器通过 http://[server addr]:7500 访问 Dashboard 界面,输入用户名密码 根据配置进行输入。

2.2.3. 配置systemd管理frps服务

此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。

以下是具体的操作步骤:

安装 systemd

如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:

# 使用 yum 安装 systemd(CentOS/RHEL)

yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)

apt install systemd

创建 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

使用 systemd 命令管理 frps 服务

# 启动frp

sudo systemctl start frps

# 停止frp

sudo systemctl stop frps

# 重启frp

sudo systemctl restart frps

# 查看frp状态

sudo systemctl status frps

设置 frps 开机自启动

sudo systemctl enable frps

2.3 客户端安装配置

2.3.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"

2.3.2. 启动客户端frpc

./frpc -c ./frpc.toml

打开浏览器通过 http://[server addr]:7400 访问 Dashboard 界面,输入用户名密码 根据配置进行输入。

2.3.3. 配置systemd管理frpc服务

配置方法参考 2.2.3 进行配置。

2.4. 功能示例

2.4.1. 通过ssh访问内网机器

通过简单配置 TCP 类型的代理,使用户能够访问内网服务器。

在具有公网 IP 的机器上部署 frps

部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:

bindPort = 7000

在需要被访问的内网机器上部署 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 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。

启动 frps 和 frpc通过 SSH 访问内网机器

使用以下命令通过 SSH 访问内网机器,假设用户名为 test:

ssh -o Port=6000 test@x.x.x.x

frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

2.4.2. 更多示例

更多示例请参考官网所给示例

示例链接:https://gofrp.org/zh-cn/docs/examples/