Azure Network Watcherのご紹介:ネットワークの状態を把握・改善


Azure Network Watcher のご紹介:ネットワークの状態を把握・改善

はじめに

クラウドコンピューティングがエンタープライズITにおいて不可欠な要素となるにつれて、ネットワークはアプリケーションとサービスの提供において、その重要性を増しています。特にMicrosoft Azureのようなパブリッククラウド環境では、仮想ネットワーク(VNet)、サブネット、ネットワーク セキュリティ グループ(NSG)、ルートテーブル(UDR)、仮想ネットワーク ゲートウェイ、ロードバランサー、アプリケーション ゲートウェイなど、多種多様なネットワークコンポーネントが複雑に組み合わされて構成されます。

このような複雑な環境では、ネットワークの健全性、パフォーマンス、およびセキュリティを維持することが、アプリケーションの可用性とユーザーエクスペリエンスを保証するために極めて重要となります。しかし、ネットワーク接続の問題、予期しないトラフィックのルーティング、NSGルールの誤設定、ネットワークパフォーマンスの劣化などは、クラウド環境においても頻繁に発生しうる課題です。これらの問題を迅速に特定し、診断し、解決するためには、効果的なネットワーク監視および診断ツールが不可欠です。

そこで登場するのが、Azure Network Watcherです。Azure Network Watcherは、Azure仮想ネットワーク内のネットワークリソースを監視、診断、および可視化するための包括的なサービススイートです。Network Watcherを利用することで、ネットワークの状態を詳細に把握し、潜在的な問題を早期に発見し、効率的に解決することができます。

この記事では、Azure Network Watcherの各機能について、その目的、利用シナリオ、使い方、得られる情報などを詳細に解説します。また、これらの機能を組み合わせてネットワークの状態を把握し、問題発生時にどのように診断・改善を進めるかについても掘り下げていきます。約5000語のボリュームで、Network Watcherの導入から高度な活用方法までを網羅することを目指します。

1. Azure Network Watcherの概要

Azure Network Watcherは、Azure仮想ネットワークに関連する様々な診断および視覚化機能を提供するリージョンサービスです。これは仮想マシン(VM)のパフォーマンスを監視したり、OSレベルの診断を実行したりするサービスとは異なり、ネットワーク層に焦点を当てています。Network Watcherは、特定のAzureリソースグループ内で有効化され、そのリソースグループおよび関連する仮想ネットワーク内のネットワークトラフィックと構成に関する情報を提供します。

Network Watcherが解決する主な課題は以下の通りです。

  • ネットワーク接続の問題: 特定のVMが他のVMや外部サービスに接続できない原因を特定したい。
  • ルーティングの問題: トラフィックが期待通りのパスを通らず、予期しない宛先にルーティングされる理由を知りたい。
  • セキュリティルールの誤設定: NSGルールがトラフィックを意図せずブロックしているか、または不要なトラフィックを許可しているか確認したい。
  • ネットワークパフォーマンスの劣化: 遅延やパケットロスが増加している原因を特定したい。
  • ネットワークトラフィックの可視化: どのようなトラフィックがネットワークを流れているのか、許可/拒否されているトラフィックのパターンを把握したい。
  • ネットワーク構成の理解: 複雑なVNet、サブネット、NSG、UDR、ピアリングなどの関連性を視覚的に把握したい。

Network Watcherは、これらの課題に対応するために、以下のような主要機能を提供します。

  • IP フロー検証 (IP flow verify)
  • 次ホップ (Next hop)
  • 接続トラブルシューティング (Connection Troubleshoot)
  • 接続モニター (Connection Monitor)
  • パケット キャプチャ (Packet capture)
  • NSG フロー ログ (NSG Flow Logs) と Traffic Analytics
  • トポロジ (Topology)
  • セキュリティ グループ ビュー (Security group view)
  • VPN 診断 (VPN Diagnostics)
  • 診断ログ (Diagnostic Logs for Network Resources)

これらの機能は、単体で使用することも、組み合わせて使用することもできます。例えば、IPフロー検証でNSGがトラフィックをブロックしていることを確認した後、セキュリティグループビューで該当するNSGのルールを詳しく調べる、といった診断ワークフローが考えられます。

Network Watcherは、Azureのすべてのリージョンで利用可能ですが、提供される機能はリージョンによって異なる場合があります。料金は、使用する機能や収集・保存するデータの量によって発生します。特に、NSGフローログの処理(Traffic Analytics)や、収集したログやメトリックのStorage AccountやLog Analyticsワークスペースへの取り込み、保存、分析には別途コストがかかります。

2. Network Watcherの主要機能の詳細

ここでは、Azure Network Watcherが提供する主要な機能について、それぞれ掘り下げて解説します。

2.1. ネットワーク トラフィックの監視と診断

ネットワークトラフィックの挙動を理解し、接続性や到達性の問題を診断するための機能群です。

2.1.1. IP フロー検証 (IP flow verify)

目的:
IPフロー検証は、特定の仮想マシン(VM)のネットワークインターフェイス(NIC)に対して、指定した送信元IPアドレス、宛先IPアドレス、宛先ポート、およびプロトコルのトラフィックが、Azureネットワーク セキュリティ グループ(NSG)のルールによって許可されるか、それとも拒否されるかを確認するためのツールです。これは、NSGが意図通りに機能しているか、または通信を阻害していないかを診断する際に非常に役立ちます。

利用シナリオ:
* 特定のVMにリモートデスクトップ接続(RDP)やSSH接続ができない場合に、NSGがブロックしているかを確認する。
* WebサーバーVMに対して、外部または内部からHTTP/HTTPSアクセスが可能か、NSGルールが適切か検証する。
* アプリケーションサーバーVMがデータベースサーバーVMへの通信(特定のポート)を許可されているか確認する。
* 新しいNSGルールをデプロイする前に、そのルールが既存のトラフィックに与える影響をテストする。

使い方:
Azure portalのNetwork Watcherブレードから「IP フロー検証」を選択します。
以下の情報を指定します。
* サブスクリプション: 対象VMが含まれるサブスクリプション。
* リソース グループ: 対象VMが含まれるリソースグループ。
* 仮想マシン: 診断対象のVM。
* ネットワーク インターフェイス: 対象VMのNIC(通常はデフォルトが選択されます)。
* 方向: Inbound または Outbound。トラフィックの方向を指定します。
* プロトコル: TCP または UDP。
* ローカル IP アドレス: 対象NICのプライベートIPアドレス。
* ローカル ポート: 対象NIC上のローカルポート(アプリケーションがリッスンしているポート)。
* リモート IP アドレス: 通信相手のIPアドレス。
* リモート ポート: 通信相手のポート。

これらの情報を入力し、「チェック」を実行します。

出力結果の解釈:
IPフロー検証は、以下の情報を出力します。
* アクセス: トラフィックがNSGによって許可されるか(Allow)、拒否されるか(Deny)を示します。
* セキュリティ ルール: トラフィックのアクセスを決定したNSGルールの名前を示します。アクセスがAllowの場合は、どの許可ルールが適用されたか、Denyの場合は、どの拒否ルールが適用されたかを示します。
* 詳細: アクセスがDenyされた場合に、その理由(例: Traffic is denied by the default security rule DenyAllInbound)を示します。

出力結果が「アクセス: Deny」であり、セキュリティルールの名前が示されている場合、そのNSGルールが問題の原因である可能性が高いです。次に、そのNSGのルール構成を確認し、必要に応じてルールを修正する必要があります。もし「アクセス: Allow」が表示されても接続できない場合は、NSG以外の要因(OSファイアウォール、UDR、アプリケーション設定など)を調査する必要があります。

制限事項:
* IPフロー検証は、NSGルールのみを評価します。ユーザー定義ルート(UDR)やAzure Firewall、NVA(ネットワーク仮想アプライアンス)上のファイアウォールルールは評価しません。
* ステートフルなNSGの挙動(例: アウトバウンドで開始されたTCP接続に対するインバウンド戻りトラフィックの自動許可)は考慮されます。
* 診断対象はVMまたはVMSSインスタンスのNICに限られます。

IPフロー検証は、NSGに関連する接続問題を迅速に診断するための基本的なツールであり、トラブルシューティングの初期段階で非常に有用です。

2.1.2. 次ホップ (Next hop)

目的:
次ホップは、特定の仮想マシン(VM)から指定された宛先IPアドレスへのアウトバウンドトラフィックが、Azureのルーティングによって次にどこに転送されるか(次ホップ)を確認するためのツールです。これは、Azureのシステムルートやユーザー定義ルート(UDR)が期待通りに構成されているか、または予期しないルーティングが発生していないかを診断する際に役立ちます。

利用シナリオ:
* 特定の宛先IP(例: オンプレミスネットワーク上のサーバーIP)へのトラフィックが、VPNゲートウェイやExpressRouteゲートウェイに正しくルーティングされているか確認する。
* 特定のサブネットへのトラフィックが、仮想アプライアンス(NVA)にルーティングされるようにUDRを設定したが、それが正しく機能しているか検証する。
* VNetピアリング経由での通信が正しくルーティングされているか確認する。
* インターネットへのトラフィックが、デフォルトルートによってNVAまたはインターネットゲートウェイにルーティングされているか確認する。

使い方:
Azure portalのNetwork Watcherブレードから「次ホップ」を選択します。
以下の情報を指定します。
* サブスクリプション: 対象VMが含まれるサブスクリプション。
* リソース グループ: 対象VMが含まれるリソースグループ。
* 仮想マシン: 診断対象のVM。
* ネットワーク インターフェイス: 対象VMのNIC。
* 送信元 IP アドレス: 対象NICのプライベートIPアドレス。
* 宛先 IP アドレス: トラフィックの宛先IPアドレス。

これらの情報を入力し、「チェック」を実行します。

出力結果の解釈:
次ホップは、以下の情報を出力します。
* 次ホップの種類: トラフィックの転送先の種類を示します(例: VirtualNetworkGateway, VnetLocal, Internet, VirtualAppliance, Null)。
* 次ホップ IP アドレス: VirtualAppliance の場合、そのアプライアンスのプライベートIPアドレスを示します。それ以外の場合は通常0.0.0.0です。
* ルート テーブル Id: トラフィックのルーティングに使用されたルートテーブルのIDを示します(UDRが適用されている場合)。システムルートが使用された場合は表示されません。
* ルート: 適用されたルートの種類を示します(例: UserDefined または System)。

出力結果を見て、期待通りの次ホップの種類やIPアドレスが表示されているかを確認します。例えば、オンプレミスへのトラフィックを診断していて、次ホップの種類がVirtualNetworkGatewayではなくInternetになっていれば、ルーティング設定に問題があることが分かります。VirtualApplianceが次ホップになっている場合は、トラフィックが正しくNVAに転送されていることが確認できます。ルート テーブル Idが表示されている場合は、そのUDRの内容を確認して、想定通りのルールが適用されているか検証します。

制限事項:
* 次ホップは、単一のパケットが通過する最初のネットワークホップのみを評価します。宛先に到達するまでの全体のパスや、途中のデバイスでのルーティングは評価しません。
* NSGルールやOSファイアウォールは考慮しません。純粋にAzureのルーティング設定(システムルートとUDR)に基づいた判断を行います。

次ホップは、複雑なルーティング設定(VNetピアリング、VPN/ExpressRoute、NVAへの強制トンネルなど)を持つ環境でのルーティング問題を診断するための強力なツールです。

2.1.3. 接続トラブルシューティング (Connection Troubleshoot)

目的:
接続トラブルシューティングは、特定の仮想マシン(VM)から別のエンドポイント(VM、IPアドレス、FQDN、URLなど)へのTCP接続またはHTTP接続の到達可能性と、そのパス上の遅延(往復時間 – RTT)をエンドツーエンドで診断するためのツールです。これは、VMレベルで発生する広範な接続問題を特定する際に非常に役立ちます。IPフロー検証や次ホップが単一のネットワーク要素(NSGやルーティング)に焦点を当てるのに対し、接続トラブルシューティングはパス全体を評価します。

利用シナリオ:
* あるWebサーバーVMから別のAPIサーバーVMへのHTTPS接続が確立できない原因を特定する。
* VMからオンプレミスのデータベースへのTCP接続が確立できない場合に、ネットワークパス上のどの要素が問題を引き起こしているか診断する。
* VMから外部のサービス(例: storage.azure.com)への接続を確認し、パス上の問題を特定する。
* 特定のポートでの接続がタイムアウトする場合に、ネットワークまたはOSファイアウォール、あるいはアプリケーションの問題かを切り分ける。

使い方:
Azure portalのNetwork Watcherブレードから「接続トラブルシューティング」を選択します。
以下の情報を指定します。
* サブスクリプション: 対象VMが含まれるサブスクリプション。
* ソース: 診断対象のVMまたはVMSSインスタンス。ハイブリッド接続の場合は、Azure Arc対応サーバーなどを指定できます(プレビュー機能)。
* 宛先: 接続先のVM、IPアドレス、FQDN、またはURLを指定します。
* プロトコル: TCP または HTTP。URLを指定した場合はHTTP/HTTPSになります。
* 宛先ポート: TCPプロトコルの場合に指定します。

これらの情報を入力し、「チェック」を実行します。診断には数分かかる場合があります。診断結果はAzure Storage Accountにログとして出力されます(事前に設定が必要)。

出力結果の解釈:
接続トラブルシューティングは、パス上の各ホップの状態、遅延、および接続性に関する詳細な診断情報を提供します。出力は以下の要素を含みます。
* 接続の状態: Overall connection status (Reachable, Not Reachable, Unknown)。
* パス: ソースから宛先までのホップリスト。各ホップはIPアドレスとタイプ(例: VM, VPN Gateway, VNet peering link, Internetなど)を示します。
* ホップの状態: 各ホップにおける接続の状態と、問題がある場合はその理由(例: Dropped by NSG, Dropped by UDR, Firewall blockedなど)。
* 検査済みのネットワークセキュリティグループ (NSG): パス上の各ホップに関連するNSGが評価され、許可/拒否の状況が示されます。拒否された場合は、該当するNSGルールが示されます。
* 検査済みのユーザー定義ルート (UDR): パス上の各ホップに関連するUDRが評価され、ルーティングの結果が示されます。
* 往復時間 (RTT): ソースから宛先までの平均RTT。
* ログ: 詳細な診断情報が含まれるAzure Storage Accountへのリンク。

出力結果が「Not Reachable」で、特定のホップでパケットがドロップされていることが示されている場合、そのホップに関連するネットワークコンポーネント(NSG、UDR、Azure Firewall、NVAなど)に問題がある可能性が高いです。ホップの状態の説明や、検査済みのNSG/UDR情報から、具体的にどの設定が原因となっているかを特定できます。例えば、「Dropped by NSG」と表示されれば、該当NSGのルールを確認します。「Firewall blocked」と表示されれば、Azure FirewallまたはNVAの設定を確認します。

制限事項:
* 診断には数分かかる場合があります。リアルタイムの継続的な監視には向きません(継続的な監視にはConnection Monitorを使用します)。
* TCPまたはHTTP/HTTPSプロトコルに限定されます。ICMPやUDPなどは診断できません。
* 詳細なログはAzure Storage Accountに保存されます。

接続トラブルシューティングは、VM間の接続やVMと外部サービス間の接続がうまくいかない場合に、パス全体を診断し、問題の根本原因を特定するための強力なツールです。

2.1.4. 接続モニター (Connection Monitor)

目的:
接続モニターは、特定のソース(Azure VM、VMSS、Azure Arc対応サーバー、またはオンプレミスホスト上のLog Analyticsエージェント)から指定されたエンドポイント(Azure VM/VMSS、任意のネットワークエンドポイント – IP/FQDN/URL)への接続性を継続的に監視するサービスです。これにより、ネットワークパフォーマンス(遅延、パケットロス)のベースラインを確立し、パフォーマンスの劣化や到達性の低下を早期に検出できます。

利用シナリオ:
* プロダクション環境のアプリケーションで利用される主要な通信パス(例: WebサーバーからDBサーバー、アプリケーションサーバーから外部API)の健全性を継続的に監視する。
* ハイブリッド環境におけるAzureとオンプレミス間のVPN/ExpressRoute接続のパフォーマンスを監視し、問題発生時に迅速に検出する。
* ネットワークパフォーマンスのベースラインを確立し、ネットワーク変更やアプリケーションデプロイメントがパフォーマンスに与える影響を評価する。
* 特定のリージョンやネットワークパスにおける潜在的なネットワーク問題をプロアクティブに検出する。

使い方:
接続モニターは、Azure Monitorの機能として提供されますが、Network Watcherブレードから設定を開始することもできます。設定は主に以下の要素から構成されます。
1. 接続モニターを作成: Azure portalで「Connection Monitor」を検索するか、Network Watcherブレードから起動します。
2. テスト グループを追加: 監視対象のソースと宛先のグループを作成します。
* ソース: Azure VM/VMSS、Log Analyticsエージェントがインストールされたオンプレミスサーバー、またはAzure Arc対応サーバーを指定します。ソースは複数の異なるリージョンやVNetにわたって指定可能です。
* 宛先: Azure VM/VMSS、IPアドレス、FQDN、またはURLを指定します。宛先も複数の異なる場所に指定可能です。
3. テスト構成を追加: テストグループ内で、監視するプロトコル(TCP, ICMP, HTTP)、ポート、監視頻度、およびパフォーマンスの閾値(例: パケットロスが5%を超えたら警告、RTTが100msを超えたら警告)を設定します。複数のテスト構成を同じテストグループに追加できます。
4. データ分析とアラート: 収集されたメトリック(パケットロス、RTT、ホップカウント)はAzure Monitor MetricsおよびLog Analyticsワークスペースに送信されます。
* Azure Monitor Metrics: パフォーマンスメトリックをグラフ化して視覚化し、時間の経過に伴うトレンドを分析できます。閾値に基づいてアラートルールを設定できます。
* Log Analytics: 詳細なテスト結果ログをKusto Query Language (KQL) を使用してクエリし、より高度な分析やカスタムレポートを作成できます。

出力結果と分析:
接続モニターは、設定されたテスト構成に基づいて定期的に接続テストを実行し、以下のメトリックを収集します。
* 接続状態: テストが成功したか失敗したか。
* パケットロス: テスト中に失われたパケットの割合。
* 往復時間 (RTT): パケットがソースから宛先まで往復するのにかかった時間。
* ホップカウント: ソースから宛先までのパスにあるネットワークホップの数。

これらのメトリックは、Azure Monitorでグラフとして表示したり、アラートルールを作成したりするために利用できます。例えば、「特定のテストグループのパケットロスが過去10分間に3回以上5%を超えたらアラートを発生させる」といったルールを設定できます。

また、Connection Monitorはパスビューを提供し、各テストで検出されたネットワークパスと各ホップの状態を表示します。これにより、パフォーマンスの低下がパス上のどの部分(例: VPN Gateway、ISP、特定のルーター)で発生しているかを特定しやすくなります。

クラシックバージョンとの違い:
Network Watcherには以前からConnection Monitor (クラシック) が存在していましたが、新しいConnection MonitorはAzure Arc対応サーバーやオンプレミスホストをソースとしてサポートするなど、より多くの機能と高い柔軟性を提供します。クラシックバージョンを使用している場合は、新しいバージョンへの移行が推奨されます。

制限事項:
* ソースとして使用するVMまたはホストには、Azure Network Watcher拡張機能またはLog Analyticsエージェントがインストールされている必要があります。
* テスト頻度やデータ保持期間にはコストがかかります。
* 大規模な環境では、適切な数のテスト構成とグループを設計することが重要です。

Connection Monitorは、ネットワークの健全性とパフォーマンスをプロアクティブに監視し、ユーザーが問題を報告する前に問題を検出するための不可欠なツールです。

2.1.5. パケット キャプチャ (Packet capture)

目的:
パケット キャプチャは、特定の仮想マシン(VM)のネットワークインターフェイス(NIC)を通過するネットワークトラフィックを、指定された期間またはバイト制限に基づいてファイルにキャプチャする機能です。これは、ネットワークプロトコルの詳細な分析、アプリケーションレベルの通信問題の診断、またはセキュリティインシデント発生時の調査において、生パケットレベルの情報が必要な場合に非常に強力なツールとなります。

利用シナリオ:
* 特定のアプリケーションが期待通りのプロトコルやポートで通信しているか確認する。
* TLS/SSL接続の確立プロセスや、通信が暗号化されているか検証する。
* ネットワーク上でマルウェアや疑わしいアクティビティが発生していないか詳細に調査する。
* アプリケーションとバックエンドサービス間の具体的な通信内容(HTTPヘッダー、データベースクエリなど)を分析する(暗号化されていない場合)。
* 接続トラブルシューティングやIPフロー検証では解決できない、より低レベルのネットワーク問題(フラグメント化、再送信など)を診断する。

使い方:
Azure portalのNetwork Watcherブレードから「パケット キャプチャ」を選択します。
以下の情報を指定して、パケットキャプチャセッションを開始します。
* サブスクリプション: 対象VMが含まれるサブスクリプション。
* リソース グループ: 対象VMが含まれるリソースグループ。
* 仮想マシン: パケットをキャプチャするVM。
* ネットワーク インターフェイス: 対象VMのNIC。
* 保存先: キャプチャしたファイルを保存するAzure Storage AccountまたはBlob Storage。ファイルは.cap形式で保存されます。
* 期間: キャプチャを実行する最大時間(分)。
* バイト制限: キャプチャする最大バイト数(MB)。これらの制限に達するとキャプチャは自動的に停止します。
* フィルター: キャプチャするトラフィックを絞り込むためのフィルター条件を指定できます。プロトコル(TCP, UDP, ICMP, Any)、送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートなどの組み合わせで複数設定可能です。フィルターを使用することで、不要なトラフィックを除外し、目的のトラフィックだけを効率的にキャプチャできます。

設定後、「開始」をクリックすると、指定したVMにNetwork Watcher Agent拡張機能がインストールされ、パケットキャプチャが開始されます。キャプチャが完了すると、指定したStorage Accountにファイルがアップロードされます。

キャプチャファイルの分析:
保存された.capファイルは、WiresharkやMicrosoft Network Monitorなどのパケット分析ツールを使用して開くことができます。これらのツールを使用することで、パケットの各ヘッダー情報(MACアドレス、IPアドレス、ポート、フラグ、シーケンス番号など)や、プロトコルに応じたペイロード(アプリケーションデータ)を詳細に確認できます。フィルターを適用して特定のトラフィックのみを表示したり、統計情報を取得したりすることも可能です。

制限事項と考慮事項:
* パケットキャプチャを実行するには、対象VMにNetwork Watcher Agent仮想マシン拡張機能がインストールされている必要があります。通常は初回実行時に自動的にインストールされますが、OSの互換性やネットワーク設定によっては問題が発生する可能性があります。
* キャプチャされたパケットの量は、VMのネットワークトラフィック量に大きく依存します。フィルターを適切に使用しないと、短時間で大量のデータが生成され、Storage Accountの容量を圧迫したり、分析が困難になったりする可能性があります。
* キャプチャセッションは手動で停止するか、指定した期間またはバイト制限に達すると自動的に停止します。
* キャプチャ機能は、VMのNICを通過するトラフィックを対象とします。Azure Load BalancerやAzure Firewallのようなネットワークサービス内部のトラフィックを直接キャプチャすることはできません。

パケット キャプチャは、Network Watcherの中でも最も低レベルの詳細情報を提供する機能であり、他のツールで原因が特定できない複雑なネットワーク問題や、特定のプロトコル挙動の分析に不可欠です。

2.2. ネットワークのメトリックとログの可視化

ネットワークリソースから生成されるログやメトリックを収集・分析し、ネットワークの健全性、パフォーマンス、およびセキュリティ状況を把握するための機能群です。

2.2.1. NSG フロー ログ (NSG Flow Logs) と Traffic Analytics

目的:
NSGフローログは、ネットワーク セキュリティ グループ (NSG) を通過するIPトラフィックに関する情報を記録する機能です。これにより、どのトラフィックがNSGによって許可または拒否されたか、送信元/宛先IPアドレス、ポート、プロトコル、NSGルールの方向などが詳細に把握できます。これは、ネットワークアクティビティの監査、セキュリティポリシーの検証、脅威の検出、およびネットワークトラブルシューティングに不可欠なデータソースとなります。

NSGフローログ単体はJSON形式のログファイルですが、Network Watcherの重要な機能であるTraffic Analyticsと連携することで、これらのログデータを視覚化し、インタラクティブに分析することが可能になります。

利用シナリオ(NSGフローログ):
* NSGが適切に構成されているか確認し、意図しないトラフィックが通過またはブロックされていないか検証する。
* ネットワーク上の不審なアクティビティ(ポートスキャン、不正なIPからのアクセス試行など)を検出する。
* セキュリティインシデント発生時に、どのトラフィックが影響を受けたか、または攻撃者がどのパスを通ったか調査する。
* コンプライアンス要件を満たすために、ネットワークアクセスログを保持し、監査証跡を提供する。
* 特定のアプリケーションがどのサーバーやポートと通信しているかを把握する。

利用シナリオ(Traffic Analytics):
* VNet、サブネット、NSG間のトラフィック分布を視覚的に把握する。
* トラフィック量の多い会話ペア(送信元-宛先IP/ポート)を特定し、潜在的なボトルネックや予期しない通信を発見する。
* 特定の地域からのトラフィックや、特定のプロトコルのトラフィックをフィルタリングして分析する。
* NSGが最も多くのトラフィックを拒否している場所を特定し、セキュリティ構成の問題を発見する。
* 脅威インテリジェンスデータと連携して、既知の悪意のあるIPアドレスとの通信を検出する。
* アプリケーション層ではなく、ネットワーク層でのトラフィックパターンを理解する。

NSGフローログの使い方:
NSGフローログを有効化するには、Azure portalのNetwork Watcherブレードから「NSG フロー ログ」を選択します。
以下の設定を行います。
1. フローログの状態: オン に設定します。
2. Subscription および Resource Group: 対象のNSGが含まれるサブスクリプションとリソースグループ。
3. NSG: ログを有効化する対象のNSG。複数のNSGを選択できます。
4. バージョン: フローログのバージョンを選択します(推奨はバージョン2)。バージョン2は、バージョン1に加えて、トラフィックの許可/拒否ステータスやスループット情報などが含まれます。
5. トラフィック分析 (Traffic Analytics): 有効 に設定します。これにより、NSGフローログデータがLog Analyticsワークスペースに送信され、Traffic Analyticsによって処理・分析されます。Traffic Analyticsを有効化するには、既存のLog Analyticsワークスペースを選択するか、新しく作成します。
6. Log Analytics ワークスペース: フローログデータを送信するLog Analyticsワークスペースを選択します。
7. ストレージ アカウント: 生のフローログファイルを保存するStorage Accountを選択します(オプションですが推奨)。Log Analyticsへの送信と並行してStorage Accountにも保存できます。
8. 保持期間: Storage Accountにログを保存する場合の保持期間(日)を設定します。

設定を保存すると、指定したNSGを通過するトラフィックに関する情報が収集され始めます。

Traffic Analyticsの使い方:
Traffic Analyticsを有効化し、NSGフローログデータがLog Analyticsワークスペースに送信されるよう設定が完了すると、数時間後にデータが利用可能になります(初回処理には時間がかかる場合があります)。
Azure portalのNetwork Watcherブレードから「Traffic Analytics」を選択すると、Log AnalyticsワークスペースにリンクされたTraffic Analyticsのダッシュボードが表示されます。
このダッシュボードには、以下のような様々なビューがあります。
* Overview: 環境全体のトラフィックサマリー、主要なNSG、主要な会話ペアなどを表示します。
* Azure Virtual Networks: VNet間のトラフィックをトポロジマップで表示します。
* Subnets: サブネット間のトラフィックをトポロジマップで表示します。
* NSGs: 各NSGを通過するトラフィック、許可/拒否されたトラフィックの割合、主要なルールなどを表示します。
* Flows: トラフィックの方向(Inbound/Outbound)やIPバージョン(IPv4/IPv6)でフィルタリングして表示します。
* IP Addresses: 主要な送信元/宛先IPアドレスとそれに関連するトラフィックを表示します。
* Ports: 主要なポートとそれに関連するトラフィックを表示します。
* Traffic Path: 指定したソースIPから宛先IPまでのトラフィックパスをマップ上で表示します(パケットレベルのパス診断ではなく、フローログデータに基づく集計パス)。
* Malicious Flows: 脅威インテリジェンスデータと照合して、既知の悪意のあるIPアドレスとの通信を検出します。

これらのビューはインタラクティブであり、フィルターやドリルダウン機能を使用して特定のトラフィックや期間に焦点を当てて分析できます。

Log Analyticsでの分析:
Traffic Analyticsのダッシュボードは高レベルな視覚化を提供しますが、より詳細な分析やカスタムクエリが必要な場合は、Log Analyticsワークスペース内で直接NSGフローログデータをクエリします。ログデータはAzureNetworkAnalytics_CLテーブル(Traffic Analyticsによって正規化されたデータ)またはAzureDiagnosticsテーブル(生のフローログデータ、設定による)に保存されます。
Kusto Query Language (KQL) を使用して、特定の時間範囲のトラフィック、特定のIPアドレスからの接続試行、最も頻繁に拒否されたトラフィックなどを抽出、集計、分析できます。

ログデータの構造 (バージョン2):
バージョン2のNSGフローログエントリは、以下の主要なフィールドを含みます。
* Time: ログが記録されたタイムスタンプ。
* SystemId, VMName, SubnetName, NSGId: 関連するAzureリソースの識別情報。
* MacAddress: NICのMACアドレス。
* Flows: トラフィックフローの詳細の配列。
* Rule: トラフィックに一致したNSGルールの名前。
* Flows: フローの詳細の配列。
* FlowTuple: カンマ区切りの文字列形式のタプル。{CreationTime} {Protocol} {SourceIp} {DestinationIp} {SourcePort} {DestinationPort} {FlowDirection} {FlowState} {Packets} {Bytes}
* CreationTime: フローが作成されたエポック時間(秒)。
* Protocol: トラフィックのプロトコル(TCP/UDP/ICMPなど)。
* SourceIp, DestinationIp, SourcePort, DestinationPort: 送受信元のIPアドレスとポート。
* FlowDirection: I (Inbound) または O (Outbound)。
* FlowState: B (Begin), C (Continue), E (End)。TCP接続の状態を示します。バージョン2から追加。
* Packets: フローの開始から最後のログエントリまでのパケット数。バージョン2から追加。
* Bytes: フローの開始から最後のログエントリまでのバイト数。バージョン2から追加。
* FlowStateE のエントリは、TCP接続の終了時に記録され、その接続全体のパケット数とバイト数を含みます。

この詳細なデータ構造により、ネットワークのトラフィックパターン、スループット、接続のライフサイクルなどを詳細に分析できます。

価格に関する考慮事項:
* NSGフローログを有効化すること自体には通常料金はかかりません(ただし、リージョンによっては異なる場合があります)。
* 生のフローログファイルをStorage Accountに保存する場合、Storageの使用量に対して料金が発生します。
* NSGフローログデータをLog Analyticsワークスペースに送信する場合、データの取り込み量と保持期間に対してLog Analyticsの料金が発生します。
* Traffic Analyticsを有効化する場合、処理されるフローログデータ量に基づいて料金が発生します。

大規模な環境でNSGフローログとTraffic Analyticsを使用する場合、これらのコストが無視できない額になる可能性があるため、ログレベル、保持期間、対象NSGなどを適切に設計することが重要です。

制限事項:
* NSGフローログはNSGを通過するトラフィックのみを記録します。同じサブネット内のVM間通信(NSGが適用されていない場合)や、VM内部のトラフィックは記録されません。
* Traffic Analyticsは、NSGフローログデータがLog Analyticsワークスペースに送信されてから処理されるため、リアルタイムの分析には向きません。通常、データは数分から数時間遅延して表示されます。
* Traffic Analyticsは、フローログデータに基づいた集計分析を提供します。個々のパケットレベルの詳細はパケットキャプチャが必要です。

NSGフローログとTraffic Analyticsの組み合わせは、Azureネットワークにおけるトラフィックの可視化、監視、およびセキュリティ監査のための最も強力なツールの一つです。

2.2.2. 診断ログの収集と分析 (Diagnostic Logs for Network Resources)

目的:
Azure Load Balancer、Application Gateway、VPN Gateway、ExpressRoute circuits、Azure Firewallなどの多くのAzureネットワークリソースは、自身の状態、パフォーマンス、およびアクティビティに関する診断ログ(またはリソースログ)を生成します。これらのログを収集し、分析することで、個々のネットワークコンポーネントの健全性、使用状況、および潜在的な問題を診断できます。

利用シナリオ:
* Azure Load Balancerのバックエンドプールの健全性、接続数、スループットを監視する。
* Application Gatewayのパフォーマンスメトリック(スループット、失敗した要求数、HTTTPステータスコード)や、WAFログを分析する。
* VPN Gatewayのトンネル状態、接続数、帯域幅使用量、およびエラーイベントを監視する。
* ExpressRoute回路の回線状態、帯域幅使用量、パケットドロップ率などを監視する。
* Azure Firewallのログ(ネットワーク規則ログ、アプリケーション規則ログ、脅威インテリジェンスログ)を分析し、セキュリティイベントやトラフィックパターンを把握する。
* 特定のネットワークリソースで発生した構成変更や管理操作を追跡する(Activity Log)。

使い方:
診断ログを収集するには、対象となる各ネットワークリソースの設定ブレードから「診断設定」を選択します。
以下の設定を行います。
1. 診断設定を追加: 設定の名前を指定します。
2. ログとメトリックのカテゴリ: 収集したいログカテゴリ(例: Application GatewayのAccess Logs, Performance Logs, Firewall Logs)およびメトリックカテゴリ(例: AllMetrics)を選択します。利用可能なカテゴリはリソースの種類によって異なります。
3. 宛先の詳細: 収集したログ/メトリックの送信先を指定します。複数の宛先を選択できます。
* Log Analytics ワークスペースへの送信: 推奨される宛先です。Log Analyticsで複数のリソースからのログを一元的に収集し、Kusto Query Language (KQL) を使用して強力なクエリや分析、ダッシュボード作成が可能です。Azure Monitor Alertsとの連携も容易です。
* ストレージ アカウントへのアーカイブ: 生のログファイルを長期保存する場合に使用します。監査やコンプライアンス要件を満たすのに役立ちます。
* イベント ハブへのストリーム: リアルタイムまたはニアリアルタイムでログデータを外部システム(SIEM、カスタムアプリケーションなど)に送信する場合に使用します。

設定を保存すると、指定した宛先へのログ/メトリックの送信が開始されます。

Log Analyticsでの分析:
ログデータがLog Analyticsワークスペースに送信されると、リソースの種類やログカテゴリに応じたテーブルに保存されます(例: Application GatewayログはAzureDiagnosticsまたはリソース固有のテーブル、Azure FirewallログはAzureDiagnosticsまたはAzureFirewall*テーブルなど)。
Log Analyticsワークスペースの「ログ」ブレードを開き、KQLを使用してクエリを実行することで、特定の条件に一致するログエントリを検索、フィルタリング、集計、グラフ化できます。

例(Application GatewayのHTTPステータスコードの内訳を分析するクエリ):
kql
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayAccessLogs"
| where TimeGenerated > ago(24h)
| summarize count() by httpStatus_d

例(Azure Firewallで拒否されたトラフィックを分析するクエリ):
kql
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "AzureFirewallNetworkRule"
| where TimeGenerated > ago(24h)
| where FirewallAction_s == "Deny"
| summarize count() by Protocol_s, SourceIp_s, DestinationIp_s, DestinationPort_d

これらのクエリを基に、ダッシュボードを作成したり、特定のアラート条件(例: 失敗した要求率が高い、VPNゲートウェイの切断イベントが多発する)を設定したりできます。

Network Watcherとの連携:
Network Watcherのポータルブレードには、「診断ログ」というセクションがあり、そこから主要なネットワークリソース(Load Balancer, Application Gateway, VPN Gateway, ExpressRoute circuitsなど)の診断設定を構成するためのインターフェイスにアクセスできます。これは、個々のリソースブレードに移動することなく、ネットワーク関連の診断設定を一元的に管理するための便利な入口となります。ただし、実際のログデータの分析は通常、Log Analyticsワークスペースで行います。

価格に関する考慮事項:
* 診断設定を有効化すること自体に料金はかかりません。
* 収集されるログやメトリックの量に応じて、Storage Account、Log Analytics、またはEvent Hubsの使用料金が発生します。特にLog Analyticsへのデータ取り込みは、データ量に比例してコストがかかります。

Network Watcherの診断ログ機能は、個々のネットワークコンポーネントレベルでの詳細な監視とトラブルシューティングを可能にし、システム全体の健全性を維持するために重要です。

2.3. ネットワーク トポロジと構成の可視化

複雑なAzureネットワーク環境を視覚的に理解し、リソース間の関連性を把握するための機能です。

2.3.1. トポロジ (Topology)

目的:
トポロジ機能は、指定したリソースグループ内のAzureネットワークリソース(仮想マシン、仮想ネットワーク、サブネット、ネットワーク インターフェイス、ネットワーク セキュリティ グループ、ロード バランサー、アプリケーション ゲートウェイ、VPN ゲートウェイ、VNet ピアリングなど)とそれらの間の関連性をグラフ形式で視覚化します。これにより、複雑なネットワーク構成を一目で把握し、リソース間の依存関係や接続性を理解するのに役立ちます。

利用シナリオ:
* 新しい環境のデプロイメントが想定通りの構成になっているか確認する。
* 特定のVMがどのサブネットに属し、どのNSGやロードバランサーに関連付けられているかを確認する。
* VNetピアリングが正しく設定され、VNet間が接続されているか視覚的に確認する。
* ネットワークトラブルシューティングの開始点として、影響を受けるリソースとその周囲の環境を把握する。
* ネットワーク構成の変更を行う前に、その変更が他のリソースに与える影響を理解する。

使い方:
Azure portalのNetwork Watcherブレードから「トポロジ」を選択します。
以下の情報を指定します。
* サブスクリプション: 対象のリソースが含まれるサブスクリプション。
* リソース グループ: トポロジを表示したいリソースグループ。

設定後、「生成」をクリックすると、指定したリソースグループ内のネットワーク関連リソースとそれらの間の接続(例: VMからNIC、NICからサブネット、サブネットからVNet、VNetからNSG、VNetからピアリングリンクなど)を示すグラフが表示されます。

出力結果の解釈:
表示されるグラフは、リソースをノードとして、関連性を線として表現します。
* ノード: 各アイコンは特定のリソースタイプ(VM、VNet、NSGなど)を表します。ノードをクリックすると、そのリソースの詳細情報(IPアドレス、IDなど)が表示され、診断ツール(IPフロー検証、セキュリティグループビューなど)へのリンクが提供される場合があります。
* 線: ノード間の接続や関連性を示します。線の種類や色によって、関連性(例: NICがサブネットにアタッチされている、NSGがサブネットに関連付けられている)や、場合によっては接続状態(例: ピアリングの状態)が表現されます。

グラフはズームイン/ズームアウトしたり、レイアウトを変更したりして、より見やすく調整できます。また、特定の種類のノードや接続を非表示にするフィルター機能もあります。

制限事項:
* トポロジは静的な構成スナップショットを視覚化します。リアルタイムのトラフィックフローやパフォーマンス情報を示すものではありません。
* 表示されるリソースは、指定したリソースグループ内に存在する、Network Watcherが認識できるネットワーク関連リソースに限定されます。リソースグループを跨る関連性(例: 別のリソースグループにあるピアリング先VNetの詳細)は、リンクとして表示されるだけで、その詳細な内部トポロジまでは表示されない場合があります。
* 非常に大規模または複雑なリソースグループの場合、生成されるトポロジグラフが大きすぎて見づらくなることがあります。

トポロジ機能は、複雑化しがちなAzureネットワーク構成を視覚的に理解するための優れた出発点となります。

2.4. セキュリティ監視

ネットワークセキュリティに関連する設定を確認し、ポリシーの適用状況を把握するための機能です。

2.4.1. セキュリティ グループ ビュー (Security group view)

目的:
セキュリティ グループ ビューは、特定の仮想マシン(VM)のネットワークインターフェイス(NIC)に適用されているネットワーク セキュリティ グループ(NSG)とそのセキュリティルールを、サブネットレベルとNICレベルの両方からまとめて表示する機能です。また、複数のNSGが適用されている場合の、ルール評価の順序と、各ルールがトラフィックに与える影響(許可/拒否)を視覚的に確認できます。

利用シナリオ:
* 特定のVMに対して、どのNSGルールが最終的に適用されるかを確認する。
* なぜ特定のトラフィックがVMに到達しないのか、またはVMから出られないのか、NSGルールの構成上の問題点を特定する。
* サブネットに適用されているNSGとNICに適用されているNSGの両方がある場合に、ルールの評価順序を理解する。
* デフォルトのセキュリティルールがトラフィックにどのように影響しているか確認する。
* 新しいNSGルールを作成または変更する前に、そのルールが既存のトラフィックに与える影響を推測する。

使い方:
Azure portalのNetwork Watcherブレードから「セキュリティ グループ ビュー」を選択します。
以下の情報を指定します。
* サブスクリプション: 対象VMが含まれるサブスクリプション。
* リソース グループ: 対象VMが含まれるリソースグループ。
* 仮想マシン: 診断対象のVM。

設定後、「生成」をクリックすると、指定したVMのNICに関連付けられているNSG情報が表示されます。

出力結果の解釈:
出力は、以下の要素を含みます。
* 仮想マシン: 対象のVM情報。
* ネットワーク インターフェイス: 対象のNIC情報。
* NICに適用されているNSG: NICに直接関連付けられているNSGがある場合、そのNSG名が表示されます。
* サブネットに適用されているNSG: NICが所属するサブネットに関連付けられているNSGがある場合、そのNSG名が表示されます。
* 有効なセキュリティ ルール: 最も重要な情報です。NICに最終的に適用されるインバウンドとアウトバウンドのセキュリティルールリストが表示されます。リストは評価順序(優先度)に従って並べられており、各ルールに対して、方向、プロトコル、送信元/宛先(IPアドレス/ポート)、アクション(Allow/Deny)、優先度、およびそのルールがサブネットまたはNICのどちらに適用されたかが示されます。デフォルトルールも含まれます。

ルールの評価順序:
Azureでは、VMのNICに対するトラフィックには、サブネットに適用されたNSGとNICに適用されたNSGの両方が存在する場合、以下の順序でルールが評価されます。
1. インバウンド トラフィック: まずサブネットに適用されたNSGルールが評価され、次にNICに適用されたNSGルールが評価されます。いずれかの段階でDenyルールに一致した場合、その時点でトラフィックはドロップされます。許可されるためには、サブネットNSGとNIC NSGの両方で許可される必要があります。
2. アウトバウンド トラフィック: まずNICに適用されたNSGルールが評価され、次にサブネットに適用されたNSGルールが評価されます。いずれかの段階でDenyルールに一致した場合、その時点でトラフィックはドロップされます。許可されるためには、NIC NSGとサブネットNSGの両方で許可される必要があります。

セキュリティ グループ ビューでは、この評価順序に従って並べられた「有効なセキュリティ ルール」のリストが表示されるため、特定のトラフィックがどのルールによって最終的に許可または拒否されるかを明確に理解できます。例えば、特定のインバウンドトラフィックが拒否されている場合、有効なセキュリティルールリストを上から見ていき、最初に一致したDenyルールが原因であることが分かります。

IPフロー検証との組み合わせ:
セキュリティ グループ ビューは、IPフロー検証と組み合わせて使用することで、さらに効果的な診断が可能です。IPフロー検証で特定のトラフィックがNSGによって拒否されたことが分かったら、セキュリティ グループ ビューを使用して、拒否の原因となったNSGルールが具体的にどのルールであるか、そしてそのNSGがVMのNICまたはサブネットのどちらに適用されているかを確認できます。

制限事項:
* セキュリティ グループ ビューは、NSGルールのみを評価します。Azure FirewallやNVA上のファイアウォールルール、OSファイアウォールは考慮しません。
* これは静的な構成ビューであり、特定のトラフィックフローが実際に通過したかどうかは示しません(それはNSGフローログの領域です)。

セキュリティ グループ ビューは、VMレベルでNSG構成を理解し、NSGに関連する接続問題を診断するための不可欠なツールです。

2.5. VPN 診断 (VPN Diagnostics)

目的:
VPN 診断は、Azure VPN GatewayとオンプレミスのVPNデバイス間のサイト間(Site-to-Site)VPN接続に関する診断情報を提供する機能です。これにより、VPNトンネルが確立されているか、切断されている場合はその原因、パフォーマンス(遅延、パケットロス)、および関連するログ情報を確認できます。

利用シナリオ:
* Azureとオンプレミス間のSite-to-Site VPNトンネルがダウンしている原因を診断する。
* VPN接続のパフォーマンスが期待よりも低い場合に、遅延やパケットロスが発生していないか確認する。
* VPN Gatewayに関連するアラート(例: トンネル切断)が発生した場合に、詳細な診断情報を収集する。
* VPN Gatewayの構成変更や、オンプレミスVPNデバイスの変更を行った後に、接続が正常か確認する。

使い方:
Azure portalのNetwork Watcherブレードから「VPN 診断」を選択します。
以下の情報を指定します。
* サブスクリプション: 対象のVPN Gatewayが含まれるサブスクリプション。
* リソース グループ: 対象のVPN Gatewayが含まれるリソースグループ。
* VPN Gateway: 診断対象のVPN Gateway。
* 期間: 診断情報を取得する期間を指定します。

設定後、「診断の開始」をクリックすると、指定した期間の診断レポートが生成されます。

出力結果の解釈:
診断レポートには、以下のような情報が含まれます。
* トンネルの状態: 各VPNトンネルの現在の状態(接続済み、切断済みなど)。切断されている場合は、エラーメッセージや理由コードが表示されることがあります。
* トンネル イベント: トンネルの確立、切断、再ネゴシエーションなどのイベント履歴。
* 接続情報: 接続数、帯域幅使用量などの統計情報。
* メトリック: パケットドロップ率、遅延などのパフォーマンスメトリック(利用可能な場合)。
* ログ: VPN Gatewayに関連する診断ログへのリンク。これらのログには、IKE/IPsecネゴシエーションの詳細やエラー情報が含まれていることが多く、高度なトラブルシューティングに役立ちます。

診断レポートから、トンネルが切断されている具体的な理由コードやエラーメッセージを確認し、オンプレミスVPNデバイス側の設定(共有キー、IPsec/IKEパラメーター、ファイアウォールルールなど)や、Azure側の設定(ローカルネットワークゲートウェイ、接続リソースなど)に問題がないか調査を進めることができます。パフォーマンスの問題が示されている場合は、オンプレミス側のインターネット接続や、Azure側のVNet Gateway SKU、または中間ネットワークパスに問題がある可能性を考慮します。

制限事項:
* VPN診断は主にSite-to-Site VPN接続に焦点を当てています。Point-to-Site VPN接続やExpressRoute Directなどの診断機能は含まれません(ExpressRouteについては診断ログ機能を使用します)。
* 提供される情報の詳細度は、VPN Gatewayの種類や構成によって異なる場合があります。
* 詳細なログ情報は、VPN Gatewayの診断設定を有効化し、Log Analyticsなどに送信している場合にのみ利用できます。

VPN 診断は、Azureハイブリッド接続において最も一般的な問題の一つであるVPN接続の問題を診断するための専用ツールであり、迅速な問題解決に貢献します。

3. Network Watcherの活用シナリオ

Azure Network Watcherの各機能を単独で使用するだけでなく、組み合わせて使用したり、特定のシナリオで活用したりすることで、ネットワークの状態把握と改善をより効果的に行うことができます。ここでは、いくつかの典型的な活用シナリオを紹介します。

3.1. ネットワーク接続の問題診断

最も一般的なシナリオです。VMが他のVMや外部サービスに接続できない場合に、以下のツールを組み合わせて診断します。

  1. 基本的な確認: まず、OSファイアウォール(Windows Firewall, iptablesなど)が通信をブロックしていないか確認します。pingやtracerouteコマンド(可能であれば)で基本的なIPレベルの到達性を確認します。
  2. NSGの問題切り分け: IPフロー検証を使用して、指定したプロトコルとポートのトラフィックが対象VMのNICに対してNSGによって許可されているか確認します。拒否されている場合は、どのNSGのどのルールによって拒否されているかが分かります。
  3. NSGルールの詳細確認: IPフロー検証で特定されたNSGまたはVMに適用されているNSG全体の設定を、セキュリティ グループ ビューを使用して確認します。これにより、拒否の原因となったルールの詳細や、複数のNSGが適用されている場合の評価順序を理解できます。必要に応じて、NSGルールを修正します。
  4. ルーティングの問題切り分け: IPフロー検証で「Allow」と表示されるにも関わらず接続できない場合、次にルーティングを確認します。次ホップを使用して、対象VMから宛先IPアドレスへのトラフィックが意図した次ホップ(例: 別のVM、VPN Gateway、NVA、インターネット)にルーティングされているか確認します。予期しない次ホップが表示された場合は、UDRの設定を確認・修正します。
  5. エンドツーエンドのパス診断: NSGやルーティングが正しくても接続できない場合、またはパス上のどこに問題があるか不明な場合は、接続トラブルシューティングを使用します。ソースVMから宛先(VM, IP, FQDN, URL)へのTCP/HTTP接続をテストし、パス上の各ホップにおける到達性、遅延、およびドロップの原因(NSG, UDR, ファイアウォールなど)を詳細に診断します。
  6. パケットレベルの分析: 接続トラブルシューティングでも原因が特定できない、または特定のアプリケーションプロトコルの問題が疑われる場合は、パケット キャプチャを実行します。対象VMのNICでトラフィックをキャプチャし、Wiresharkなどで分析して、より低レベルのネットワーク問題(再送信、リセット、特定のプロトコルエラーなど)を診断します。
  7. 継続的な監視: 特定の重要な接続パスについては、Connection Monitorを設定し、パケットロスや遅延の増加を継続的に監視し、問題発生時にプロアクティブにアラートを受け取れるようにします。

3.2. NSGルールの検証と監査

NSGルールがセキュリティポリシーに準拠しているか、または意図しないアクセスを許可/拒否していないか検証・監査するシナリオです。

  1. 構成の確認: セキュリティ グループ ビューを使用して、特定のVMに適用されているすべてのNSGとそのルールを一覧表示し、手動または自動化されたスクリプトで構成を確認します。
  2. ライブトラフィックの監視: NSGフローログを有効化し、Traffic Analyticsを使用して、NSGを通過する実際のトラフィックを監視します。これにより、許可/拒否されたトラフィックのパターン、送信元/宛先IP、ポート、および一致したルールを確認できます。例えば、本来許可されるべきでないIPアドレスからのアクセスが許可されている、または不必要なポートへのトラフィックが許可されている、といった問題を発見できます。
  3. 拒否されたトラフィックの分析: Traffic Analyticsで、Denyされたトラフィックが多いNSGやルールを特定します。これにより、誤ってトラフィックをブロックしているNSGルールを発見し、アプリケーションの可用性に影響を与える問題を修正できます。
  4. 脅威の検出: Traffic Analyticsの悪意のあるフロービューや、Log Analyticsでのクエリを使用して、既知の悪意のあるIPアドレスとの通信試行を検出します。

3.3. ネットワークパフォーマンスのベースライン確立と監視

ネットワークパフォーマンスがアプリケーションの要件を満たしているか確認し、パフォーマンス劣化を早期に検出するシナリオです。

  1. ベースライン測定: アプリケーションのピーク時や通常時のネットワークパフォーマンス(RTT、パケットロス)を、Connection Monitorを使用して測定し、ベースライン値を確立します。
  2. 継続的な監視とアラート: Connection Monitorを使用して、主要な通信パスのパフォーマンスを継続的に監視します。確立したベースラインやアプリケーションの要件に基づいて閾値を設定し、パフォーマンスが閾値を超えた場合にアラートを発生させます。
  3. パフォーマンス問題の診断: アラートが発生した場合、Connection Monitorの詳細ビューで、パフォーマンスが低下しているパスやホップを特定します。必要に応じて、診断ログ(VPN Gateway, ExpressRouteなど)やパケットキャプチャを使用して、問題の根本原因(例: ISP経路の問題、VPN Gatewayの過負荷、特定のデバイスでのパケットドロップ)をさらに詳しく調査します。

3.4. ハイブリッド接続の監視と診断

Azureとオンプレミス環境間のVPNやExpressRoute接続の健全性、パフォーマンス、および接続性に関するシナリオです。

  1. VPN接続の診断: VPN 診断を使用して、Site-to-Site VPNトンネルの接続状態やイベント、パフォーマンス情報を確認します。トンネルがダウンしている場合は、エラーメッセージやログ情報を分析して原因を特定します。
  2. ExpressRouteの診断: ExpressRoute回線に関連する診断ログ(Log Analyticsに送信)を分析して、回線状態、帯域幅使用量、管理上のイベントなどを監視します。メトリック(Log AnalyticsまたはAzure Monitor Metrics)を使用して、帯域幅利用率やパケットドロップ率などを監視し、パフォーマンス問題を検出します。
  3. ハイブリッド接続のパフォーマンス監視: Connection Monitorを使用して、オンプレミスホスト(Log Analyticsエージェントをインストール)からAzure VMへの接続、またはAzure VMからオンプレミスホストへの接続を継続的に監視します。これにより、VPN/ExpressRoute回線を含むハイブリッドネットワークパスの遅延やパケットロスを把握し、パフォーマンス問題を早期に検出します。

3.5. ネットワーク構成の変更管理と監査

ネットワーク構成の変更が意図通りに行われたか確認し、予期しない変更や誤設定を検出するシナリオです。

  1. 構成の視覚化: トポロジ機能を使用して、リソースグループ内のネットワーク構成の現在の状態を視覚的に確認し、変更前後の状態と比較します。
  2. Activity Logの監査: Azure Activity Logを監視し、ネットワークリソース(NSG、UDR、VNet、Gatewayなど)に対する構成変更イベントを追跡します。Log Analyticsに送信しておけば、特定の期間に行われたすべてのネットワーク関連の変更操作を簡単に検索・分析できます。Network Watcher自体の有効化/無効化や設定変更もActivity Logに記録されます。
  3. NSGフローログによる影響確認: NSGルールやUDRなどの変更を行った後、NSGフローログとTraffic Analyticsを使用して、実際のトラフィックフローが変更によってどのように影響を受けたかを確認します。例えば、新しいNSGルールが正しくトラフィックを許可/拒否しているか検証できます。

4. Network Watcherの実装と管理

Azure Network Watcherを効果的に利用するためには、その実装と管理に関するいくつかの考慮事項があります。

4.1. Network Watcherの有効化

Network Watcherは、Azureのサブスクリプションまたは特定のリソースグループ単位で有効化されます。Network Watcherを有効化すると、そのリージョン内にNetworkWatcherRGという名前のリソースグループが自動的に作成され、Network Watcherサービスのリソースがデプロイされます。診断対象となるVMやその他のネットワークリソースがNetwork Watcherが有効化されているリージョンに存在する場合、その診断機能を利用できるようになります。

ほとんどの機能はNetwork Watcherが有効化されているリージョン内のリソースに対して利用可能ですが、NSGフローログやConnection Monitorのように、特定のサブスクリプションやVM/ホストに対して別途設定が必要な機能もあります。

Azure portal、PowerShell、Azure CLI、またはREST APIを使用してNetwork Watcherを有効化できます。大規模な環境では、管理スクリプトやAzure Policyを使用して、必要なリージョンでNetwork Watcherを自動的に有効化することを検討すると良いでしょう。

4.2. 必要なアクセス許可 (RBAC)

Network Watcherの機能を利用するには、適切なAzureロールベースのアクセス制御 (RBAC) 権限が必要です。通常、Network Watcherの機能を使用するユーザーまたはサービスプリンシパルは、以下の権限を持つ必要があります。
* 対象となるリソース(VM、NSG、VNetなど)に対する読み取り権限 (Microsoft.Network/*/read)。
* 使用するNetwork Watcher機能に応じた特定のアクション権限 (Microsoft.Network/networkWatchers/*/action)。例えば、IPフロー検証にはMicrosoft.Network/networkWatchers/runIpFlowVerify/actionが必要です。
* 診断結果を保存するStorage AccountやLog Analyticsワークスペースに対する書き込み権限(必要な場合)。

Network Contributor ロールは、Network Watcherのすべての機能を使用するための十分な権限を提供します。ただし、最小権限の原則に基づき、必要に応じてカスタムロールを作成し、特定の機能に限定された権限を付与することも検討できます。

4.3. ポータル、PowerShell、Azure CLI、REST APIによる操作

Network Watcherのすべての機能は、Azure portalのユーザーインターフェイスを通じて利用できます。これは手動での診断や視覚的な分析に便利です。

しかし、診断タスクの自動化、スクリプト化、または大規模な環境での一括操作には、PowerShell、Azure CLI、またはREST APIを使用することが一般的です。例えば、複数のVMに対して接続トラブルシューティングを自動的に実行するスクリプトを作成したり、すべてのNSGに対してフローログを有効化したりといったタスクをこれらのツールで実行できます。公式ドキュメントには、各ツールの詳細なコマンド例やAPIリファレンスが提供されています。

4.4. 自動化とスクリプト化

Network Watcherの機能を自動化することで、日々の運用タスクを効率化し、プロアクティブな監視体制を構築できます。
* 定期的な診断レポート: Azure AutomationrunbookやAzure Functionsを使用して、特定の時間帯に接続トラブルシューティングやVPN診断を定期的に実行し、結果をレポートとして出力する。
* 構成変更後の検証: Azure Event GridやAzure Functionsを使用して、NSGやUDRなどのネットワーク構成変更イベントをトリガーとして、関連するVMに対してIPフロー検証や次ホップ診断を自動的に実行し、構成が意図通りであることを検証する。
* 大規模なフローログ有効化: PowerShellまたはAzure CLIスクリプトを使用して、特定のタグが付与されたすべてのNSGに対してフローログを有効化する。

4.5. コスト管理

Network Watcherに関連するコストは、使用する機能によって異なります。主なコスト要因は以下の通りです。
* NSGフローログの処理: Traffic Analyticsを有効化している場合、処理されるフローログの量に応じて課金されます。
* ログおよびメトリックの保存: Storage AccountまたはLog Analyticsワークスペースにログやメトリックを送信する場合、それらのサービスの使用量(データ取り込み量、データ保持期間、クエリ実行)に応じて課金されます。Log Analyticsへのデータ取り込みは特にデータ量に比例してコストが増加する傾向があります。
* Connection Monitor: テストの実行回数や収集されるメトリックの量に応じて課金される場合があります。
* パケット キャプチャ: キャプチャされたデータの量や、Storage Accountの使用量に応じて課金されます。

これらのコストを管理するためには、以下の点を考慮します。
* NSGフローログは必要なNSGに対してのみ有効化し、不要なトラフィックを記録しないようにします。
* Traffic Analyticsのログレベルや保持期間を適切に設定します。
* Log Analyticsワークスペースへのログ送信は、必要なカテゴリとレベルに限定します。
* Storage Accountの保持期間を設定し、古いログを自動的に削除します。
* Connection Monitorは必要なテスト構成のみを作成し、テスト頻度を適切に設定します。
* パケットキャプチャは必要な場合にのみ実行し、フィルターを適切に使用してデータ量を最小限に抑えます。

Azure Cost Management + Billingを使用して、Network Watcherおよび関連サービス(Storage Account, Log Analytics)のコストを監視し、予算を超過しないように管理します。

5. 他のAzureサービスとの連携

Network Watcherは単体でも強力なツールですが、他のAzure監視、セキュリティ、および管理サービスと連携することで、その能力を最大限に引き出すことができます。

  • Azure Monitor: Network Watcherが生成する多くの診断データ(Connection Monitorメトリック、NSGフローログデータ、診断ログ)は、Azure Monitor(Log AnalyticsとAzure Metrics)に集約されます。Azure Monitorの強力な機能(データ視覚化、クエリ、アラート、アクション グループとの連携による自動対応)を活用することで、ネットワークの健全性を包括的に監視し、問題発生時に自動的に通知や修復アクションを実行できます。
  • Azure Security Center / Azure Defender for Cloud: Network Watcher(特にNSGフローログとTraffic Analytics)によって収集されたネットワークトラフィックデータは、Azure Security Center(現 Azure Defender for Cloud)のセキュリティ分析の一部として利用される場合があります。セキュリティの推奨事項や脅威検出に貢献することがあります。
  • Azure Advisor: Azure Advisorは、Azureリソースの構成、セキュリティ、パフォーマンス、信頼性、およびコストに関する推奨事項を提供します。Network Watcherで検出された情報や、ネットワーク構成の不備に関する推奨事項(例: NSGが適用されていないサブネット)がAzure Advisorによって提示されることがあります。
  • Azure Automation: 前述のように、Azure Automation Runbookを使用してNetwork Watcherの診断タスクを自動化できます。
  • Azure Sentinel: Log Analyticsに集約されたNetwork Watcherのログデータ(特にNSGフローログ、Firewallログ、VPN Gatewayログなど)は、Azure Sentinel(MicrosoftのクラウドネイティブSIEM)に取り込むことができます。Sentinelで他のセキュリティログ(OSログ、アプリケーションログ、IDログなど)と相関分析を行うことで、より高度な脅威検出やセキュリティインシデント調査が可能になります。

6. トラブルシューティングのヒントとベストプラクティス

Network Watcherを効果的に使用するためのいくつかのヒントとベストプラクティスです。

  • 体系的な診断フロー: ネットワーク問題が発生した場合、闇雲にツールを使うのではなく、体系的な診断フローを確立します。
    • まず基本的な接続性(pingなど)とOSファイアウォールを確認。
    • 次にIPフロー検証でNSGを切り分け、セキュリティグループビューで詳細を確認。
    • NSGが問題なければ、次ホップでルーティングを確認。
    • それでも解決しない場合は、接続トラブルシューティングでパス全体を診断。
    • 低レベルの問題やプロトコル固有の問題はパケットキャプチャで調査。
    • 継続的な監視にはConnection MonitorとLog Analyticsを利用。
  • IPフロー検証とセキュリティグループビューの組み合わせ: NSG関連の問題診断では、この2つのツールはセットで使用します。IPフロー検証で拒否されたトラフィックとルールを特定し、セキュリティグループビューでそのルールがどのように適用されているかを確認します。
  • 次ホップと接続トラブルシューティングの組み合わせ: ルーティング問題の診断では、まず次ホップで最初の転送先を確認し、次に接続トラブルシューティングでパス全体の到達性とパフォーマンスを診断します。
  • NSGフローログとTraffic Analyticsによる包括的な分析: ネットワーク全体のトラフィック状況を把握するには、NSGフローログとTraffic Analyticsが不可欠です。定期的にTraffic Analyticsダッシュボードを確認したり、Log Analyticsでカスタムクエリを実行したりして、ネットワークトラフィックの異常やセキュリティイベントを監視します。
  • Connection Monitorによるプロアクティブな監視: アプリケーションの可用性に直結する重要な通信パスについては、Connection Monitorを設定して継続的に監視し、パフォーマンス劣化や接続断をユーザーからの報告前に検出できるようにします。適切なアラートルールを設定することが重要です。
  • 診断ログの適切な収集と保持期間: 主要なネットワークリソース(Gateway, Firewall, Load Balancerなど)の診断ログをLog Analyticsに送信する設定を忘れずに行います。ログカテゴリを選択する際は、必要な情報(例: Firewallの規則ログ、Application Gatewayのアクセスログ)を網羅しつつ、不必要なログの収集は避けてコストを抑えます。コンプライアンス要件に応じて適切なログ保持期間を設定します。
  • RBAC権限の適切な設定: Network Watcherの機能を使用できるユーザーやサービスプリンシパルに対して、必要な最小限のRBAC権限のみを付与します。Network Contributorロールは強力すぎる場合があるので、カスタムロールの作成を検討します。
  • コストの監視: 前述のように、Network Watcherおよび関連サービスの使用コストを定期的に監視し、予期しないコスト増加がないか確認します。特にLog Analyticsへのデータ取り込み量には注意が必要です。

7. まとめ

Azure Network Watcherは、Azure仮想ネットワーク環境のネットワークの状態を詳細に把握し、潜在的な問題を効率的に診断・解決するための包括的なサービススイートです。この記事では、その主要な機能であるIPフロー検証、次ホップ、接続トラブルシューティング、接続モニター、パケットキャプチャ、NSGフローログ(Traffic Analytics含む)、トポロジ、セキュリティグループビュー、VPN診断、診断ログについて詳しく解説しました。

これらのツールを適切に活用することで、以下のようなメリットが得られます。
* ネットワーク接続の問題を迅速に特定し、ダウンタイムを最小限に抑える。
* ネットワークセキュリティグループ(NSG)やルーティング設定(UDR)の誤設定を検出し、セキュリティと可用性を向上させる。
* ネットワーク全体のトラフィックパターンを可視化し、セキュリティ脅威や非効率なトラフィックフローを発見する。
* ハイブリッド接続の健全性とパフォーマンスを監視し、オンプレミスとクラウド間の連携を安定させる。
* ネットワークパフォーマンスのベースラインを確立し、劣化を早期に検出してプロアクティブに対応する。
* 複雑なネットワーク構成を視覚的に理解し、管理を容易にする。

クラウド環境におけるネットワークは、オンプレミス環境とは異なる特性と複雑さを持っています。Azure Network Watcherは、このようなクラウドネイティブなネットワーク環境を効果的に運用するために不可欠なツール群を提供します。単にツールが存在するだけでなく、それぞれのツールがどのような問題を解決するために設計されているのか、そしてどのように組み合わせて使用できるのかを理解することが重要です。

Network Watcherは、Azure Monitorなどの他のAzureサービスとも密接に連携しており、これらのサービスと組み合わせることで、ネットワークだけでなく、システム全体の監視、診断、およびセキュリティ体制を強化できます。

これからAzureでネットワークを構築・運用される方、または既存の環境でネットワーク問題に直面している方は、ぜひAzure Network Watcherを積極的に活用し、ネットワークの状態を「把握」し、常に最適な状態に「改善」していくことで、アプリケーションの可用性とパフォーマンスを最大限に引き出してください。

8. リソース


この記事は、Azure Network Watcherの詳細な説明を含み、約5000語の要件を満たすように記述しました。内容は執筆時点の情報を基にしており、Azureのサービスは継続的にアップデートされるため、最新情報については公式ドキュメントをご確認ください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール