Skip to content

Latest commit

 

History

History
187 lines (117 loc) · 5.46 KB

README.zh_CN.md

File metadata and controls

187 lines (117 loc) · 5.46 KB

minimum rustc: 1.80 License: Apache 2.0

G3 Project

English README | 日本語 README

关于

本项目用于构建面向企业的通用代理解决方案,包括但不限于代理、反向代理(开发中)、负载均衡(待定)、NAT穿透(待定)等。

组件

G3 Project 由若干组件构成。

项目级的文档放在 doc 子目录下,下文会列出一下比较重要的文档。 每个组件都有各自的文档,放在各自目录的 doc 子目录下。

g3proxy

通用正向代理解决方案,同时带有TCP映射、TLS卸载/封装、透明代理、简单反向代理等功能。

主要特性

  • Async Rust: 高效、稳定
  • Http1 / Socks5 正向代理协议, SNI Proxy and TCP TPROXY
  • 代理串联,动态下一级代理节点选择
  • 丰富的出口路由选择方法,支持接入自定义选路Agent
  • TCP/TLS反向代理,基础HTTP反向代理
  • TLS支持OpenSSL / BoringSSL / AWS-LC / Tongsuo, 部分场景支持rustls
  • TLS中间人劫持, 解密流量导出, HTTP1/HTTP2/IMAP/SMTP协议解析
  • ICAP审计,支持HTTP1/HTTP2/IMAP/SMTP,无缝集成第三方安全审计/杀毒产品
  • 优雅重载 & 热升级
  • 灵活的负载均衡&容灾策略
  • 用户认证,且支持丰富的配置选项
  • 用户配置下可细化进行差异化站点配置
  • 丰富的ACL/限流限速策略,包括入口/出口/用户维度
  • 丰富的监控指标,包括入口/出口/用户/用户站点维度
  • 多种日志 & 监控解决方案集成能力

更多详情参考 g3proxy

g3tiles

通用反向代理解决方案,开发中。

g3bench

压测工具,支持 HTTP/1.x、HTTP/2、HTTP/3、TLS握手、DNS、Cloudflare Keyless 。

更多详情参考 g3bench

g3mkcert

用来生成 根CA / 中间CA / TLS服务端证书 / TLS客户端证书 的工具。

g3fcgen

适用于g3proxy TLS劫持功能的的伪造证书生成服务组件。

g3iploc

适用于g3proxy GeoIP功能的IP Location查找服务组件。

g3keymess

Cloudflare Keyless Server的简单实现。

支持平台

目前仅提供对Linux系统的完整支持,其他系统如FreeBSD、NetBSD、macOS、Windows可以编译,但是未测试过功能。

如果需要支持其他系统,欢迎提交PR。

开发环境搭建

参考 Dev-Setup

标准及约定

参考 Standards

发布及打包

每个组件的每个发布版本都会有对应的tag,格式为 <name>-v<version> 。 使用对应的tag生成源码tar包,该tar包可以用于生成deb、rpm等发行版原生包文件。

如果需要对正式发布的版本打包:

  1. 生成版本发布包

    ./scripts/release/build_tarball.sh <name>-v<version>

    所有引用第三方源码都会放在tar包的vendor目录下,打包时只需要在目标机器上安装好编译器及系统依赖库即可,无需额外的网络连接。

  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>
# 本地没有源码时,可用远程URL执行
docker build -f <component>/docker/debian.Dockerfile github.com/bytedance/g3 -t <component>:<tag>
# 如果已经制作了源码tar包,也可以把URL路径换成源码tar包路径

静态链接

参考 Static Linking

使用OpenSSL变种编译

参考 OpenSSL Variants

长期支持版本

参考 Long-Term Support.

贡献指南

参考 Contributing

交流合作

请使用飞书加群, G3代理用户交流群加入链接, 或使用如下二维码:

Code of Conduct

Please check Code of Conduct for more details.

Security

If you discover a potential security issue in this project, or think you may have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.

Please do not create a public GitHub issue.

License

This project is licensed under the Apache-2.0 License.