Frp内网穿透Linux安装使用说明

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安装使用说明

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安装使用说明

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安装使用说明

配置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/

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

    AcJava,让技术学习更简单!
    我是铭轩,微信:ac_java,欢迎与我随时交流!
    © 版权声明
    THE END
    喜欢就支持一下吧
    点赞5243赞赏 分享
    评论 抢沙发

    请登录后发表评论

      暂无评论内容