Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
frp — NATやファイアウォールの背後にあるローカルサーバーをインターネットに公開するための高速リバースプロキシ。 | Kitploit
ツール/GitHubGitHub/fatedier/frp
ネットワークセキュリティペネトレーションテストユーティリティとフレームワークレッドチーミング
GitHubfatedier/frp

frp

NATやファイアウォールの背後にあるローカルサーバーをインターネットに公開するための高速リバースプロキシ。

リポジトリを見る
108.2k15.1k17210時間59分前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

frp

Build Status GitHub release GitHub Releases Stats

README | 中文文档

赞助商

frp 是一个开源项目,其持续开发完全由我们出色的赞助商的支持所推动。如果您想加入他们,请考虑赞助 frp 的开发。

金牌赞助商


为专业 Go 开发者打造的完整 IDE


让您掌控一切的自主云
一个开源、自托管的公有云替代方案,专为数据所有权和隐私而构建

Recall.ai - 会议录制 API

如果您正在寻找会议录制 API,请考虑查看 Recall.ai,

这是一个可录制 Zoom、Google Meet、Microsoft Teams、线下会议等的 API。

frp 是什么?

frp 是一个快速反向代理,允许您将位于 NAT 或防火墙后面的本地服务器暴露到互联网。它目前支持 TCP 和 UDP,以及 HTTP 和 HTTPS 协议,使请求能够通过域名转发到内部服务。

frp 还提供 P2P 连接模式。

目录

  • 开发状态
    • 关于 V2
  • 架构
  • 使用示例
    • 通过 SSH 访问局域网中的计算机
    • 多个 SSH 服务共享同一端口
    • 在局域网中使用自定义域名访问内部 Web 服务
    • 转发 DNS 查询请求
    • 转发 Unix 域套接字
    • 暴露一个简单的 HTTP 文件服务器
    • 为本地 HTTP(S) 服务启用 HTTPS
    • 私密地暴露您的服务
    • P2P 模式
  • 功能
    • 配置文件
    • 使用环境变量
    • 将配置拆分为不同文件
    • 服务器仪表盘
    • 客户端管理界面
      • 动态代理管理(存储)
    • 监控
      • Prometheus
    • 客户端认证
      • 令牌认证
      • OIDC 认证
    • 加密与压缩
      • TLS
    • 热重载 frpc 配置
    • 从客户端获取代理状态
    • 在服务器上仅允许特定端口
    • 端口复用
    • 带宽限制
      • 针对每个代理
    • TCP 流多路复用
    • 支持 KCP 协议
    • 支持 QUIC 协议
    • 连接池
    • 负载均衡
    • 服务健康检查
    • 重写 HTTP Host 头
    • 设置其他 HTTP 头
    • 获取真实 IP
      • HTTP X-Forwarded-For
      • 代理协议
    • 为 Web 服务要求 HTTP 基本认证(密码)
    • 自定义子域名
    • URL 路由
    • TCP 端口多路复用
    • 通过 PROXY 连接到 frps
    • 端口范围映射
    • 客户端插件
    • 服务器管理插件
    • SSH 隧道网关
    • 虚拟网络(VirtualNet)
  • 功能开关
    • 可用的功能开关
    • 启用功能开关
    • 功能生命周期
  • 相关项目
  • 贡献
  • 捐赠
    • GitHub 赞助
    • PayPal

开发状态

frp 目前正在开发中。您可以在 master 分支中尝试最新的发布版本,或使用 dev 分支访问当前正在开发的版本。

我们目前正在开发版本 2,并尝试进行一些代码重构和改进。但请注意,它将与版本 1 不兼容。

我们将在适当的时候从版本 0 过渡到版本 1,并且只会接受错误修复和改进,而不是大型功能请求。

关于 V2

v2 版本的复杂性和难度远超预期。我只能利用零散的时间进行开发,而不断的干扰严重影响了工作效率。鉴于这种情况,我们将继续对当前版本进行优化和迭代,直到我们有更多空闲时间来进行大版本重构。

v2 的概念基于我在云原生领域(尤其是 K8s 和 ServiceMesh)多年的经验和思考。其核心是一个现代化的四层和七层代理,类似于 envoy。这个代理本身具有高度可扩展性,不仅能够实现内网穿透的功能,还可以应用于其他各种领域。在这个高度可扩展的核心之上,我们旨在实现 frp v1 的所有功能,同时解决以前无法实现或难以优雅实现的功能。此外,我们将保持高效的开发和迭代能力。

此外,我设想 frp 本身成为一个高度可扩展的系统和平台,类似于我们可以基于 K8s 提供一系列扩展能力。在 K8s 中,我们可以根据企业需求进行定制开发,利用 CRD、控制器模式、webhook、CSI 和 CNI 等功能。在 frp v1 中,我们引入了服务器插件的概念,实现了一些基本的可扩展性。然而,它依赖于简单的 HTTP 协议,并且需要用户自行启动独立进程并自行管理。这种方法远不够灵活和方便,而现实世界的需求差异很大。期望一个由少数人维护的非营利开源项目能满足所有人的需求是不现实的。

最后,我们承认配置管理、权限验证、证书管理和 API 管理等模块的当前设计不够现代化。虽然我们可能会在 v1 版本中进行一些优化,但确保兼容性仍然是一个具有挑战性的问题,需要投入大量精力来解决。

我们衷心感谢您对 frp 的支持。

架构

architecture

使用示例

首先,从 Release 页面下载适用于您操作系统和架构的最新程序。

接下来,将 frps 二进制文件和服务器配置文件放在具有公网 IP 的服务器 A 上。

最后,将 frpc 二进制文件和客户端配置文件放在位于无法从公网直接访问的局域网中的服务器 B 上。

某些杀毒软件会错误地将 frpc 标记为恶意软件并将其删除。这是因为 frp 是一种能够创建反向代理的网络工具。杀毒软件有时会标记反向代理,因为它们能够绕过防火墙的端口限制。如果您使用杀毒软件,则可能需要在杀毒软件设置中将 frpc 加入白名单/排除项,以避免被误隔离/删除。有关更多详细信息,请参阅 issue 3637。

通过 SSH 访问局域网中的计算机

  1. 在服务器 A 上修改 frps.toml,设置 frp 客户端连接的 bindPort: ```toml

frps.toml

bindPort = 7000

2. サーバーAで`frps`を起動します:

`./frps -c ./frps.toml`

3. サーバーBの`frpc.toml`を変更し、`serverAddr`フィールドをfrpsサーバーのパブリックIPアドレスに設定します:  ```toml
# frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

localPort(客户端监听的端口)和 remotePort(服务器上暴露的端口)用于 frp 系统内外的流量,而 serverPort 用于 frps 与 frpc 之间的通信。

  1. 在服务器 B 上启动 frpc:

./frpc -c ./frpc.toml

  1. 要从另一台机器通过服务器 A 使用 SSH 访问服务器 B(假设用户名为 test),请使用以下命令:

ssh -oPort=6000 [email protected]

多个 SSH 服务共享同一端口

此示例通过类型为 tcpmux 的代理,在同一个端口上暴露多个 SSH 服务。同样,只要客户端支持 HTTP Connect 代理连接方式,就可以通过这种方式实现端口复用。

  1. 在具有公网 IP 的机器上部署 frps,并修改 frps.toml 文件。以下是一个简化的配置: ```toml bindPort = 7000 tcpmuxHTTPConnectPort = 5002
2. 内部マシンAに以下の設定でfrpcをデプロイします:  ```toml
serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh1"
type = "tcpmux"
multiplexer = "httpconnect"
customDomains = ["machine-a.example.com"]
localIP = "127.0.0.1"
localPort = 22
  1. 内部マシンBに以下の設定で別のfrpcをデプロイします: ```toml serverAddr = "x.x.x.x" serverPort = 7000

[[proxies]] name = "ssh2" type = "tcpmux" multiplexer = "httpconnect" customDomains = ["machine-b.example.com"] localIP = "127.0.0.1" localPort = 22

4. SSH ProxyCommandを使用して内部マシンAにアクセスする場合、ユーザー名が「test」であると仮定します:

`ssh -o 'proxycommand socat - PROXY:x.x.x.x:%h:%p,proxyport=5002' [email protected]`

5. 内部マシンBにアクセスする場合、違いはドメイン名のみで、ユーザー名が「test」であると仮定します:

`ssh -o 'proxycommand socat - PROXY:x.x.x.x:%h:%p,proxyport=5002' [email protected]`

### LAN内のカスタムドメインを使用した内部Webサービスへのアクセス

NATネットワークの背後にあるローカルWebサービスを、独自のドメイン名を使用してテスト目的で他の人に公開する必要がある場合があります。

残念ながら、ドメイン名をローカルIPに解決することはできません。ただし、frpを使用してHTTP(S)サービスを公開することができます。

1. `frps.toml`を変更し、vhostのHTTPポートを8080に設定します:  ```toml
# frps.toml
bindPort = 7000
vhostHTTPPort = 8080

vhostHTTPSPortを設定する必要があります。

  1. frpsを起動します:

./frps -c ./frps.toml

ツールをダウンロード