blacknon/childflow
GitHub: blacknon/childflow
一个 Linux 下的按命令树隔离网络沙箱工具,能在不依赖应用程序配合的情况下,对单个进程树强制实施 DNS、代理、出站策略和流量捕获控制。
Stars: 2 | Forks: 0
# childflow
childflow 是一个用于 Linux 的按命令树隔离的网络沙箱。
在一个隔离的网络上下文中运行一个命令及其子进程,控制 DNS / hosts / 代理行为,应用出站策略,仅捕获该进程树的流量,并为该进程树生成结构化的流日志。
## 关于
`childflow` 在隔离的网络上下文中运行一个命令树,并仅对该树应用 DNS、hosts、代理、沙箱、策略和捕获控制。
这对于不能一致遵守代理环境变量的工具非常有用。`childflow` 在命令树的网络路径上强制使用代理,而不是依赖 `HTTP_PROXY`、`HTTPS_PROXY` 或 `LD_PRELOAD` 风格的拦截。
它有两个 Linux 后端:用于日常默认路径的 `rootless-internal`,以及在您需要诸如 `--iface` 或透明拦截等主机集成行为时通过 `--root` 使用的 `rootful`。
- 仅影响目标命令树,而非整个主机会话
- 可以针对每个命令树强制设置 DNS、`/etc/hosts`、代理、沙箱策略、数据包捕获、结构化流日志和可复用的配置文件
- 可以在不依赖 `HTTP_PROXY`、`HTTPS_PROXY` 或 `LD_PRELOAD` 技巧的情况下强制使用代理
- 可以对出站流量应用允许/拒绝 CIDR 策略和默认拒绝规则
- 默认使用 `rootless-internal`
- 仅在需要 `--iface` 和透明拦截等功能时使用 `--root`
## 示例

Proxy control and capture
childflow --profile ./docker/demo/profiles/http-origin.toml
Block direct access, force the command tree through a proxy, and inspect only that tree's capture.
|

Reusable profiles
childflow --profile ./profiles/default-deny.toml --dump-profile
Keep sandbox settings in TOML, inherit from a base profile, and inspect the merged effective configuration.
|

Structured flow logs
childflow --summary --flow-log ./flow.jsonl -- curl https://example.com
Record structured DNS, connect, and policy events for the command tree without dropping down to packet-level inspection first.
|
## 安装
### cargo
```
cargo install childflow
```
### 依赖要求
主机要求:
- 仅限 Linux
- `ip`
- `iptables`
- `ip6tables`
`rootless-internal` 的额外要求:
- user、network 和 mount 命名空间支持
- `/dev/net/tun`
- 主机上已启用 user 命名空间
- 在 Debian / Ubuntu 类系统上建议安装 `uidmap`,以便作为 `newuidmap` / `newgidmap` 的后备方案
`rootful` 的额外要求:
- root 权限
- 可写的 `/proc/sys/net/ipv4/ip_forward`
- 可写的 `/proc/sys/net/ipv6/conf/all/forwarding`
- 使用代理拦截时所需的 TPROXY Linux 特性
如果您正在 macOS 或其他非 Linux 环境中进行评估,请使用 Docker 工作流,而不是尝试直接运行二进制文件。
## 用法
```
$ childflow --help
Run one command tree inside a controlled network sandbox
Usage: childflow [OPTIONS] [COMMAND]...
Arguments:
[COMMAND]... Command to execute
Options:
--profile
Load effective defaults from a TOML profile file. Explicit CLI flags override the profile
--dump-profile
Print the effective profile as TOML and exit
-c, --capture 标签:CIDR策略, DNS劫持, HTTPS代理, HTTP代理, JSONLines, NetworkNamespace, Rootless, 代理控制, 可视化界面, 安全测试, 应用隔离, 开发辅助, 攻击性安全, 沙箱, 流量捕获, 流量监控, 网络安全, 网络审计, 网络拓扑, 网络拦截, 网络沙盒, 网络策略, 网络访问控制, 进程隔离, 透明代理, 通知系统, 防御绕过, 隐私保护, 零信任