学习笔记094——Ubuntu 如何部署 frp 客户端服务?

什么是FRP

frp 是一款开源的反向代理工具 ,全称为 Fast Reverse Proxy ,由 Golang 开发,主要用于内网穿透场景,能够帮助用户从公网访问处于内网环境的服务。

核心作用

在日常开发或运维中,很多设备(如本地服务器、树莓派、家用 NAS)处于内网,没有公网 IP,无法被外网直接访问。frp 可以通过一台拥有公网 IP 的服务器作为中转,建立公网与内网之间的通信隧道,从而实现外网对内网服务的访问。

工作原理

frp 采用 C/S(客户端 - 服务端)架构,分为两个核心组件:

  1. frps(服务端)
    • 部署在拥有公网 IP 的服务器上。
    • 负责监听公网端口,接收来自外网的请求,并将请求转发给内网的 frpc 客户端。
  2. frpc(客户端)
    • 部署在内网设备上。
    • 主动与公网的 frps 建立长连接,接收 frps 转发的请求,再将请求转发给内网的目标服务(如 Web 服务、SSH 服务)。

安装方法

下载地址:点击下载

FRP 的 GitHub Release 主页:https://github.com/fatedier/frp/releases

bash 复制代码
# 下载压缩包后,解压并复制客户端程序和配置文件
tar -zxvf frp_0.63.0_linux_amd64.tar.gz
cd frp_0.63.0_linux_amd64
sudo cp frpc /usr/local/bin/
sudo mkdir -p /etc/frp
sudo cp frpc.toml /etc/frp/

# 编辑客户端配置文件
sudo vim /etc/frp/frpc.toml

配置文件内容

bash 复制代码
serverAddr = "htl.yy.86.cn"
serverPort = 10190
auth.method = "token"
auth.token ="htl"

[[proxies]]
name = "ssh端口映射"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 5009

全局配置字段说明:

字段名 类型 说明 默认值 示例
serverAddr 字符串 frps 所在公网服务器的 IP / 域名(核心字段,必须正确) serverAddr = "1.2.3.4"
serverPort 整数 frps 监听的端口(需和 frps.toml 中 bindPort 一致) 7000 serverPort = 7000
auth.token 字符串 客户端与服务端的认证令牌(需和 frps.toml 中 auth.token 一致) auth.token = "12345678"
auth.method 字符串 认证方式,可选 token/oidc,常用 token "token" auth.method = "token"

代理配置字段说明:

字段名 类型 说明 示例
name 字符串 代理名称(唯一,自定义,用于标识该穿透规则) name = "ssh_proxy"
type 字符串 代理协议类型,常用:tcp/udp/http/https/tcpmux type = "tcp"
localIP 字符串 内网服务的 IP:本地服务填 127.0.0.1,局域网设备填内网 IP localIP = "192.168.1.100"
localPort 整数 内网服务的实际端口(如 SSH 22、Web 8080) localPort = 22
remotePort 整数 公网映射端口(外网通过 公网IP:remotePort 访问),需确保 frps 端口开放 remotePort = 6000

启动以及创建服务

bash 复制代码
# 测试启动(确认无报错,能连接到服务端)
frpc -c /etc/frp/frpc.toml

# 创建 systemd 服务
sudo vim /etc/systemd/system/frpc.service

服务配置文件内容

bash 复制代码
[Unit]
Description=FRP Client (frpc)
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动并设置开机自启

bash 复制代码
# 设置权限
chmod 777 /etc/systemd/system/frpc.service

# 重新加载
sudo systemctl daemon-reload

# 开机自启
sudo systemctl enable frpc

# 查看是否开机自启
sudo systemctl list-unit-files | grep frpc

# 启动
sudo systemctl start frpc

# 查看状态(确认 running)
sudo systemctl status frpc

启动成功后,即可通过公网IP以及转发的端口访问内网的目标服务(如 Web 服务、SSH 服务)。

相关推荐
HyperAI超神经1 小时前
在线教程丨 David Baker 团队开源 RFdiffusion3,实现全原子蛋白质设计的生成式突破
人工智能·深度学习·学习·机器学习·ai·cpu·gpu
li星野4 小时前
打工人日报#20251231
笔记
孙严Pay4 小时前
分享三种不同的支付体验,各自有着不同的特点与适用场景。
笔记·科技·计算机网络·其他·微信
YJlio5 小时前
VolumeID 学习笔记(13.10):卷序列号修改与资产标识管理实战
windows·笔记·学习
weixin_440730505 小时前
java数组整理笔记
java·开发语言·笔记
小龙5 小时前
【学习笔记】多标签交叉熵损失的原理
笔记·学习·多标签交叉熵损失
知识分享小能手5 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04的Linux网络配置(14)
linux·学习·ubuntu
皇族崛起6 小时前
【视觉多模态】- scannet 数据的 Ubuntu 百度网盘全速下载
linux·ubuntu·3d建模·dubbo
手揽回忆怎么睡6 小时前
Streamlit学习实战教程级,一个交互式的机器学习实验平台!
人工智能·学习·机器学习
xiaoxiaoxiaolll6 小时前
《Advanced Materials》基于MXene的复合纤维实现智能纺织品多模态功能集成
学习