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,可以将多个隧道串联在一起,前提是外部隧道(跳/中继)能够路由到内部隧道(出口)的端点。
## 发布
[](https://slsa.dev/spec/v1.2/build-track-basics#build-l3) [](https://securityscorecards.dev/viewer/?uri=github.com/celzero/firestack) [](https://www.bestpractices.dev/projects/11568) [](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, 日志审计, 网络库, 防火墙