跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

基于 Docker 部署 FRP 实现内网穿透及配置详解

通过 Docker 部署 FRP 服务端与客户端,实现内网穿透功能。涵盖基础 TCP 映射、HTTP 域名解析、SSH 远程连接及数据库穿透场景。配置管理面板访问与安全令牌验证,介绍 STCP 和 XTCP 模式下的点对点安全连接方案。适用于开发调试、远程运维等需要暴露内网服务的场景。

小熊软糖发布于 2025/2/4更新于 2026/10/24121 浏览
基于 Docker 部署 FRP 实现内网穿透及配置详解

环境准备

FRP(Fast Reverse Proxy)是一个专注于高性能的内网穿透工具。服务端推荐使用 Linux 环境,通过 Docker 容器化部署可以简化维护;客户端则根据操作系统选择对应版本,本文以 Windows 为例。

服务端部署

我们需要一台拥有公网 IP 的服务器(CentOS 7 及以上),利用 Docker 运行 frps 镜像。

创建目录与配置文件

在服务器上执行以下命令创建目录并进入:

mkdir -p /home/soft/frp && cd /home/soft/frp

接着创建服务端配置文件 frps.ini:

[common]
bind_port = 7000

编写启动脚本

为了便于管理,我们创建一个 Shell 脚本 docker-start.sh:

#!/bin/bash
docker run -d \
  --restart always \
  --network host \
  --name frps \
  -v /home/soft/frp/frps.ini:/etc/frp/frps.ini \
  snowdreamtech/frps

赋予执行权限并启动服务:

chmod +x docker-start.sh
sh docker-start.sh

此时服务端已就绪,监听 7000 端口。

客户端配置

Windows 用户需下载对应版本的 frpc 客户端并解压。修改 frpc.ini 文件,指向服务端地址。

基础 TCP 映射示例

假设需要远程访问本地 Windows 的桌面(3389 端口):

[common]
server_addr = <服务器公网 IP>
server_port = 7000

[mstsc]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 13389

保存后,在客户端目录下运行:

frpc.exe -c frpc.ini

连接成功后,通过 公网 IP:13389 即可访问内网机器。

管理面板与安全

开启 Dashboard

为了方便监控,可以在服务端配置中添加管理面板信息:

[common]
bind_port = 7000
dashboard_addr = 0.0.0.0
dashboard_port = 7777
dashboard_user = terry
dashboard_pwd = terry123

重启服务端后,浏览器访问 http://<公网 IP>:7777 即可查看状态。

配置密钥验证

生产环境建议启用 Token 认证,防止未授权连接。服务端与客户端必须保持一致:

服务端 (frps.ini)

[common]
auto_token = your_secure_token

客户端 (frpc.ini)

[common]
server_addr = <服务器公网 IP>
server_port = 7000
auto_token = your_secure_token

常见应用场景

TCP 服务穿透

除了远程桌面,TCP 模式适用于 SSH、数据库等任意 TCP 协议服务。

  • SSH 远程:将本地 22 端口映射到服务端 122 端口。
  • MySQL 穿透:将本地 3306 端口映射到服务端 13306 端口。
  • Web 服务:将本地 8080 映射到服务端 8086。

注意:确保服务端防火墙放行了对应的 remote_port。

HTTP 域名映射

HTTP 模式支持自定义域名,适合 Web 应用发布。服务端需配置 vhost_http_port。

服务端配置

[common]
bind_port = 7000
vhost_http_port = 81

客户端配置

[web01]
type = http
local_port = 8080
custom_domains = web01.example.com

访问 http://web01.example.com:81 即可到达内网 Web 服务。

STCP 与 XTCP 模式

当两个设备都在内网时,STCP(Secret TCP)和 XTCP 模式更安全,无需暴露端口给公网。

  • STCP:双方都需要安装 frpc,通过 Secret Key 建立加密隧道。
  • XTCP:类似 P2P 直连,速度更快,但依赖 NAT 类型。

这两种模式下,被访问者(Server)和访问者(Visitor)均需配置相同的 sk 密钥,且访问者端需指定 role = visitor 和 server_name。

注意事项

  1. 端口冲突:确保 remote_port 未被服务端其他服务占用。
  2. 网络安全:不要随意开放高危端口,建议配合 Nginx 反向代理或限制 IP 访问。
  3. Token 安全:默认配置中的 Token 和账号密码务必修改为强密码。
  4. 日志排查:遇到连接失败时,检查服务端 frps.log 和客户端 frpc.log 输出。

目录

  1. 环境准备
  2. 服务端部署
  3. 创建目录与配置文件
  4. 编写启动脚本
  5. 客户端配置
  6. 基础 TCP 映射示例
  7. 管理面板与安全
  8. 开启 Dashboard
  9. 配置密钥验证
  10. 常见应用场景
  11. TCP 服务穿透
  12. HTTP 域名映射
  13. STCP 与 XTCP 模式
  14. 注意事项

更多推荐文章

查看全部
  • 基于 Vue3 和 Python 的大学生租房报修系统设计
  • 2025 AI 问道之旅:个人成长与深度学习理解
  • Python+AI 零基础入门指南:从语法到实操的完整路径
  • 《Agent Runtime 工程化》第十二章 二开毕业项目:导读
  • 一个完整的车辆监控管理系统,包含后端API、Web管理后台和移动端应用
  • Redis List 在现代 C++ 中的 redis-plus-plus 实践
  • Java 核心:hashCode 与 equals 的正确姿势
  • Flutter 三方库 webdriver 在鸿蒙系统的适配与使用指南
  • C++物理引擎碰撞检测实战指南
  • NAO 机器人运动控制与指令操作指南
  • Linux 系统 MySQL 8.0 安装与配置详解
  • Windows Python 安装与配置教程
  • Python 稳居 TIOBE 排行榜榜首:核心特性与应用场景详解
  • 李彦宏:大模型将改变世界 未来至少一半人要学会提问
  • Pi0 机器人大模型昇腾 A2 平台部署与性能测评
  • 程序员核心竞争力构建与 Android Framework 源码解析
  • 使用闲置Mac Mini部署OpenClaw打造金融AI分析助手
  • 渐进式 AIGC 系统架构与功能特性:支持多模态大模型与 Agent 智能体
  • Figma + Claude + Weavy AI:从会用到好用的设计工作流
  • 2025 无人机四大顶会 IROS ICRA RSS CoRL 精选 16 篇论文

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online