Skip to content

Latest commit

 

History

History
198 lines (128 loc) · 8.43 KB

README.ja_JP.md

File metadata and controls

198 lines (128 loc) · 8.43 KB

minimum rustc: 1.83 License: Apache 2.0 codecov

G3プロジェクト

中文版 README | English README

概要

これは、エンタープライズ向けの汎用プロキシソリューションを構築するために使用されるプロジェクトです。 プロキシ / リバースプロキシ(作業中) / ロードバランサー(未定) / NATトラバーサル(未定)などを含むがこれらに限定されません。

コンポーネント

G3 プロジェクトには多くのコンポーネントが含まれており、各コンポーネントには独自のコード、ドキュメントなどが含まれる個別のサブディレクトリがあります。

コンポーネント ディレクトリに加えて、いくつかのパブリック ディレクトリもあります。

  • doc プロジェクトレベルのドキュメントが含まれます。
  • sphinx は、各コンポーネントの HTML リファレンス ドキュメントを生成するために使用されます。
  • scripts には、カバレッジ テスト、パッケージ化スクリ

g3proxy

汎用のフォワードプロキシソリューションですが、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 でオンラインで参照できます。 詳細な設定形式、ログ形式、メトリクスの定義、メトリクスの定義などを含みます。

g3tiles

作業中のリバースプロキシソリューション。

Sphinx を使用して生成された g3tiles リファレンス ドキュメントは、Read the Docs でオンラインで参照できます。 詳細な設定形式、ログ形式、メトリクスの定義などを含みます。

g3bench

HTTP 1.x、HTTP 2、HTTP 3、TLSハンドシェイク、DNS、Cloudflare Keylessをサポートするベンチマークツール。

詳細な紹介については、g3bench を参照してください。

g3mkcert

ルートCA / 中間CA / TLSサーバー / TLSクライアント証明書を作成するツール。

g3fcgen

g3proxyのための偽の証明書ジェネレーター。

g3iploc

g3proxyのGeoIPサポートのためのIPロケーションルックアップサービス。

g3keymess

Cloudflare keylessサーバーの簡単な実装。

対応プラットフォーム

現在、完全にサポートされているのはLinuxのみです。コードはFreeBSD、NetBSD、macOS、Windowsでコンパイルされますが、そこでのテストは行っていません。

他のプラットフォームのサポートを追加するためのPRを歓迎します。

開発環境のセットアップガイド

Dev-Setup に従ってください。

標準

Standards に従ってください。

リリースとパッケージング

各コンポーネントの各リリースには <name>-v<version> の形式でタグが設定されます。 これらのタグを使用してソースtarballを生成できます。 また、配布準備が整った各コンポーネントにはdebおよびrpmパッケージファイルが追加されています。

リリースビルドを行う場合:

  1. リリースtarballを生成する

    # <name>-v<version> のタグがある場合
    ./scripts/release/build_tarball.sh <name>-v<version>
    # 使用可能なタグがない場合、gitリビジョン(例: HEAD)を指定する必要があります
    ./scripts/release/build_tarball.sh <name> <rev>

    すべてのベンダーソースはソースtarballに追加されるため、ソースtarballを保存し、コンパイラと依存関係がインストールされている任意の場所でオフラインでビルドできます。

  2. パッケージをビルドする

    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イメージのビルド

各コンポーネントの 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バリアントでのビルド

OpenSSL Variants を参照してください。

LTSバージョン

Long-Term Support を参照してください。

貢献

詳細については Contributing を参照してください。

行動規範

詳細については Code of Conduct を参照してください。

セキュリティ

このプロジェクトで潜在的なセキュリティ問題を発見した場合、またはセキュリティ問題を発見したと思われる場合は、 セキュリティセンター または 脆弱性報告メール を通じてBytedance Securityに通知してください。

公開のGitHub issueを作成しないでください。

ライセンス

このプロジェクトは Apache-2.0 License の下でライセンスされています。