저는 대규모 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은 귀하와 같은 특별한 경우를 관리하는 데 도움이 되는 컬렉션 사용을 권장합니다.