moolen/neuwerk-rs
GitHub: moolen/neuwerk-rs
一个基于 DPDK 高性能数据平面的云原生出站防火墙,通过 DNS 感知策略实现基于域名的精细化流量控制,让默认拒绝出站在现代基础设施中重新变得可行。
Stars: 0 | Forks: 0
# Neuwerk
大多数云环境无意中允许发往整个互联网的出站流量。
这并非因为团队粗心大意——而是因为现代基础设施使得做正确的事情变得困难。SaaS 端点位于 CDN 之后,IP 不断变化,而传统防火墙仍然基于静态 CIDR 列表运行。
与此同时,策略是基于主机名编写的:
`api.stripe.com`、`*.github.com`、`s3.amazonaws.com`。
本项目旨在弥合这一差距。
它通过将解析事件绑定到**高性能 DPDK 数据平面**中实现的数据包过滤器,将 DNS 上下文转化为可执行的网络策略。结果是一个能够理解**名称、服务和意图**,而不仅仅是 IP 的出站防火墙。
无需代理。无需更改应用程序。无厂商锁定。
## 为什么存在这个项目
如今大多数出站控制属于以下三类之一:
- **基于 IP 的防火墙**——与现代 SaaS 基础设施不兼容
- **HTTP 代理**——运维繁琐且不完整
- **云服务商防火墙**——昂贵且跨服务商不一致
结果是可预见的:许多环境默默地允许 `0.0.0.0/0` 在 443 端口上的流量。
本项目提供了一个**可编程、DNS 感知的执行层**,专为现代基础设施设计。
## 架构
该系统遵循严格的**控制平面/数据平面分离**。
**数据平面**使用 **DPDK** 实现,允许高吞吐量的数据包检查和过滤,而无需依赖内核网络栈。
**控制平面**暴露一个 API,允许以编程方式管理策略。策略可以通过基础设施流水线定义,并自动转换为运行时防火墙规则。
此架构提供:
* 高吞吐量
* 确定性性能
* 可编程策略管理
* 执行与配置之间的运维分离
## 核心功能
### DNS 感知策略执行
DNS 响应被转换为短期 IP 集合,并在 DPDK 数据平面中执行。
### TLS 元数据过滤
策略可以匹配 **SNI 和证书属性**等 TLS 元数据,而无需终止 TLS。
### 可选 TLS 深度包检测
对于需要更深度检查的环境,可以分析加密流量,同时保持透明的网络路径。
### Kubernetes 集成
旨在与 Kubernetes 网络和容器工作负载集成,同时在节点信任边界之外执行策略。
### 基础设施即代码控制平面
策略配置自然地与 **Terraform 和其他 IaC 工作流**集成。
### 云与厂商无关
可在 Linux 运行的任何地方运行:
- AWS
- GCP
- Azure
- 本地数据中心
- 混合环境
不依赖专有的云防火墙产品。
## 这是什么(以及不是什么)
这不是又一个重型 NGFW 设备。
它是一个**可编程、API 驱动的出站防火墙**,专为现代基础设施设计:
- DNS 感知策略
- 高性能 DPDK 数据平面
- 严格的控制平面分离
- 云无关部署
目标很简单:
**让默认拒绝出站再次变得切实可行。**
## 本地基准测试
对于数据平面微基准测试,请使用仓库运行器,而不是临时的 `cargo bench` 命令:
```
make bench.dataplane
NEUWERK_BENCH_CORE=2 NEUWERK_BENCH_SAVE_BASELINE=before make bench.dataplane
NEUWERK_BENCH_CORE=2 NEUWERK_BENCH_COMPARE_BASELINE=before make bench.dataplane
```
该运行器位于 `scripts/bench-dataplane.sh`,并标准化了样本大小、预热时间、可选 CPU 亲和性、可选 nice 级别以及 `target/criterion-runs/` 下的日志捕获。
标签:DNS 感知, DPDK, Egress Firewall, IP 地址批量处理, JSONLines, Kubernetes 安全, SaaS 安全, Streamlit, 出口防火墙, 可编程网络, 可视化界面, 子域名突变, 控制面与数据面分离, 无代理, 模型鲁棒性, 流量过滤, 网络安全, 网络策略, 网络防护, 访问控制, 通知系统, 隐私保护, 零信任, 高性能数据平面