学习笔记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 服务)。

相关推荐
FakeOccupational23 分钟前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频
迪康coolmu27 分钟前
企业U盘管控落地实战:基于迪康端点安全一体化管理系统的移动存储安全实践
运维·人工智能·经验分享·笔记·安全·电脑
Z21-X3 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla11 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞12 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
无心水16 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd16 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Zhao-Jichao19 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李19 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga21 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统