Argusを使ってネットワークの使用状況を調べる
なぜか帯域が使い切られてしまってネットワークが重くなることってありますよね。
で、ルータの情報でも見れば帯域が使い切られているところまではわかりますが、そっから誰が使っているのか調べる方法としてArgus
があります。
簡単にまとめるとwireshark
などと同じようにパケット収集をした上で、情報をまとめ上げて解析してくれるツールです。
Argus
インストールは簡単なので省略。割とOSごとのメジャーなパッケージシステムで配布されています。
使い方
argus -w /tmp/argus.20151204
でパケットを収集して、
ra /tmp/argus.20151204
で表示するだけです。この表示するときにいろいろ指定してあげることで問題となっている通信を行っている相手を見つける手助けになります。
ちなみに、tcpdumpで取得したpcap形式のものでも大丈夫です。argusで収集するばあいにはpcapほどの情報量を取らないのでサイズが小さくなります。
当然ながら、収集するパケットは実行したマシンのポートのネットワークに流れているものになるので、ポートミラーリングしてそこから収集するのがいいでしょう。
使用例
そのまま表示するわけにもいかないので結果はいろいろ加工しています。変なとこがあったらその所為です。
# ソースアドレスでまとめてから最も通信量の多い順にまとめる
$ racluster -r /tmp/argus.20151204 -m saddr -w - | rasort -m bytes -s saddr bytes pkts
SrcAddr TotBytes TotPkts
10.0.5.245 4621639 8565
192.168.1.1 319649 871
# ソースアドレスでまとめてから最も通信量の多い順にならべる
$ racluster -r /tmp/argus.20151204 -m daddr -w - | rasort -m bytes -s saddr daddr pkts bytes
SrcAddr DstAddr TotPkts TotBytes
10.0.5.245 xx.xx.xx.xx 2035 1403435
192.168.1.1 xx.xx.xx.xx 1322 944262
0.0.0.0 10.0.5.245 1404
# 特定の接続元を、接続元でまとめてから最も通信数の多い順にならべる
$ ra -r /tmp/argus.20151204 -w - - src net 10.0.0.0/20 | racluster -m saddr -w - | rasort -m pkts -s saddr pkts bytes
SrcAddr TotPkts TotBytes
10.0.5.245 8565 4621639
10.0.5.245 6 294
# 特定時間、特定の宛先で、接続先でまとめて最も通信数の多い順にならべる
$ ra -r /tmp/argus.20151204 -t 11-12 -w - - dst net xx.xx.xx.xx | racluster -m saddr -w - | rasort -m pkts -s pkts bytes saddr
TotPkts TotBytes SrcAddr
2035 1403435 10.0.5.245
25 14674 192.168.1.1
他にもかなりのオプションがありますが、上記例のとおり接続先や接続元でまとめて異様に接続数の多いやつさえ見つけられれば原因を調べることができるかと思います。
少なくとも接続元や接続先をフィルタするオプションはtcpdumpと共通なので操作しやすいでしょう。