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

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

  1. 下载 , 可下载到任意目录
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
  1. 解压
tar -zxvf frp_0.61.1_linux_amd64.tar.gz
  1. 进入目录
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

  1. 启动命令:
./frps -c ./frps.toml

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

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

2.2.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
  1. 创建 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
  1. 使用 systemd 命令管理 frps 服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
  1. 设置 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 类型的代理,使用户能够访问内网服务器。

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

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

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

  1. 启动 frps 和 frpc
  2. 通过 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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值