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, 出口防火墙, 可编程网络, 可视化界面, 子域名突变, 控制面与数据面分离, 无代理, 模型鲁棒性, 流量过滤, 网络安全, 网络策略, 网络防护, 访问控制, 通知系统, 隐私保护, 零信任, 高性能数据平面