这是一篇关于部署 frp(Fast Reverse Proxy)的完整教程。通过本教程,你可以轻松将家里的 NAS、本地测试服务器暴露到公网,实现随时随地访问。
阅读前必看:
- 请确认你拥有一台具备固定公网 IPv4 地址的云服务器。
- 教程命令中适时会加上
sudo,如果在实际部署过程中遇到permission denied(权限拒绝),说明权限不够,在命令前加上sudo即可。- 本教程以目前主流的
x86_64 (amd64)架构 Linux 为例。- Windows端部署方法后续补充。
第一阶段:云服务器端 (frps) 部署
1. 安装基础依赖包
首先我们需要安装接下来会用到的软件包,请根据你的 Linux 发行版选择对应的命令。
Debian / Ubuntu 系:
更新软件源:
sudo apt update |
安装必要软件包:
sudo apt install curl tar -y |
RHEL / Fedora / CentOS / Rocky 等红帽系:
更新软件源:
sudo dnf update |
安装必要软件包:
sudo dnf install curl tar -y |
2. 下载并解压 frp
我们需要根据服务器系统和架构下载对应的版本。个人电脑或大部分云服务器基本都是 amd64 (即 x86_64)。
找个目录存放文件,这里以 /home/你的用户名/Documents/ 目录为例(你也可以随意放在其他地方,只要记住路径即可)。
进入指定目录:
cd ~/Documents |
接下来下载 frp 压缩包。这里提供了官方下载地址,如果你所在的网络访问 GitHub 较慢,可以使用我提供的备用加速代理。
使用官方地址下载:
curl -O https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz |
或者使用加速代理下载:
curl -O https://proxy.kokode.su/github/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz |
对下载好的压缩包进行解压:
tar -zxvf frp_0.67.0_linux_amd64.tar.gz |
为了方便后续管理,我们把解压出来的文件夹重命名为 frps,并进入该目录:
重命名文件夹:
mv frp_0.67.0_linux_amd64 frps |
进入 frps 目录:
cd frps |
清理掉云服务器上不需要的客户端文件,保持目录整洁:
rm -rf frpc* |
使用 ls 命令确认是否只保留了服务端文件:
ls |
预期输出如下:
frps frps.toml LICENSE |
3. 配置 frps.toml
保险起见,我们先备份原有的默认配置,然后清空它并查看状态:
备份并清空配置:
cp frps.toml frps.toml.bak && echo -n > frps.toml && cat frps.toml |
注:如果配置文件已成功清空,终端中不会有任何输出(或者像原先一样显示为空)。
使用 vim 编辑配置文件:
vim frps.toml |
提示:按
i键进入 vim 的编辑模式,粘贴以下内容。你可以参考我使用的配置,请务必根据自身需求修改密码和 Token。
bindPort = 7000 |
粘贴并修改完毕后,按 Esc 键退出编辑模式,输入 :wq 回车即可保存配置并退出。
4. 设置 Systemd 开机自启
为了让 frps 能够在服务器重启后自动运行,我们需要将其注册为系统服务。
创建并编辑服务配置文件:
sudo vim /etc/systemd/system/frps.service |
绝对路径警告: Systemd 配置文件中不能使用
~表示用户目录!请务必将下面的/home/你的用户名/替换为你实际存放 frps 的绝对路径。
按 i 键进入编辑模式,粘贴以下内容:
[Unit] |
按 Esc 键退出编辑模式,输入 :wq 回车即可保存配置并退出。
重载 systemd 配置:
sudo systemctl daemon-reload |
设置开机自启并立即启动服务:
sudo systemctl enable --now frps.service |
常用服务管理命令补充:
查看运行状态是否正常:
sudo systemctl status frps.service |
停止服务:
sudo systemctl stop frps.service |
重启服务:
sudo systemctl restart frps.service |
取消开机自启:
sudo systemctl disable frps.service |
至此,云服务器端的配置全部完成!
第二阶段:本地客户端 (frpc) 部署
假设我们本地需要穿透的设备(服务器 / NAS)使用的也是 Linux。其实 frpc 客户端的部署方法和 frps 差不了太多,以下是具体步骤。
1. 下载并解压
基础依赖安装步骤同上。将文件下载并解压到你喜欢的目录(依旧以 /home/你的用户名/Documents/ 为例):
进入目录:
cd ~/Documents |
下载压缩包(此处使用代理地址为例):
curl -O https://proxy.kokode.su/github/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz |
解压文件:
tar -zxvf frp_0.67.0_linux_amd64.tar.gz |
这次我们把它重命名为 frpc,并进入目录:
重命名文件夹:
mv frp_0.67.0_linux_amd64 frpc |
进入 frpc 目录:
cd frpc |
删掉用不到的服务端文件:
rm -rf frps* |
使用 ls 命令确认是否只保留了客户端文件:
ls |
预期输出如下:
frpc frpc.toml LICENSE |
2. 配置 frpc.toml
保险起见,我们先备份并清空默认配置,确认清空状态:
备份并清空配置:
cp frpc.toml frpc.toml.bak && echo -n > frpc.toml && cat frpc.toml |
使用 vim 编辑配置文件:
vim frpc.toml |
按 i 键进入编辑模式,粘贴以下客户端配置参考。请仔细阅读注释,理解模块化配置的逻辑:
# --- 全局配置 --- |
粘贴并修改完毕后,按 Esc 键退出编辑模式,输入 :wq 回车即可保存配置并退出。
注:需要注意的是,新增配置只需要新增如下配置块
[[proxies]] |
避坑指南:
- 新增配置时,
name绝对不能重复。- 配置里的
remotePort(如 2222, 5678, 6789 等),必须去你的云服务商控制台(阿里云/腾讯云等)的防火墙/安全组中放行相应的端口,否则即使启动成功也连不上!
每次修改配置后,务必执行命令重启客户端服务才能生效:
sudo systemctl restart frpc.service |
3. 设置 Systemd 开机自启
同样地,我们把它注册为系统服务:
创建并编辑服务配置文件:
sudo vim /etc/systemd/system/frpc.service |
再次提醒: 请将下方所有的
/home/你的用户名/替换为实际的绝对路径。
按 i 键进入编辑模式,粘贴以下内容:
[Unit] |
(注:如果启动遇到权限问题,可将 DynamicUser=yes 注释掉,并替换为 User=你的用户名)
按 Esc 键退出编辑模式,输入 :wq 回车即可保存配置并退出。
重载 systemd 配置:
sudo systemctl daemon-reload |
设置开机自启并立即启动服务:
sudo systemctl enable --now frpc.service |
确认客户端是否正常运行:
sudo systemctl status frpc.service |
如果看到 active (running) 字样,说明内网穿透已经部署成功!现在你可以通过公网 IP 测试连接你的本地服务了。
关于本文
由 青空由依(AozoraYui)/青空由纪(AozoraYuki)/青空葵(AozoraAoi) 撰写,采用 CC BY-NC 4.0 许可协议。