SNMP・syslog・NetFlowの違い:監視でわかること・集め方・データの形・プロトコルを比較

ネットワークを運用するには、機器や通信の状態を監視し、異常に早く気づいて原因を調べる必要があります。SNMP・syslog・NetFlowは、どれも機器から情報を集めるしくみですが、わかることが違います。SNMPは、管理する側(マネージャ)が機器(エージェント)に、インターフェースの通信量やCPUの使用率などの値を問い合わせるもので、「どれだけか」が分かります。syslogは、リンクのダウンやログイン、設定の変更などの出来事を、機器が文字のメッセージとして記録用のサーバに送るもので、「いつ何が起きたか」が分かります。NetFlow(と、それをもとに標準化されたIPFIX)は、通信を送信元と宛先などが同じパケットのまとまり(フロー)ごとに集計して送るもので、「だれとだれが、どれだけ通信したか」が分かります。実際の運用では、3つを組み合わせて使います。

項目SNMPsyslogNetFlow(IPFIX)
わかること機器の状態と量。インターフェースの通信量やエラーの数、CPUとメモリの使用率、リンクの状態出来事。リンクのダウン、ログインの成功と失敗、設定の変更、エラーの発生通信の内訳。どの送信元と宛先の組み合わせが、どのプロトコルとポートで、どれだけ通信したか
集め方マネージャが一定の間隔で問い合わせる(ポーリング)。異常を機器から知らせる通知(トラップ)もある機器が、出来事が起きたときにサーバへ送る機器がフローを集計し、フローが終わったときや一定の時間ごとに、収集用のサーバ(コレクタ)へ送る
データの形MIBで定義された値(カウンタや状態)。オブジェクト識別子(OID)で指定する重要度(0〜7)、発生元の種類(ファシリティ)、時刻と、文字のメッセージフローごとのレコード。アドレス、ポート番号、プロトコル、パケット数、バイト数、開始と終了の時刻など。項目はテンプレートで決める
時間の細かさ問い合わせの間隔(例えば5分)ごとの平均になる出来事ごとに、ほぼすぐに届くフローごと。長く続くフローは、一定の時間ごとに区切って送る
わからないことだれの通信かは分からない通信量は分からないパケットの中身(データ)は分からない。機器のCPUの使用率なども分からない
機器と回線への負荷小さい小さい。ただし、障害のときにメッセージが急に増えることがある大きめ。高速なリンクでは、一部のパケットだけを調べるサンプリングを使うこともある
規格とポート番号SNMPv3はRFC 3411〜3418。UDPの161番(問い合わせ)と162番(トラップ)RFC 5424。UDPの514番、TLSを使うときは6514番NetFlow v9はRFC 3954(情報提供のRFC)。標準化されたIPFIXはRFC 7011で、ポート番号は4739番
セキュリティv1とv2cでは、コミュニティ名が暗号化されずに流れる。v3で認証と暗号化ができるUDPでは、暗号化も届いたことの確認もない。TLSで保護できるNetFlow v9には保護のしくみがない。IPFIXはTLSやDTLSで保護できる
主な用途通信量のグラフ、回線の使用率の把握、機器の故障の検知障害の原因の調査、だれが何をしたかの記録、セキュリティの監視(SIEMへの集約)帯域を多く使う端末やアプリケーションの特定、ふだんと違う通信の検知、回線の増強の計画

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

SNMP
回線や機器の使用率を、グラフで継続して見たいとき。機器の故障やリンクのダウンにすぐ気づきたいときは、トラップと組み合わせます。
syslog
障害やセキュリティに関わる出来事を、時刻とともに記録して後から調べられるようにしたいとき。複数の機器のログを突き合わせるため、機器の時計をNTPで合わせておきます。
NetFlow(IPFIX)
回線が混んでいるときに、どの端末やアプリケーションが帯域を使っているかを調べたいときや、ふだんと違う通信のパターンを見つけたいとき。

よくある質問

SNMPのカウンタから、通信の速さはどう求めますか?

インターフェースの受信や送信のバイト数のカウンタを一定の間隔で読み出し、前回との差をビットに直して、間隔の秒数で割ります。例えば5分(300秒)の間にカウンタが 3,750,000,000 増えたなら、3.75×10⁹ × 8 ÷ 300 = 1×10⁸ bit/s で、平均100 Mbpsです。32ビットのカウンタは約43億で0に戻り、高速なリンクではすぐに1周してしまうので、64ビットのカウンタを使います。結果は間隔の中の平均なので、短い時間の急な増加は見えません。

SNMPのポーリングとトラップは、どう使い分けますか?

ポーリングは、マネージャが決まった間隔で値を読み出すので、通信量のグラフのように、変化を続けて記録するのに向きます。トラップは、リンクのダウンなどが起きたときに機器から知らせるので、すぐに気づけますが、UDPで送るので届かないこともあります。受け取ったことを確かめる通知(インフォーム)もあります。多くの場合、両方を組み合わせます。

syslogのメッセージの重要度とは何ですか?

RFC 5424では、メッセージの重要度を、0(Emergency、システムが使えない)から7(Debug、デバッグ用)までの8段階で表します。数字が小さいほど重要で、どの重要度以上のメッセージをサーバへ送るかを、機器ごとに設定できます。

NetFlowとパケットキャプチャは、何が違いますか?

パケットキャプチャはパケットそのもの(中身を含む)を記録するので、細かく調べられますが、データの量が非常に多くなります。NetFlowはパケットの中身を記録せず、フローごとのパケット数やバイト数などの要約だけを送るので、データの量を大きく減らせ、長い期間の傾向を見るのに向きます。暗号化された通信でも、アドレスやポート番号、量は分かります。

理解度チェック

SNMPで、ルータのインターフェースの受信バイト数を数える64ビットのカウンタを5分(300秒)ごとに読み出したところ、前回が 1,200,000,000、今回が 4,950,000,000 だった。この5分間の平均の受信速度に最も近いものはどれか。

  1. A12.5 Mbps
  2. B100 Mbps
  3. C500 Mbps
答えと解説を見る

正解:B. 100 Mbps

5分間に受信したのは 4,950,000,000 − 1,200,000,000 = 3,750,000,000 バイトで、ビットに直すと 3.75×10⁹ × 8 = 3×10¹⁰ ビットです。これを300秒で割ると 1×10⁸ bit/s、つまり100 Mbpsです。SNMPでは、管理する側(マネージャ)が機器のエージェントにMIBの値を問い合わせ、このようにカウンタの差から通信量を求めてグラフにします。32ビットのカウンタは 2^32 ≈ 4.29×10⁹ バイトで0に戻り、100 Mbpsでは約344秒で1周してしまうので、高速なインターフェースでは64ビットのカウンタを使います。

ルータを通る通信について、どの送信元と宛先の組み合わせ(アドレス、ポート番号、プロトコル)の通信が、どれだけのバイト数を占めているかを、通信のまとまりごとに集計して調べたい。用いるしくみとして最も適切なものはどれか。

  1. ASNMP
  2. Bsyslog
  3. CNetFlow(IPFIX)
答えと解説を見る

正解:C. NetFlow(IPFIX)

NetFlowやそれをもとに標準化されたIPFIXは、送信元と宛先のアドレスやポート番号、プロトコルが同じパケットのまとまり(フロー)ごとに、パケット数やバイト数、時刻などを記録して、収集用のサーバに送るしくみです。どの端末やアプリケーションが帯域を使っているか、ふだんと違う通信がないかを調べるのに使います。SNMPは、機器のインターフェースごとの通信量やCPUの使用率などの値を問い合わせたり、異常を通知(トラップ)させたりするプロトコルで、だれの通信かまでは分かりません。syslogは、リンクのダウンやログインなどの出来事を、文字のメッセージとして記録用のサーバに送るしくみです。

UDPの特徴として正しいものはどれか。

  1. Aコネクションを確立せず、再送や順序の制御をしないので、ヘッダが小さく、送るまでの待ちもない
  2. Bコネクションを確立し、届かなかったデータを再送して、受信側で順序もそろえる
  3. CIPアドレスを使わずに、MACアドレスだけで宛先の端末に届ける
答えと解説を見る

正解:A. コネクションを確立せず、再送や順序の制御をしないので、ヘッダが小さく、送るまでの待ちもない

UDPは、IPの上にポート番号と簡単な誤り検出(チェックサム)を加えただけの軽いプロトコルで、ヘッダは8バイトです(TCPはオプションなしで20バイト)。接続の手順がなく、届いたかの確認や再送もしないため、少し失われても遅れない方がよい音声通話やライブ映像、1回の問い合わせと応答で済むDNSなどに使われます。信頼性が必要なら、アプリケーションの側で補います。例えば、HTTP/3で使われるQUICは、UDPの上で再送や暗号化を実装しています。コネクションの確立、再送、順序の制御を行うのはTCPです。

ネットワークの設計と運用の練習問題へ

関連する用語の解説

SNMP
Simple Network Management Protocolの略。ルータやスイッチなどの機器の状態を監視・管理するためのプロトコル。管理する側(マネージャ)が機器のエージェントに、MIBとして決められた値(インターフェースの通信量のカウンタ、CPUの使用率など)を問い合わせ、機器は異常をトラップで知らせる。通信量は、カウンタの値を一定の間隔で読み、その差から求める。認証と暗号化が使えるSNMPv3が推奨される。
UDP
User Datagram Protocolの略。トランスポート層のコネクションレス型のプロトコル。ヘッダは8バイトで、ポート番号、長さ、チェックサムだけをもつ。接続の手順も、確認応答や再送も、順序の制御もしないので、遅れが小さい。DNSの問い合わせ、音声や映像の通話、オンラインゲーム、DHCP、QUICなどに使われる。
ポート番号
TCPやUDPで、端末の中のどのアプリケーション宛ての通信かを区別する0〜65535の番号。HTTPの80、HTTPSの443、DNSの53など、0〜1023はウェルノウンポートと呼ばれる。
パケット
通信で送るデータを一定の大きさ以下に区切り、宛先などの制御情報を書いたヘッダを付けたもの。1本の回線を多くの通信で分け合え(パケット交換)、誤りがあってもその部分だけ送り直せる。階層によって、IPではパケット、TCPではセグメント、イーサネットではフレームと呼び分けることが多い。PCI Expressやオンチップネットワークでも、データをパケットにして送る。
ルータ
異なるネットワークの間でパケットを中継する、ネットワーク層(第3層)の機器。受け取ったパケットの宛先IPアドレスを経路表(ルーティングテーブル)と照らし合わせ、次に渡すルータ(ネクストホップ)と出口のインターフェースを決めて送り出す。家庭用のルータは、NAPTやDHCPサーバ、ファイアウォールの機能もまとめてもつ。
SIEM(セキュリティ情報イベント管理)
Security Information and Event Managementの略。ファイアウォール、サーバ、EDR、クラウドのサービス、認証の基盤などのログを1か所に集めて形式と時刻をそろえ、複数の出来事を組み合わせたルール(相関分析)で攻撃の疑いを検知し、警告として示す仕組み。調査のためのログの検索や、規則で求められるログの長期の保存にも使われる。SOC(セキュリティオペレーションセンター)の分析者が監視に使う、中心的な道具の1つである。
TLS
Transport Layer Securityの略。通信の暗号化、改ざんの検出、証明書によるサーバの認証を行うプロトコル。HTTPSはHTTPをTLSで保護したもの。

関連する比較