これは、エンタープライズ向けの汎用プロキシソリューションを構築するために使用されるプロジェクトです。 プロキシ / リバースプロキシ(作業中) / ロードバランサー(未定) / NATトラバーサル(未定)などを含むがこれらに限定されません。
G3 プロジェクトには多くのコンポーネントが含まれており、各コンポーネントには独自のコード、ドキュメントなどが含まれる個別のサブディレクトリがあります。
コンポーネント ディレクトリに加えて、いくつかのパブリック ディレクトリもあります。
- doc プロジェクトレベルのドキュメントが含まれます。
- sphinx は、各コンポーネントの HTML リファレンス ドキュメントを生成するために使用されます。
- scripts には、カバレッジ テスト、パッケージ化スクリ
汎用のフォワードプロキシソリューションですが、TCPストリーミング / トランスペアレントプロキシ / リバースプロキシとしても使用できます。 基本的なサポートが組み込まれています。
- 非同期Rust: 高速で信頼性が高い
- Http1 / Socks5フォワードプロキシプロトコル、SNIプロキシおよびTCP TPROXY
- プロキシチェイニング、上流プロキシの動的選択をサポート
- 多くの出口ルート選択方法、カスタム出口選択エージェントをサポート
- TCP/TLSストリームプロキシ、基本的なHTTPリバースプロキシ
- OpenSSL、BoringSSL、AWS-LC、Tongsuo、さらにはrustlsを使用したTLS
- TLS MITMインターセプション、復号化されたトラフィックダンプ、HTTP1/HTTP2/IMAP/SMTPインターセプション
- HTTP1/HTTP2/IMAP/SMTPのICAP適応、サードパーティのセキュリティ製品とシームレスに統合可能
- 優雅なリロード
- カスタマイズ可能なロードバランシングおよびフェイルオーバー戦略
- ユーザー認証、豊富な設定オプション
- 各ユーザーに対して差別化されたサイト設定を行うことが可能
- 豊富なACL/制限ルール、入口/出口/ユーザーレベルで
- 豊富な監視メトリクス、入口/出口/ユーザー/ユーザーサイトレベルで
- さまざまな観測ツールをサポート
詳しい機能紹介とユーザーガイドはg3proxyをご覧ください。
Sphinx を使用して生成された g3proxy リファレンス ドキュメントは、Read the Docs でオンラインで参照できます。 詳細な設定形式、ログ形式、メトリクスの定義、メトリクスの定義などを含みます。
作業中のリバースプロキシソリューション。
Sphinx を使用して生成された g3tiles リファレンス ドキュメントは、Read the Docs でオンラインで参照できます。 詳細な設定形式、ログ形式、メトリクスの定義などを含みます。
HTTP 1.x、HTTP 2、HTTP 3、TLSハンドシェイク、DNS、Cloudflare Keylessをサポートするベンチマークツール。
詳細な紹介については、g3bench を参照してください。
ルートCA / 中間CA / TLSサーバー / TLSクライアント証明書を作成するツール。
g3proxyのための偽の証明書ジェネレーター。
g3proxyのGeoIPサポートのためのIPロケーションルックアップサービス。
Cloudflare keylessサーバーの簡単な実装。
現在、完全にサポートされているのはLinuxのみです。コードはFreeBSD、NetBSD、macOS、Windowsでコンパイルされますが、そこでのテストは行っていません。
他のプラットフォームのサポートを追加するためのPRを歓迎します。
Dev-Setup に従ってください。
Standards に従ってください。
各コンポーネントの各リリースには <name>-v<version> の形式でタグが設定されます。 これらのタグを使用してソースtarballを生成できます。 また、配布準備が整った各コンポーネントにはdebおよびrpmパッケージファイルが追加されています。
リリースビルドを行う場合:
-
リリースtarballを生成する
# <name>-v<version> のタグがある場合 ./scripts/release/build_tarball.sh <name>-v<version> # 使用可能なタグがない場合、gitリビジョン(例: HEAD)を指定する必要があります ./scripts/release/build_tarball.sh <name> <rev>
すべてのベンダーソースはソースtarballに追加されるため、ソースtarballを保存し、コンパイラと依存関係がインストールされている任意の場所でオフラインでビルドできます。
-
パッケージをビルドする
debパッケージの場合:
tar xf <name>-<version>.tar.xz cd <name>-<version> ./build_deb_from_tar.sh
rpmパッケージの場合:
rpmbuild -ta ./<name>-<version>.tar.xz # 失敗した場合、次のコマンドを手動で実行できます: tar xvf <name>-<version>.tar.xz ./<name>-<version>/<name>.spec cp <name>-<version>.tar.xz ~/rpmbuild/SOURCES/ rpmbuild -ba ./<name>-<version>/<name>.spec
gitリポジトリから直接パッケージをビルドする場合:
-
debパッケージの場合:
./build_deb_from_git.sh <name>
-
rpmパッケージの場合:
./build_rpm_from_git.sh <name>
本番環境にインストールする場合は、自分でパッケージをビルドすることをお勧めします。
テスト目的の場合、いくつかのパッケージをビルドして cloudsmith にアップロードしました。インストール手順はそこにあります。
各コンポーネントの docker フォルダーの下にDockerfile(s)があります。ビルドコマンドは次のようになります
# ソースルートディレクトリで実行します
docker build -f <component>/docker/debian.Dockerfile . -t <component>:<tag>
# ソースコードなしでビルドします
docker build -f <component>/docker/debian.Dockerfile github.com/bytedance/g3 -t <component>:<tag>
# ソースtarballがある場合、そのtarballのURLも使用できます
Static Linking を参照してください。
OpenSSL Variants を参照してください。
Long-Term Support を参照してください。
詳細については Contributing を参照してください。
詳細については Code of Conduct を参照してください。
このプロジェクトで潜在的なセキュリティ問題を発見した場合、またはセキュリティ問題を発見したと思われる場合は、 セキュリティセンター または 脆弱性報告メール を通じてBytedance Securityに通知してください。
公開のGitHub issueを作成しないでください。
このプロジェクトは Apache-2.0 License の下でライセンスされています。