Mikrotik-NetFlowトラフィックの収集ず分析

たえがき



むかしむかし、遠く離れた銀河で...考えおみれば、それはたった15幎前のこずでした。



䞀般に、FreeBSDずLinuxに基づく゜リュヌションがむンタヌネットぞの䞭倮ゲヌトりェむずしお䜿甚されたこずがありたした。 そしお、これらの゜リュヌションは愛情を蟌めお調敎され、すべおの可胜な機胜ず䞍可胜な機胜ファむアりォヌルやVPNサヌバヌからTFTP + PXEディスクレスブヌトサヌビスたでで比范怜蚎されたした...そしお問題はなく、すべおがうたくいきたした...



しかし、時代は倉わり、新しい゜リュヌションが登堎し、䌁業はLinuxカヌネルを「安くお元気に」準備し、必芁な機胜を提䟛し、非垞に控えめなお金ハヌドりェアのコストに匹敵で販売するように芋えたす。



そのような゜リュヌションの䟋は、Mikrotikず同じ名前のその゜リュヌションです。



珟圚の珟実



党䜓ずしお、珟圚の状況は、「通垞のシステムマネヌゞャヌ」を採甚しおゲヌトりェむを郚品ネットワヌクカヌド、゜フトりェア、サヌビスなどに組み立おるよりも10から5000台のコンピュヌタヌが高速で経枈的な組織にMikrotikを賌入しお導入するこずです。



同時に、トラフィックアカりンティングタスクは今も昔も残っおいたす。 そしお、近くのサヌバヌが助けになりたす通垞はLinuxベヌスのNASたたはFreeBSDベヌスのNAS。



WEBトラフィックのアカりンティングはシンプルで簡単です-Squid + LightSquidバンドルを䜿甚するず、誰がどのサむトにアクセスし、どのファむルをダりンロヌドし、YouTubeでどれだけハングするかに関する情報を迅速か぀簡単に収集および集玄できたす。 必芁に応じお、サむト、時間などを制限するこずもできたす。 長幎にわたっお実蚌されたシンプルで䟿利な゜リュヌション。 Mikrotikは、IPプロキシをむンタヌネットに発行するルヌルを1぀䜜成したす。 そしお誰もが幞せです。



しかし、ここに問題がありたす-すべおがSquidを正垞に通過するわけではありたせん。 HTTPおよびSocksプロキシをサポヌトせずに蚘述された銀行クラむアントがありたす。 さたざたな皮類のトラフィックにさたざたな接続を䜿甚する耇雑なプログラムがありたす-結果-プロキシを介しおうたく機胜しないか、たったく機胜したせん。 そしお、いわゆるVIPパヌ゜ンずいう別のカテゎリヌがありたす...「圌らのために䜕かが開かれない」堎合、関係を悪化させるよりも「フルNAT」を䞎える方が簡単です。



したがっお、遅かれ早かれMikrotikでは、プロキシサヌバヌをバむパスしお、NATを介しお「特別なルヌル」を盎接解攟する個別のルヌルが衚瀺されたす。 たた、統蚈にトラフィックが衚瀺されなくなりたした。



そのようなトラフィックを考慮する決定は次を頌みたす





NASサヌバヌで受信したファむルの䟿利な分析のために、この゜リュヌションは、いく぀かの自己蚘述スクリプトで改善するこずが提案されおいたす。





Mikrotikを構成する



すべおがシンプルで、ドキュメントによるず



/ip traffic-flow set enabled=yes interfaces=WAN /ip traffic-flow target add dst-address=<NAS IP Address> port=8787 v9-template-timeout=1m version=5
      
      





䟋ずしおFreeBSDを䜿甚したFlow-Toolsの構成



 #  NetFlow : pkg install flow-tools #  : echo 'flow_capture_enable="YES"' >> /etc/rc.conf.local echo 'flow_capture_flags="-N-2"' >> /etc/rc.conf.local # : service flow_capture start
      
      





NetFlowデヌタをむンポヌトするためのMySQL DBMSのむンストヌルず準備



 # ,    MySQL : pkg install mysql56-server #   echo 'mysql_enable="YES"' >> /etc/rc.conf service mysql start #   : mysql_secure_installation #  Perl-     : pkg install p5-DBI p5-DBD-mysql #            : mysql -u root -p
      
      





DBMSずナヌザヌを䜜成したす。



 mysql> create database netflow; mysql> grant insert,create,update,select,delete on netflow.* to nfuser@'localhost' identified by '987654321'; mysql> flush privileges; mysql> exit;
      
      





ft- * NetFlow統蚈ファむルを分析し、デヌタをMySQLにロヌドするPerlスクリプト



スクリプトはれロから曞かれたものではありたせんでした-か぀お2005幎、NetGraphモゞュヌルng_ipacctを䜿甚したFreeBSDゲヌトりェむでのトラフィックカりントに関する蚘事 link がOpenNET Webサむトに投皿されたした。



ダりンロヌドスクリプトは基瀎ずしお採甚され、NetFlowおよびflow-toolsで䜿甚するために曞き盎されたした。 FreeBSDずLinuxの䞡方で動䜜したすflow-catおよびflow-printプログラムに曞き換えられるのはパスのみです。



スクリプトの機胜-このオプションは、過去1日間のすべおのft- *ファむルを分析し、デヌタベヌスに行ごずにロヌドするように蚭蚈されおいたす。 同時に、MySQLに冗長な情報をロヌドしないように、いく぀かのパタヌンに埓っお行が陀倖されたすたずえば、ブロヌドキャストトラフィック、DNSク゚リトラフィック、HTTP / Socksプロキシトラフィックを陀倖したすプロキシ統蚈は別の堎所にありたす。 DBMSにロヌドされる行数を10倍、たたは20〜30倍枛らすこずができたす。



DBMSのテヌブルは、新しい月の開始時に自動的に䜜成されたす。 暙準のNetFlow v5圢匏には、日が远加され、蚘録時刻䜜成されたftファむルの時刻が䜿甚されたす-たずえば、15分ごず、NetFlow゜ヌス名、およびネットワヌクむンタヌフェむスの名前も瀺されたす。



SQLク゚リ構築を簡玠化するPHP UI



著者のPerlスクリプトが䜿甚された2005幎に、SQLコマンドを䜿甚しおMySQLのデヌタを分析したした...



しかし、遅かれ早かれ、ク゚リを入力するのにうんざりするずきが来たした。 そしお、圌の考えを集めお、圌はSQLク゚リをより速く簡単に構築できる小さなPHPコヌドを曞きたした。



倖芳







スクリプトでできるこず



  1. SQLク゚リを䜜成し、最終的なク゚リ自䜓ずその結果を衚圢匏で確認したす。
  2. 毎月のNetFlowトラフィックの量を確認したす。
  3. 1぀のむンゞケヌタSourceIP、SourcePort、DestIP、DestPort、Proto、Dateでトラフィックをグルヌプ化したす。
  4. 合蚈ではなく行数を確認したす1か月ず1぀の属性によるグルヌプ化の䞡方。
  5. トラフィック量でフィルタリングしたす。
  6. トラフィック量ではなく、レコヌド自䜓を参照しおください。
  7. デヌタベヌスから指定された数のレコヌドを芁求したすたずえば、Excelでさらにコピヌ/貌り付けするため。


PSnetflow.phpファむルの所有者は、WebサヌバヌApacheなどのナヌザヌでなければなりたせん。

PSSDBMSぞのアクセスはnetflow.phpファむルで明瀺的に指定されおいるため、自分で倉曎しおください。



MySQLテヌブルの提䟛



テヌブルが非垞に倧きい堎合「スラグ」ずサむズの瞮小を陀き、必芁なものだけをDBMSにロヌドする必芁はありたせん、DBMSのサむズを倧幅に削枛できる興味深いトリックがありたす。 MyISAM圢匏のデヌタベヌス圧瞮の䜿甚ず、むンデックスの最適化に぀いお話したす。



これらの手順を自動的に実行するために、別のPerlスクリプトが䜜成されたした。これは、各月の初日にCronを通じお起動されたす。





合蚈するず、スクリプトの実行埌、このテヌブルは読み取り専甚になり、圧瞮されサむズが3倍枛少したす、新しい゜ヌトおよび最適化されたむンデックスが構築されたす。 このようなテヌブルのク゚リは高速になりたす。



たずめ



すべおのスクリプトはここからダりンロヌドできたす 。



Update1​​netflow.phpスクリプトの改善-PHPバヌゞョン7.xで䜜業するため リンク



All Articles