異なる仮想マシン(何百もの)間のトラフィックを理解し、iptablesロギングを使用して新しい接続(インバウンドおよびアウトバウンド)ログを生成する計画を立てる必要があります。スクリプトはログを解析し、送信元/宛先IPとポートを取得できます。ただし、可能なすべての接続の完全な写真を取得するには、数日間(おそらく一週間)記録する必要があります。計画は毎時間ログファイルをローリングすることですが、これはライブサーバーで実行する必要があるため、パフォーマンスが問題です。 iptablesのロギングによってかなりのオーバーヘッドが追加されますか?私はLinuxを初めて使用し、あなたのコメントに心から感謝します。
答え1
負荷は、主に記録する必要がある接続の数によって異なります。接続あたりの数はかなり少ないですが、多数の接続を処理する必要があるサーバーがある場合は増加する可能性があります。
iptables
ログメッセージをカーネルメッセージバッファ(コマンドで見ることができますdmesg
)に入れます。残りのタスクは通常、syslogデーモンによって処理されます。
syslogd
レガシー/ペアの場合、klogd
ログファイルおよび/またはリモートログ宛先(設定どおり)にメッセージを送信するために必要な量のシステムリソースを消費します。
しかし、多くの最新のディストリビューションでは、rsyslogd
メッセージ速度を制限することが可能です。そして、多くのディストリビューションでは、iptablesロギングのこの制限レベルは非常に低く設定されています。デフォルトの速度は古い低電力サーバーを保護するように設計されているように見えるため、制限を安全に増やすことができますが、そうすることを忘れないでください。
Javaソフトウェアを実行している場合は、ローカル通信に多くのネットワークソケットを使用する傾向があります。ソースに書き込む必要があるデータ量を最小限に抑えるには、ログを記録しないようにロギングルールを慎重に設定する必要があります。同様に、既に知っているか関心のない接続が多いことがわかっている場合は、その接続をロギングから除外して総データ量を管理可能に保つことができます。
可能であれば、接続ごとに1つのログメッセージのみを生成するようにしてください。記録みんな着信および発信パケットは確かにかなりの追加負荷を生成します。
また、一週間録画した後に知っておくべきことすべてを知っていると仮定しないでください。サイトによっては、月末または毎四半期にのみ発生するいくつかの接続がある場合があります。