今回はAzureから提供されるネットワーク監視・検証に役立つAzure Network Watcherを紹介します。Network Watcherには複数の機能があり、監視設定のほかトラブルシューティングやネットワークの検証に役立つ機能が提供されています。



Network Watcherは既定で有効

2018年11月からNetwork Watcherが既定で有効となる仕様に変更となりました。これにより、以前までサブスクリプション単位で行っていた有効化の設定が不要となりました。
参考:仮想ネットワークを含むサブスクリプションで Azure Network Watcher が既定で有効になります

機能一覧

Network Watcherのメニューには複数の機能があり、一部はLog Analyticsと連携するものも提供されています。以下は現時点でのNetwork Watcherのメニュー画面です。

トポロジー

仮想ネットワーク内にあるリソースの関係を表示できます。次の図では、仮想ネットワーク内に4つのサブネットと、2つのVM、VPNゲートウェイ、パブリックロードバランサー、NSG、UDR、パブリックIP、可用性セットがどのように紐づいているかを図示しています。
トポロジー図はポータル上からSVG形式のファイルでダウンロードすることが可能です。

接続モニター

ソースのVMから指定した宛先までの接続の到達性や待機時間を計測できます。宛先には同じサブスクリプション内のVMおよび手動で指定するIPアドレスとポート番号を明示します。ソースに指定するVMにはNetwork Monitorエージェントがインストールされます。

接続モニターで取得した平均応答時間やプローブ失敗率をAzure Monitorのメトリックとして利用することができます。それぞれ以下のシグナル名でアラートを設定できます。
平均応答時間:Probes Failed
プローブ失敗率:Round-trip Time

ネットワークパフォーマンスモニター

Log Analyticsのネットワーク監視ソリューション「Network Performance Monitor」へアクセスする項目です。こちらはOMSエージェント間でネットワークの接続性やExpressRouteの性能監視をする機能を備えています。
同じネットワーク監視のカテゴリに属するためか、Network Watcherのメニューに表示されるようになりました。機能としてNetwork Watcherの外にあるものなので詳細は別の機会に説明します。

IPフローの確認

Azure VMに割り当てられたNSGの検証を行うツールです。VMから送受信されるパケットの許可/拒否の状況を検証できます。アクセスが許可/拒否されたNSGのルールまで表示されます。

次ホップ

VMから指定した宛先IPへ接続するときのネクストホップを検証するツールです。VM(接続されているNIC)が保持しているルートテーブルからネクストホップを判断します。
ネクストホップの情報としてネクストホップする先の種類(Virtual Network/Virtual Network Gateway/Internet/etc…)とIPアドレス、ルートテーブルID(System Route/Gateway Route/etc…)が取得できます。

有効なセキュリティルール

VMのNICを指定して、適用されているNSGルールの一覧を確認できます。ソース/宛先としてグルーピングされている「仮想ネットワーク」などの細かいアドレスプレフィックスについては、各行をクリックすることで詳細を表示できます。


VPNのトラブルシューティング

VPNゲートウェイと接続の正常性を診断するツールです。診断結果はストレージアカウントに保存されます。正常性の診断実行には少し時間がかかります。最近診断結果ログにはリソースの正常性と、問題があった場合はそのエラー種類が出力されます。
最近仕様が変わり、VPNゲートウェイ側のsyslogのようなものが出力されるようになりました。VPNゲートウェイのトラブルシューティングにかなり役立ちそうです。
診断がサポートされているゲートウェイ種類はルートベースのVPNゲートウェイのみです。(ポリシーベースやExpressRouteはサポートされていません。)

パケットキャプチャ

ポータル上からVMを指定してパケットキャプチャを実行することができます。キャプチャファイル(.cap)はストレージアカウントかVMのローカルストレージ内に保存されます。IPアドレスやポート番号を指定して、取得するパケットをフィルタリングすることも可能です。フィルターは複数設定が可能です。
ゲストOSに入らずともパケットキャプチャできるのはいいですね。ログイン権限を渡したくない時のトラシューなどに使えそうです。

接続のトラブルシューティング

VM/アプリケーションゲートウェイのフロントIPからVM、もしくは指定したFQDN/IPアドレスに対してのTCP/ICMP接続性を確認できます。
到達の可否と接続時の待機時間、プローブ試行回数を取得できます。到達できなかったときは以下6種類の接続障害が返されます。

CPU CPU使用率が高騰している。
タイプ 説明
Memory メモリ使用率が高騰している。
GuestFirewall VMのファイアウォールによりトラフィックがブロックされている。
DNSResolution 送信先アドレスのDNS解決に失敗している。
NetworkSecurityRule NSGルールによりトラフィックがブロックされている。
UserDefinedRoute UDRもしくはシステムルートによりトラフィクがドロップしている。

使用量+クォータ

サブスクリプションで使用しているネットワーク関連リソースの使用状況とクォータを確認できます。大規模な構成になってくるとパブリックIPが頭打ちに…なんてこともあるので事前に確認したい項目です。クォータ引き上げの依頼も同画面からサポートリクエストをあげられます。

NSGフローログ

NSGを介した入出力するトラフィックのフローログを設定できます。フローログにはトラフィックフローに対してフローが処理されたNSGルール、送信元のIPアドレスとポート番号、宛先のIPアドレスとポート番号、TCP/UDP、トラフィックの方向(Inbound/Outbound)、トラフィックが許可されたかどうかが記録されます。
フローログはjson形式でストレージアカウントに出力されます。

診断ログ

診断ログの設定を行えます。NICやNSGなどネットワーク関連のリソースが表示されますが、リソースグループでフィルターするとネットワーク関連以外のリソースタイプも表示されたりします。機能としては「診断設定」と同じものだと思います。どちらから設定しても問題ないでしょう。

トラフィック分析

先ほど紹介したNSGフローログの設定で「トラフィック分析」を有効にしていると、Log Analyticsを利用したトラフィック分析機能を利用できます。
トラフィックを可視化し、悪意のある攻撃の規模や傾向を推測するのに役立ちます。

IPアドレスからジオマップ上にアクセス元の場所をマッピングすることもできます。グラフィカルな表示はジオマップのほか、仮想ネットワークごと、サブネットごとの単位で表示することも可能です。

通信しているホストごとや、利用されているアプリケーションごとの分析も自動で行われます。それぞれフローの総数とブロックされたフロー数、悪意のあるフロー数の統計を確認することができるので、これらをもとにNSGルールを更新するなど、セキュリティ対策に役立ちます。

おわりに

今回はNetwork Watcherの機能群を紹介しました。どれも深堀するとそれだけで記事になりそうなものなので、詳細まですべて説明できないのはご了承ください。ネットワーク関連のリソースはメトリックやログを取得しづらいのでこういったツールを活用して、迅速なトラブルシューティングや検証を進めていきたいですね。

この記事を書いた人

曽根悠斗
曽根悠斗
Azureやってるエンジニア
NWエンジニア⇒クラウドエンジニアへスキルアップし、
IaaSだけでなくAzureの各種サービスを幅広く扱えるように修行中
好きなAzureのサービスはAzure ADとNetwork Watcher
WVDやGlobal Reachなど新しいサービスを追わせてもらっています
真のAzureエキスパートになる日を目指して