テナントインターネットトラフィックアカウンティング(ネットフロー)

一般的な統計、特にネットフローの問題については、かなり広範な記事がかなりあります(その研究にはかなりの時間が必要です)。 ここでは、毎月の統計を収集してテナントに送信するためのそれほど難しくない技術的なタスクのための現状のままのスクリプトを提供します。



入門



いくつかのテナントは、NATを介してインターネットを取得します(NAT自体は、ポリシールーティングを通じて2つのプロバイダーに結び付けられています)。 各テナントには独自のビランがあります。 Vilanは、マネージドスイッチを介してテナントのネットワークに「展開」されます。 各テナントには、ローカルネットワークの独自のセグメントが与えられ、隣接するセグメントへのアクセスが禁止されています。



目的 :月末に各テナントとビル管理者に、彼がインターネットをどれだけ食べ、トラフィックを再利用しすぎたユーザーを突くかを伝えること。 つまり 必要なのは、セグメントの要約統計、考慮されたネットワーク内の各アドレス(宛先)によるインターネット消費量です。



ツール:tsiskaのnetflow、Linuxのflow-tools、MTA、cronを使用。



理論



ルーターは、同様のパケットに関する情報をフローに結合します。 同じsrc / dst IP / portの組み合わせを持つパケットは類似していると見なされます。 つまり ファイルウォッシュからダウンロードされたファイルのIPパケットは、1つのストリームにマージされます。 各ストリームに関する情報には、誰から(4つのフィールド、アドレス、ポート)、パケットの数、パケットが送信されたインターフェース、送信されたデータのサイズと時間(タイムスタンプ)が含まれます。 このデータは、udpパケットで定期的にコレクターに送信されます。 コレクターはこのデータを受信する準備ができたサーバーです。 コレクターが複数の送信者からデータを収集できることは明らかであるため、データを保存するとき、通常は送信者もそこに書き込まれます。 統計が収集されると言われているすべてのポートで統計が収集されることを理解する必要があります。 「すべてのポートですべてを収集する」と言うと、トラフィックは受信時(着信時)とクライアントインターフェイスへの送信時(発信時)に2回カウントされます。 幸いなことに、natは受信と送信の間に発生するため、NATを使用すると、1つの(内部)インターフェイスのフローに内部アドレスが表示されます。



ルーターの構成



全体を引用するのではなく、netflowに関連する部分のみを示します(つまり、ACL、NAT、要求者のDHCPなどは省略されます)、さらに、1つのテナントインターフェイスのみが表示されます(残りは厳密に類似しています) :

インターフェイスVlan31
 説明家賃:OOO AVTOTRADE部屋315,316,317,318
  IPアドレス192.168.31.1 255.255.255.0
  IPフローイングレス
  IPフロー出力
 内部IP NAT

 ip flow-export source Vlan255
 ip flow-exportバージョン5
 ip flow-export destination 192.168.255.254 3000


ご存じのように、vlan31(192.168.31 / 24)はテナントであり、同様に±残りのテナントです。 Vlan255-データ(サービス)を送信するVLAN。 残りの値は明確です。 (netflowのバージョンに注意してください。flow-toolsは9番目のバージョンをサポートしていません)。



フローツールの構成



受信機



インストールする必要があります(debianの場合: aptitude install flow-tools



)。 /etc/flow-tools/capture.confの設定:



 -w / srv / netflow / 0/0/3000




注:netflowは多くのスペースを消費します。 数十ギガバイトのデータも保存する必要があります。 このデータは別のセクションに配置することをお勧めします。



統計処理



実際、これはまさに記事のトピックです。 まず、情報を選択するフィルターを構成する必要があります。次に、この情報をだれかに送信するスクリプトを構成する必要があります。 現時点では、テナントの数はそれほど多くないため、それぞれについてすべてが個別に構成されます。



フィルター



flow-nfilterプログラムにはフィルターが必要です。このプログラムは、バイナリフローを入力に取り込み、フィルター処理して、バイナリフローを再度返します。



/etc/flow-tools/cfg/filter.cfgのフィルター。 これらは、プリミティブ(大まかに言うと、フィルター要素の名前)とフィルターで構成されています。 flow-nfilterを呼び出すと、フィルタリングするフィルターの名前が表示されます。



次に、2つのテナントの例を示します。



フィルタープリミティブrent31範囲
  タイプip-address-prefix
   192.168.31.0/24を許可
  デフォルト拒否

フィルタープリミティブrent3233-range
  タイプip-address-prefix
   192.168.32.0/24を許可
   192.168.33.0/24を許可
  デフォルト拒否


フィルター定義レンタル31-out
   match dst-ip-addr rent31-range

フィルター定義rent3233-out
   match dst-ip-addr ren32t33-range




スクリプト



実際には、主なもの:



 #!/ bin / sh
 #args: 
 #$ 1-家賃(01,02、...)、 
 #$ 2 ... $ N-送信するメールアドレス
 year = `date --date = '-1 month' +%Y`
 month = `date --date = '-1 month' +%m`
ネット= 1ドル
 total = `flow-cat / srv / netflow / $ year / $ year- $ month | flow-nfilter -F rent $ net-out | flow-stat -f 15 | grep -v"# "| awk '{print $ 3 } ''
シフト
 (echo "Total incoming:$ total Mb"; flow-cat / srv / netflow / $ year / $ year- $ month | flow-nfilter -F rent $ net-out | flow-stat -f 8)| mail -s 「ネット192.168。$ net.0 / 24のレポートを$年-$月」$ *




キーポイント:スクリプトは先月の統計を送信します。 (対応する日付オプションのおかげ)。 フローは2回処理されます(速度は私に合っていますが、速度が低下し始めた場合、ファイルへのフィルタリングを行い、2つのレポートを別々に実行する必要があります)。 最初の処理では、メガバイト単位の人間が読み取れる数値が得られ、2番目の処理では、誰がどれだけ食べるかについてのプレートが提供されます。



必要に応じて(競合/紛争)、手で(flow-printとgrepを使用して)各チェーンの完全な統計を提供することができます。



クロン



私はDebianでcron機能を使用していますが、これはunixでは通常よりも少し便利です-/etc/cron.monthlyディレクトリがあります。 ファイル/etc/cron.monthly/rent-accはその中にあります。

 / usr / local / bin / rent-acc 31 admin@domain.ru rentuser@example.com manager@company.ru
 / usr / local / bin / rent-acc 3233 admin@domain.ru rentuser2@foobar.baz manager@company.ru


このファイルは、同時にテナント用の構成ファイルでもあります(ただし、新しいフィルターは手動で登録する必要があります!)。 このファイルのchmod + xを忘れないでください。



結果



次のようになります。

着信合計:67673.187 Mb

 #--- ---- ----レポート情報--- --- ---
 #
 #フィールド:合計
 #記号:無効
 #ソート:なし
 #名前:宛先IP
 #
 #引数:flow-stat -f 8 
 #
 #
 #IPaddrフローオクテットパケット
 #
 192.168.2.16 1321968 4301821906 24858456
 192.168.2.2 2118220 62029649663 51512160
 192.168.2.3 226383 193301694 1129250
 192.168.2.8 105319 350858966 3027875
 192.168.2.5 3240 60888068 681056
 192.168.2.4 31289 13434866 217217
 192.168.2.15 200 32104404 97818
 192.168.2.14 1356 137727274 1977666
 192.168.2.7 35310 553217946 10290038




ディスクラマー



通信サービスの提供にはライセンスが必要です。 唯一の抜け穴は、サービスのプロバイダーからの再請求書です。 このために統計を読み取る必要があります。 ただし、上記のすべては認証された請求ではありません。 支払人の側に特定の親しみやすさが必要です。



All Articles