【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 管理后台
  1. 打开浏览器,地址栏输入 云服务器的公网IP:9000。
    2025-06-22T15:33:13.png
    如果访问不到,你需要检查云服务器的外部和内部防火墙是否打开了指定端口(9000 和 9001)
  2. 点击注册按钮,用户名、邮箱和密码随便填写,但是自己要记住。
  3. 输入刚刚注册的用户名和密码,点击登录按钮。

2.3.2:配置服务端
  1. 点击左侧菜单中 服务端 ,然后点击第一条信息中最右侧的 ··· ,最后点击 修改配置
    2025-06-22T15:44:00.png
  2. 下图中所有红框标记的是必须要填的,你可以填写和我一样的,也可以自己修改。红框中打码的内容是云服务器的公网IP地址。
    2025-06-22T15:51:08.png
    最后点击提交按钮。
  3. 刷新下页面,再次点击左侧 服务端 菜单,看到 配置状态 变为 已配置 即可。

3:客户端端配置

3.1:创建客户端(云服务器)

3.1.1:访问 Frp-Panel 网页端。

如果你忘了怎么访问和登录,请点击这里


3.1.2:配置客户端(云服务器)
  • 点击左侧菜单 客户端 ,单击 新建 按钮,输入 1,单击 创建 按钮。
    2025-06-22T16:24:01.png
    2025-06-22T16:30:31.png
  • 点击刚刚创建的客户端信息最右侧的 ··· ,然后单击 修改配置
    ...我的废话有点多了,后面简单说。
    按下图红框部分从上到下去配置和点击。
    2025-06-22T16:36:07.png
    2025-06-22T16:40:23.png

注意:

  • 隧道类型:如果转发网站服务,建议选择TCP。如果是游戏服务,建议选择UDP。其他类型如果你不懂的可以百度查一下。

  • 本地端口:即客户端的被转发端口。

  • 本地IP:填写 127.0.0.1 表示客户端本机中的服务,也可以填写局域网IP(例如 192.168.1.2 ),这样就会转发到局域网内其他客户端的服务。

  • 远程端口:即服务器端的接收端口。

  • 回到主页,点击左侧菜单 客户端,然后进行以下操作。

  • 点击 xxxxxx.c.1

  • 勾选 使用 GitHub 代理

  • GitHub 代理 URL 右侧输入 https://ghfast.top/

  • 复制 Windows 或者 Linux 右侧文本框中的内容。(根据你的本地客户端的系统决定)
    2025-06-23T17:32:27.png


3.2:配置客户端(本地)

3.2.1:配置客户端(Windows)
  • 管理员模式打开 PowerShell
  • 刚刚 最后复制的内容粘贴上去,然后回车。
  • 等待执行结束,刷新管理页面,看到 客户端 第一条信息的 配置状态 变为 已配置 即可。

3.2.2:配置客户端(Linux)
  • 使用 root 用户登录SSH。
  • 刚刚 最后复制的内容粘贴上去,然后回车。
  • 等待执行结束,刷新管理页面,看到 客户端 第一条信息的 配置状态 变为 已配置 即可。

posted on 2025-06-23 18:01  小铁Winner  阅读(1731)  评论(0)    收藏  举报