このプロジェクトについて

frpは、NATやファイアウォールの背後に位置するローカルサーバーをインターネットに公開するために設計された高速なリバースプロキシである。プロジェクトは2つのコンポーネントで構成される:公開IPを持つマシンにデプロイされる`frps`(サーバー)と、内部マシンにデプロイされる`frpc`(クライアント)。 対応プロトコルにはTCP、UDP、HTTP、HTTPSが含まれ、frpはカスタムドメイン名を介して内部サービスへのリクエスト転送が可能であり、さらにクライアント間の直接データ送信のためのP2P接続モード(`xtcp`)も提供する。 主な機能: - **プロトコル対応**:TCP、UDP、HTTP、HTTPS、P2P(xtcp) - **設定形式**:TOML、YAML、JSON(INIはv0.52.0以降非推奨) - **認証**:トークンベースおよびOIDC(Client Credentials Grant) - **暗号化**:クライアント-サーバー通信のTLS対応 - **サーバーダッシュボード**:プロキシ統計とステータスを表示する設定可能なポートのWebインターフェース - **クライアントAdmin UI**:frpcの設定とプロキシをランタイムで確認・管理するためのWebインターフェース - **動的プロキシ管理**:Store機能によりfrpcを再起動せずにプロキシの作成・更新・削除が可能 - **マルチプレクシング**:TCPストリームマルチプレクシングおよびTCPポートマルチプレクシング - **トランスポートプロトコル**:KCPおよびQUICプロトコルに対応 - **コネクションプール** - **ロードバランシングとヘルスチェック** - **プロキシごとの帯域幅制限** - **HTTP機能**:Hostヘッダー書き換え、カスタムヘッダー、URLルーティング、Basic Auth、リアルIP取得(X-Forwarded-For、Proxy Protocol) - **ポート再利用** - **frpc設定のホットリロード** - **クライアントプラグイン**:unix_domain_socket、static_file、https2httpなど - **SSHトンネルゲートウェイ** - **仮想ネットワーク(VirtualNet)** - **設定テンプレートでの環境変数サポート** - **includesによる複数ファイルへの設定分割** - **Prometheusモニタリングエンドポイント** 一般的なユースケースとしては、SSH経由でLAN内のコンピュータへアクセス、カスタムドメインで内部Webサービスを公開、DNSクエリの転送、Unixドメインソケット(例:Docker)の公開、tcpmux/HTTP Connectによる同一ポートでの複数サービス共有、事前共有キーを用いたSTCP(Secret TCP)モードでのプライベートサービス公開などがある。 本プロジェクトはGoで積極的に保守されており、クラウドネイティブおよびServiceMeshのコンセプトに基づくv2の開発が進められているが、v2はv1とは互換性がない。 ウェブサイト:https://github.com/fatedier/frp