【Frp】内网穿透详细配置教程,通俗易懂,小白也能五分钟搞定!
前言
有些哥们发布的特定服务可能需要占用大量CPU、内存或者硬盘空间,买高配的云服务器又不划算,所以部署在本地通过内网穿透发布出去,于是就有了这篇文章。
本文使用 FRP ,这个软件原生是需要配置conf文件的,比较麻烦,本文面向小白,所以采用 Frp-Panel 的方式。
力求小白看了也能直接配好,每行要执行的代码前面会标注执行原因。但是你如果连怎么连接云服务器都不清楚的话,你需要先搜一下怎么SSH连接云服务器。
不知道选择什么样的云服务器合适?可以参阅我的另一篇文章:VPS/云服务器的选择策略。
配置前提:
- 一台拥有公网IP的云服务器,最好是干净的,刚装完系统的,可以是NAT型云服务器,但是你得做好NAT设置。
- 如果有云服务器提供商开了默认的防火墙或者安全组,请把所有端口全部开放,我们在服务器内部做防火墙。
- 本地客户端能正常上网,本教程以正常家用宽带为例,有些校园网可能也能通,但要视情况而定。
云服务器的推荐配置:
- 系统:Ubuntu 22.0 版本以上/Debian 12.0 版本以上
- CPU:1核
- 内存:1G
本文以 Ubuntu 22.04 LTS 为例。
1:FRP 介绍
Frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
为什么选择 Frp?
通过在具有公网 IP 的节点上部署 Frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
- 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
- TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
- 代理组间的负载均衡。
- 端口复用:多个服务可以通过同一个服务端端口暴露。
- P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
- 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5代理等,以便满足各种需求。
- 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
- 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
2:服务器端配置
2.1:准备阶段
2.1.1:切换国内软件源
Ubantu/Debian的默认软件源很多是国外的,下载可能会中断或者速度很慢,所以切换软件源为国内清华源(如果你的VPS是海外线路,那么这块不执行也可以):
cat > /etc/apt/sources.list << EOF
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
EOF
修改软件源配置文件以后,我们更新一下软件包索引,否则白改了:
apt update
2.1.2:安装 Docker
我们使用 Docker 将 Frp 服务隔离出来,更安全也更简洁。
这是docker的安装命令,默认选第一个一直回车就行。
curl -sSL https://linuxmirrors.cn/docker.sh -o docker.sh && bash docker.sh
配置docker加速镜像,跟修改软件源一样,用来加速下载docker镜像。
tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.aster.edu.pl",
"https://docker.mirrors.imoyuapp.win"
]
}
EOF
应用docker配置。
systemctl daemon-reload
重启docker,使配置生效。
systemctl restart docker
2.2:创建 Frp-Panel 容器
2.2.1:创建 frp 文件夹并切换到 frp 目录
mkdir frp && cd frp
2.2.2:编辑 docker-compose.yml 文件(我习惯用 vim ,你也可以用 nano)
vim docker-compose.yml
将以下内容修改后粘贴到文本中(可使用快捷键:SHIFT + INSERT),需要修改的部分加了注释( # 之后的内容),注释放进去不影响 docker 容器的编译和运行。
services:
frpp-master:
image: vaalacat/frp-panel:latest
network_mode: host
environment:
APP_GLOBAL_SECRET: your_secret
MASTER_RPC_HOST: 1.2.3.4 # 修改为服务器的外部IP或域名
MASTER_RPC_PORT: 9001
MASTER_API_HOST: 1.2.3.4 # 修改为服务器的外部IP或域名
MASTER_API_PORT: 9000
MASTER_API_SCHEME: http
volumes:
- ./data:/data
restart: unless-stopped
command: master
保存文件:手动打出:wq,然后按回车键。
2.2.3:编译并运行 Docker 容器
docker compose up -d
2.3:配置阶段
2.3.1:访问 Frp-Panel 管理后台
- 打开浏览器,地址栏输入 云服务器的公网IP:9000。

如果访问不到,你需要检查云服务器的外部和内部防火墙是否打开了指定端口(9000 和 9001)。 - 点击注册按钮,用户名、邮箱和密码随便填写,但是自己要记住。
- 输入刚刚注册的用户名和密码,点击登录按钮。
2.3.2:配置服务端
- 点击左侧菜单中
服务端,然后点击第一条信息中最右侧的···,最后点击修改配置。

- 下图中所有红框标记的是必须要填的,你可以填写和我一样的,也可以自己修改。红框中打码的内容是云服务器的公网IP地址。

最后点击提交按钮。 - 刷新下页面,再次点击左侧
服务端菜单,看到配置状态变为 已配置 即可。
3:客户端端配置
3.1:创建客户端(云服务器)
3.1.1:访问 Frp-Panel 网页端。
如果你忘了怎么访问和登录,请点击这里。
3.1.2:配置客户端(云服务器)
- 点击左侧菜单
客户端,单击新建按钮,输入1,单击创建按钮。


- 点击刚刚创建的客户端信息最右侧的
···,然后单击修改配置。
...我的废话有点多了,后面简单说。
按下图红框部分从上到下去配置和点击。


注意:
-
隧道类型:如果转发网站服务,建议选择TCP。如果是游戏服务,建议选择UDP。其他类型如果你不懂的可以百度查一下。
-
本地端口:即客户端的被转发端口。
-
本地IP:填写
127.0.0.1表示客户端本机中的服务,也可以填写局域网IP(例如192.168.1.2),这样就会转发到局域网内其他客户端的服务。 -
远程端口:即服务器端的接收端口。
-
回到主页,点击左侧菜单
客户端,然后进行以下操作。 -
点击
xxxxxx.c.1。 -
勾选
使用 GitHub 代理。 -
在
GitHub 代理 URL右侧输入https://ghfast.top/。 -
复制
Windows或者Linux右侧文本框中的内容。(根据你的本地客户端的系统决定)

3.2:配置客户端(本地)
3.2.1:配置客户端(Windows)
- 管理员模式打开
PowerShell。 - 把 刚刚 最后复制的内容粘贴上去,然后回车。
- 等待执行结束,刷新管理页面,看到
客户端第一条信息的配置状态变为 已配置 即可。
3.2.2:配置客户端(Linux)
- 使用
root用户登录SSH。 - 把 刚刚 最后复制的内容粘贴上去,然后回车。
- 等待执行结束,刷新管理页面,看到
客户端第一条信息的配置状态变为 已配置 即可。
浙公网安备 33010602011771号