celzero/firestack

GitHub: celzero/firestack

Firestack 是一个 Android 用户态网络库,将 WireGuard 多跳隧道、DNS 解析、连接监控与防火墙功能整合为一个可集成的 aar 组件。

Stars: 164 | Forks: 28

# Firestack Firestack 是一个运行在用户空间的 TCP/UDP 连接监控器、防火墙、DNS 解析器,同时也是 Android 上的多跳 [WireGuard](https://github.com/wireguard/wireguard-go) 客户端。 Firestack 是专门为 [Rethink DNS + Firewall + VPN](https://github.com/celzero/rethink-app) 构建的。[gVisor/netstack](https://github.com/google/gvisor/tree/go/pkg/tcpip) 为基于 TUN 设备的 TCP/UDP 提供了类似 SOCKS 的接口(类似于 [badvpn 的 tun2socks](https://github.com/ambrop72/badvpn))。 Firestack 是 Google 的 [outline-go-tun2socks](https://github.com/Jigsaw-Code/outline-go-tun2socks) 项目的硬分叉。 ## DNS Firestack 支持 DNS over HTTPS、DNS over TLS、Oblivious DNS over HTTPS、基于 WireGuard / SOCKS5 / Tor 的 DNS、DNSCrypt 以及传统的普通 DNS 上游。 ## WireGuard Firestack 在用户空间运行 WireGuard。当同时运行*多个* WireGuard 隧道时,只有 ICMP、DNS、TCP 和 UDP 会被转发。ARP / IGMP / SCTP / RTP 和其他 IP 协议*不会*被转发到 WireGuard 隧道。 Firestack 支持多跳 / 多中继 WireGuard,可以将多个隧道串联在一起,前提是外部隧道(跳/中继)能够路由到内部隧道(出口)的端点。 ## 发布 [![SLSA 3](https://slsa.dev/images/gh-badge-level3.svg)](https://slsa.dev/spec/v1.2/build-track-basics#build-l3) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/celzero/firestack/badge)](https://securityscorecards.dev/viewer/?uri=github.com/celzero/firestack) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11568/badge)](https://www.bestpractices.dev/projects/11568) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/celzero/firestack) Firestack 以 Android 库(`aar`)的形式发布,可以通过 [Jitpack](https://jitpack.io/#celzero/firestack)([参考](https://github.com/celzero/rethink-app/commit/a6e2abca7))或 [Maven Central (OSSRH)](https://central.sonatype.com/artifact/com.celzero/firestack/overview) 集成到你的 Android 构建中。 ``` // add this to your project's build.gradle allprojects { repositories { ... // if consuming from maven central // ref: central.sonatype.org/consume mavenCentral() ... // if consuming from jitpack // ref: docs.jitpack.io/android/#installing maven { url 'https://jitpack.io' } ... } } // add the dep to your app's build.gradle dependencies { ... // maven central (stripped) implementation 'com.celzero:firestack:Tag@aar' ... // jitpack (stripped) implementation 'com.github.celzero:firestack:Tag@aar' // jitpack (debug symbols) implementation 'com.github.celzero:firestack:Tag:debug@aar' ... } ``` ## API 这些 API 尚不稳定,因此暂无文档,但你可以查看 Rethink DNS + Firewall + VPN 的代码库:([GoVpnAdapter](https://github.com/celzero/rethink-app/blob/0c931d23d7/app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt#L113-L137), [BraveVpnService](https://github.com/celzero/rethink-app/blob/0c931d23d7/app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt#L5306-L5324)),了解如何在 Android 上与 Firestack 进行集成。 ## 构建 Firestack 仅支持 Android。其他平台的说明保持原样,但不一定能正常运行。 ### 前置条件 - macOS 主机(iOS、macOS) - make - Go >= 1.25 - 一个 C 编译器(例如:clang、gcc) Firestack API 目前仅在 Android 构建中可用。iOS 和 Linux 支持已在计划中,但目前尚无具体内容。 ### Android - [sdkmanager](https://developer.android.com/studio/command-line/sdkmanager) 1. 从 [developer.android.com](https://developer.android.com/studio) 下载命令行工具。 2. 将包解压到 `~/Android/Sdk/cmdline-tools/latest/`。确保 `sdkmanager` 位于 `~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager` - Android NDK 28+ # 安装 NDK(确切的 NDK 版本通过 `sdkmanager --list` 获取) ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-36" "ndk;28.2.13676358" # 设置环境变量: export ANDROID_NDK_HOME=~/Android/Sdk/ndk/28.2.13676358 ANDROID_HOME=~/Android/Sdk - [gomobile](https://pkg.go.dev/golang.org/x/mobile/cmd/gobind)(在需要时由 `make` 安装) ### Apple (iOS 和 macOS) - Xcode - [gomobile](https://pkg.go.dev/golang.org/x/mobile/cmd/gobind)(在需要时由 `make` 安装) ### Linux 和 Windows 我们从源码为 Linux 和 Windows 构建二进制文件,不包含任何自定义集成。 支持交叉编译需要 `xgo` 和 Docker。 - [Docker](https://docs.docker.com/get-docker/)(用于 XGO) - [xgo](https://github.com/crazy-max/xgo)(在需要时由 `make` 安装) - [ghcr.io/crazy-max/xgo Docker image](https://github.com/crazy-max/xgo/pkgs/container/xgo)(由 `xgo` 拉取,约 6.8GB)。 ## Make ``` # 创建 build/intra/{tun2socks.aar,tun2socks-sources.jar} make clean && make intra ``` 如果需要,你可以使用以下命令将 jni 文件提取到 `build/android/jni` 中: ``` unzip build/android/tun2socks.aar 'jni/*' -d build/android ```
标签:Android, DNS, DSL, EVTX分析, VPN, WireGuard, 日志审计, 网络库, 防火墙