qpoint-io/qtap
GitHub: qpoint-io/qtap
Qtap 是一个基于 eBPF 的 Linux 代理,能在数据加密前捕获明文流量并提供丰富的进程上下文,实现无需修改应用或证书的网络透明观测。
Stars: 1426 | Forks: 52
一个捕获流经 Linux 内核流量的 eBPF 代理。通过挂载到 TLS/SSL 函数,数据在加密前后被截获,然后连同所有可用上下文(进程/容器/主机/用户/协议等)以及完全可见性一起传递给灵活的插件。Qtap 让您能够了解出口流量发生了什么,而无需修改应用、安装代理或管理证书。
Qtap 以最小的开销带外运行,在不增加延迟或中断应用性能的情况下,向您展示正在发送和接收的确切原始未加密数据。
Qtap 可以增强您现有的可观测性管道,也可以作为自定义解决方案(例如 [Qpoint](https://www.qpoint.io/qtap)) 的基础组件,以多种方式使用,包括: - **安全审计** - 安全专业人员可以验证敏感数据是否在网络通信中无意间泄露。 - **调试网络问题** - 当 API 返回错误或连接失败时,查看实际发送的数据有助于识别配置错误的参数、格式错误的请求或意外响应。 - **API 开发** - 开发人员可以验证其应用程序正在发送格式正确的请求并正确处理响应,而无需修改代码。 - **排查第三方集成问题** - 在与外部服务集成时,Qtap 有助于确认实际交换的数据与文档声明的数据是否一致。 - **学习和探索** - 通过观察应用程序和服务之间的实时流量来了解协议的实际工作原理。 - **遗留系统调查** - 在处理文档不全或遗留系统时,Qtap 提供有关其通信方式的洞察,而无需访问源代码。 - **验证测试** - 确认应用程序更改不会意外改变网络通信模式。
 更多信息请[参阅我们网站上的“工作原理”部分](https://docs.qpoint.io/readme/how-it-works)。 ## 快速开始 想试用一下 Qtap 吗?在 Demo 模式下启动一个临时实例!直接在您的终端中实时查看流量。 ``` # 以 demo 模式运行 Qtap $ curl -s https://get.qpoint.io/demo | sudo sh ``` 或者立即安装并开始运行! ``` # 安装 Qtap agent $ curl -s https://get.qpoint.io/install | sudo sh # 使用默认配置运行! $ sudo qtap ``` ## DevTools Qtap 包含一个内置的 DevTools 界面(位于 `pkg/devtools/app`),提供了类似 Chrome DevTools 的网络选项卡,用于监控单个 Linux 节点上的进程和流量。该界面提供对 HTTP 事务、网络连接和进程的实时监控,具有过滤、搜索和详细检查功能。详情请参阅 [DevTools README](pkg/devtools/app/README.md) 和 [DevTools 文档](https://docs.qpoint.io/release-notes/devtools)。  ## 要求 - Linux 内核 5.10+ 并启用了 [BPF Type Format (BTF)](https://www.kernel.org/doc/html/latest/bpf/btf.html)。您可以通过检查系统上是否存在 `/sys/kernel/btf/vmlinux` 来确认您的内核是否启用了 BTF。 - 主机上启用了 eBPF。 - 主机或运行代理的 Docker 容器内的提升权限: - 在主机上运行时使用 `sudo` - 在 docker 中,最好使用 `CAP_BPF`、主机 pids 和 privileged 运行。例如: docker run \ --user 0:0 \ --privileged \ --cap-add CAP_BPF \ --cap-add CAP_SYS_ADMIN \ --pid=host \ --network=host \ -v /sys:/sys \ --ulimit=memlock=-1 \ us-docker.pkg.dev/qpoint-edge/public/qpoint:v0 \ tap \ --log-level=info ## 开发 ### 前提条件 #### OS - linux (内核 5.10+) - Qpoint 的 MacOS 开发人员喜欢使用 [Lima](https://lima-vm.io/) 作为快速、简便的 Linux VM 进行开发。 #### 工具: - go1.24+ - make - clang14 (需要版本 14) - clang-tidy (可选/推荐) ### 快速开始 ``` $ git clone https://github.com/qpoint-io/qtap.git $ make build ``` #### 常用的 `Makefile` 目标 这些是 Qpoint 开发人员最常使用的目标: - `build` - 生成 eBPF 二进制文件并构建 Go 应用程序 - `generate` - 生成 eBPF 二进制文件 - `run` - 运行 Qtap 的调试实例 - `ci` - 运行所有 ci 检查(在推送代码前使用很不错) ## Telemetry ### Traces 可以按照 OpenTelemetry 文档设置 `OTEL_TRACES_EXPORTER` 和 `OTEL_EXPORTER_OTLP_PROTOCOL` 环境变量来启用跟踪 [[1]](https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/) [[2]](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#exporter-selection)。 ### Metrics 我们在 `localhost:10001` 上有两个指标端点: - `/metrics` 包含可用于创建仪表板以监控系统活动的指标 - `/system/metrics` 包含与 qtap 代理健康状态相关的指标 我们提供了一个示例 Grafana 仪表板:[examples/dashboards/qtap-http-overview.json](./examples/dashboards/qtap-http-overview.json)。  ## 项目状态 该项目目前处于早期开发阶段。我们很高兴与社区分享我们的工作并欢迎您的反馈!虽然我们正在积极改进,但请注意: - 随着我们优化方法,某些 API 可能会发生变化 - 某些地方的文档可能不完整 - 可能还有一些尚未解决的粗糙之处 我们欢迎通过 GitHub issues 贡献,并感谢您的理解,因为我们要作为一个小团队在平衡多个优先事项。我们重视能帮助我们改进项目的建设性反馈。 感谢您查看我们的工作! ## 贡献 通过向本项目提交贡献,您同意 [Contributor License Agreement](./.github/CLA.md)。该协议允许我们将您的贡献包含在开源版本和商业版本中。 ## Licensing 本项目采用双重许可:AGPLv3.0(用于开源使用)和商业许可(用于商业用途)。
标签:Agent, API集成, Docker镜像, Linux 内核, Qpoint, 出站连接, 加密流量, 可观测性, 安全渗透, 客户端加密, 日志审计, 服务器监控, 流量捕获, 用户代理, 网络安全, 网络拓扑, 网络流量分析, 隐私保护