Skip to content

Latest commit

 

History

History
186 lines (119 loc) · 7.54 KB

README.ja_JP.md

File metadata and controls

186 lines (119 loc) · 7.54 KB

minimum rustc: 1.80 License: Apache 2.0 codecov

G3プロジェクト

中文版 README | English README

概要

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

コンポーネント

G3プロジェクトは多くのコンポーネントで構成されています。

プロジェクトレベルのドキュメントは doc サブディレクトリにあり、重要なものについては以下のリンクを参照してください。 各コンポーネントには、それぞれの doc サブディレクトリに独自のドキュメントがあります。

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 を参照してください。

g3tiles

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

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 の下でライセンスされています。