私は大規模なSaaS VPNサービスを設計しており、nftablesを使用する予定です。
処理できるルールの数に実質的な制限はありますか?
ルールはデータベースでコンパイルされます。それらの間には、ランダムな正規接続を持つ何千ものノードがあります。各ノードは、他のノードとポートを共有することを選択できます。たとえば、ノードAはノードBのRDPにアクセスできます。 Nftablesはセキュリティを制御します。
このプロセスはプロトタイプでうまく機能しました。私はその結果に非常に満足しています。私はスケーラビリティに焦点を当てています。拡張または縮小を選択できます。しかし、どの時点で非常に非効率的になりますか?いつそのようなことが起こりますか? 10,000のルールを簡単に処理できますか?それともトラブルに陥るのでしょうか?
現在、Ubuntu 20.04、カーネル5.11.10、Wireguard 1.0.20200513でnftables v0.9.3(Topsy)を使用しています。
また、答えはリソースと負荷によって異なることも知っています。今私が興味を持っているのは、アーキテクチャを構成するだけです。リソースはいつでも追加できます。
これに関するベストプラクティスはありますか?
答え1
私たちのサーバーには100未満のルールしかないので、専門家ではありません。しかし、あなたが言ったように、何万ものルールが含まれている設定は、災害や奇妙なパフォーマンスの問題に対する処方のように聞こえます。あなたのハードウェアのnftableがそれほど多くのルールを処理できることは完全に可能です。しかし、私があなたであれば、すべてをより簡単に管理できるように、すべてをもう一度考えてみましょう。 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
Red Hatは、あなたのような特別なケースを管理するのに役立つコレクションを使用することをお勧めします。