我正在设计一个大型 SaaS VPN 服务,并计划使用 nftables。
它可以处理的规则数量是否有实际限制?
规则将从数据库中编译。将有数千个节点,它们之间有任意规则连接。每个节点都可以选择与任意其他节点共享任意端口。例如,节点 A 可以访问节点 B 上的 RDP。Nftables 将控制安全性。
该过程在原型中运行良好。我对它的效果非常满意。我只关心可扩展性。我可以选择扩大或缩小。但是否会在某个时刻变得非常低效呢?可能会在什么时候发生?它能毫不费力地处理 10,000 条规则吗?还是会陷入困境?
目前在 Ubuntu 20.04 上使用 nftables v0.9.3 (Topsy),内核为 5.11.10,Wireguard 1.0.20200513
我还意识到答案取决于资源和负载。我现在只关心配置架构。资源可以随时添加。
有这方面的最佳实践吗?
答案1
无论如何,我都不是专家,因为我们的服务器上只有不到一百条规则,但像您所说的那样,有数万条规则的设置听起来像是灾难或奇怪的性能问题的根源。您的硬件上的 nftables 完全有可能能够应对这么多规则,但如果我是您,我会重新考虑一切以使一切更易于管理。也许使用轻量级虚拟化,例如 docker 或类似的东西。
我无法找到您的问题的可靠答案,但例如,Red Hat 仅使用 1000 条规则就发现性能受到相当大的影响:
- https://developers.redhat.com/blog/2017/04/11/benchmarking-nftables
- https://developers.redhat.com/blog/2020/04/27/optimizing-iptables-nft-large-ruleset-performance-in-user-space
- http://his.diva-portal.org/smash/get/diva2:1212650/FULLTEXT01.pdf
红帽建议使用可以帮助管理像您这样的极端情况的集合。