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

相关推荐
tingshuo2917几秒前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
欧云服务器5 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
starlaky5 天前
Django入门笔记
笔记·django
勇气要爆发5 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
智渊AI5 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发5 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
别催小唐敲代码5 天前
嵌入式学习路线
学习
qianshanxue115 天前
计算机操作的一些笔记标题
笔记