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

相关推荐
鹓于10 小时前
Notion AI,智能笔记
笔记·notion
27399202910 小时前
Ubuntu 文件系统修复指南
linux·ubuntu·fsck
光影少年10 小时前
平时如何学习新技术?
后端·学习·前端框架
一定要AK10 小时前
java基础
java·开发语言·笔记
i建模10 小时前
Ubuntu 中使用 LVM(逻辑卷管理)挂载磁盘
linux·运维·ubuntu
lizhihai_9910 小时前
股市学习心得-龙头持股法
学习
知识分享小能手11 小时前
MongoDB入门学习教程,从入门到精通,MongoDB事务知识点梳理(8)
数据库·学习·mongodb
xw-busy-code11 小时前
npm 包管理笔记整理
前端·笔记·npm
red_redemption11 小时前
自由学习记录(149)
学习
chushiyunen11 小时前
langgraph笔记
数据库·人工智能·笔记