状況に応じてインターネットポートを開く必要があり、そのポートへのアクセスを許可するIP範囲の「ホワイトリスト」を設定しようとしています。実装を理解するためにソリューションのプロトタイプを作成しました。大規模なホワイトリスト(5000の範囲)が与える影響について懸念があります。そのようなルールセットがパフォーマンスに与える影響を説明する方法はありますか? iptablesからメトリックを取得する方法は?
答え1
最新のコアCPUはこれを非常にうまく処理できるはずです。
ただし、ルールを最適化できることを確認するのは悪くありません。 IPアドレスの分布によっては、ルールを8つの部分に分割するのが役立ちます。
iptables -N ourtable
iptables -N ourtable-000
iptables -N ourtable-032
iptables -N ourtable-064
iptables -N ourtable-096
iptables -N ourtable-128
iptables -N ourtable-160
iptables -N ourtable-192
iptables -N ourtable-224
iptables -A INPUT -p tcp --dport 12345 -j ourtable
iptables -A ourtable -s 0.0.0.0/3 -j ourtable-000
iptables -A ourtable -s 32.0.0.0/3 -j ourtable-032
iptables -A ourtable -s 64.0.0.0/3 -j ourtable-064
iptables -A ourtable -s 96.0.0.0/3 -j ourtable-096
iptables -A ourtable -s 128.0.0.0/3 -j ourtable-128
iptables -A ourtable -s 160.0.0.0/3 -j ourtable-160
iptables -A ourtable -s 192.0.0.0/3 -j ourtable-192
iptables -A ourtable -s 224.0.0.0/3 -j ourtable-224
iptables -A ourtable-000 -s 1.2.3.4 -j ACCEPT
...
iptables -A ourtable-000 -j DROP
iptables -A ourtable-032 -s 32.1.2.3 -j ACCEPT
...
iptables -A ourtable-032 -j DROP
# etc...
このようにして、パケットは5000ではなく625の規則に従ってチェックされます(もちろん、アドレスが均等に分布していると仮定し、そうでない可能性があります。それに応じて、アドレス空間全体の分割を調整できます)。
また、リストにすでにサブネットがあるとします(たとえば、172.18.0.0から172.18.0.7まで許可する必要がある場合は、172.18.0.0/29に置き換えます)。そうでない場合は、その範囲を確認してください。 Debian では、このnetmask
ユーティリティを使用して特定のネットマスクが適用される内容を確認します。
$ $ netmask -r 172.18.0.0/29
172.18.0.0-172.18.0.7 (8)