はい、承知いたしました。Azure Network Watcherに関する詳細な解説記事(約5000語)を作成し、直接表示します。
Azure Network Watcherとは?機能と使い方を徹底解説【入門】
はじめに:クラウドネットワーク管理の課題とNetwork Watcherの役割
クラウドコンピューティングが当たり前となった現代において、企業はオンプレミス環境からクラウド環境への移行を進めています。特にMicrosoft Azureは多くの企業に利用されています。しかし、Azureのようなパブリッククラウド上のネットワーク環境は、オンプレミスとは異なる特性を持っています。
仮想マシン(VM)、仮想ネットワーク(VNet)、サブネット、ネットワークセキュリティグループ(NSG)、ユーザー定義ルート(UDR)、ロードバランサー、VPN Gateway、ExpressRouteなど、多種多様なネットワークリソースが連携して動作しています。これらのリソースが複雑に組み合わさることで、ネットワーク構成は非常に柔軟になりますが、同時に管理やトラブルシューティングが難しくなるという課題も生まれます。
- 可視性の不足: 実際にどのトラフィックがどこを通り、どのセキュリティルールやルーティング設定によって制御されているのかが見えにくい。
- 診断の困難さ: 通信がうまくいかない場合、原因がNSGによるブロックなのか、ルーティング設定ミスなのか、ファイアウォールAppliancesの問題なのか、あるいはアプリケーション側の問題なのかを特定するのが難しい。
- パフォーマンス問題: 遅延(Latency)やパケットロスが発生している場合に、ネットワーク経路上のどこに問題があるのかを特定しにくい。
- セキュリティ監査: 実際にどのようなトラフィックがネットワーク内を流れているのかを把握し、不審な通信を検出するのが難しい。
これらの課題を解決し、Azureネットワーク環境の健全性を維持・向上させるために提供されているサービスが Azure Network Watcher です。
Azure Network Watcher は、Azure仮想ネットワーク内のリソースを監視、診断、およびログ記録するための一連のツールを提供するサービスです。Azureリソースのネットワーク問題を特定、診断、および解決するのに役立ちます。これにより、Azureネットワーク環境の可視性を高め、ネットワークのトラブルシューティングを効率化し、セキュリティ体制を強化することができます。
Network Watcherは、特定のVMやNICに紐づく診断ツール群と、VNetやSubnet、NSGといった論理リソースに関連するログ/メトリック機能の両方を持ち合わせています。オンプレミスのネットワーク機器のように、パケットキャプチャを行ったり、ルーティングテーブルを確認したり、通信テストを実施したりといった操作を、Azureの仮想ネットワーク上で行えるようにするサービスと言えます。
この入門記事では、Azure Network Watcherの主要な機能とそれぞれの使い方、そしてどのようなシナリオで活用できるのかを徹底的に解説します。これからAzureネットワークを運用・管理する方々にとって、強力な味方となるNetwork Watcherの基本をしっかりと理解していきましょう。
Network Watcherの基本
Network Watcherは、Azureサブスクリプション内で利用できるリージョンごとのサービスです。利用したいAzureリージョンごとにNetwork Watcherを有効化する必要があります。有効化することで、そのリージョン内の仮想ネットワークに関するNetwork Watcher機能を利用できるようになります。
Network Watcherの有効化
Network Watcherは、Azure Portal、PowerShell、Azure CLI、またはARMテンプレートを使用して有効化できます。ほとんどの場合、特定の機能(例: NSGフローログ)を初めて構成する際に、Network Watcherリソースが存在しない場合は自動的に作成されることがあります。しかし、診断ツール(IPフロー検証など)を使用する前に、手動で有効化することも可能です。
Azure Portal での有効化:
- Azure Portal にサインインします。
- 検索バーで “Network Watcher” と入力し、サービスを選択します。
- Network Watcherのブレードが表示されます。利用可能なリージョンと、有効化されているかどうかのステータスが表示されます。
- 有効化したいリージョンを選択し、「…」メニューから「有効化」を選択します。
- 有効化が完了すると、そのリージョンのステータスが “有効” になります。
有効化されると、そのリージョンに NetworkWatcher_<RegionName>
という名前のリソースグループが自動的に作成され、その中に NetworkWatcher_<RegionName>
という名前のNetwork Watcherリソースがプロビジョニングされます。このリソースグループやリソースは、手動で削除しない限り存在し続けます。
PowerShellでの有効化:
powershell
Register-AzResourceProvider -ProviderNamespace Microsoft.Network
New-AzResourceGroup -Name NetworkWatcherRG -Location EastUS # リソースグループが存在しない場合
New-AzNetworkWatcher -Name NetworkWatcher_EastUS -ResourceGroupName NetworkWatcherRG -Location EastUS
Azure CLIでの有効化:
azurecli
az provider register --namespace Microsoft.Network
az group create --name NetworkWatcherRG --location eastus # リソースグループが存在しない場合
az network watcher create --name NetworkWatcher_eastus --resource-group NetworkWatcherRG --location eastus
課金モデル
Network Watcher自体を有効化することに直接的な料金はかかりません。課金は、使用する特定の機能に基づいて発生します。主な課金対象となる機能と要素は以下の通りです。
- Connection Monitor: テスト対象のエンドポイントの数、およびテストの実行頻度に基づいて課金されます。
- NSG Flow Logs: 生成されるログデータの量、およびログの保存先(Storage AccountやLog Analytics)でのデータ保存料金や取り込み・分析料金に基づいて課金されます。
- Traffic Analytics: NSGフローログをLog Analyticsワークスペースに送信し、Traffic Analyticsで処理・分析するデータの量に基づいて課金されます。
- Packet Capture: キャプチャされるデータの量に基づいて課金されます。
- その他の診断機能(IPフロー検証、次ホップ、接続トラブルシューティングなど):機能の実行回数やデータ処理量に基づいて課金されます。これらの料金は比較的小さく、主にログや継続的な監視機能が主要な課金対象となります。
詳細な料金情報は、Azureの公式料金ページ(Network Watcherの項目)を参照してください。利用する機能やデータ量によってはコストが発生するため、運用前に料金体系を理解しておくことが重要です。
Network Watcherの主要機能 詳細解説
Network Watcherは、さまざまなネットワーク診断・監視機能を提供しています。ここでは、主要な機能についてそれぞれ詳しく解説します。
1. IPフロー検証 (IP flow verify)
- 目的: 特定の仮想マシン(VM)のネットワークインターフェイス(NIC)から、特定の宛先IPアドレス、宛先ポート、プロトコル(TCP/UDP)、および通信の方向(Inbound/Outbound)に対するネットワークトラフィックが、ネットワークセキュリティグループ(NSG)のルールによって許可されるか、または拒否されるかを確認します。通信が拒否される場合は、どのNSGルールのどの設定が原因であるかを特定できます。
- 仕組み: 指定されたNICに適用されている有効なNSGルールを評価し、指定された5タプル(Source IP, Source Port, Destination IP, Destination Port, Protocol)のトラフィックに対して適用されるルールを決定します。実際のパケットを送信するわけではなく、あくまでNSGルールの論理的な評価に基づきます。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「IP フロー検証」を選択します。
3. サブスクリプション: 対象のVMが存在するサブスクリプションを選択します。
4. リソース グループ: 対象のVMが含まれるリソースグループを選択します。
5. 仮想マシン: 対象のVMを選択します。
6. ネットワーク インターフェイス: 対象のVMに紐づくNICを選択します(通常は1つですが、複数ある場合もあります)。
7. 方向: 通信の方向を選択します(「送信」または「受信」)。
8. プロトコル: プロトコルを選択します(「TCP」または「UDP」)。
9. ローカル IP アドレス: 診断対象のNICのプライベートIPアドレスを入力します。
10. ローカル ポート: 診断対象のNICの通信に使用されるポート番号を入力します(例: Webサーバーなら80または443)。
11. リモート IP アドレス: 通信相手のリモートIPアドレスを入力します。
12. リモート ポート: 通信相手のリモートポート番号を入力します。
13. 「確認」ボタンをクリックします。
14. 結果が表示されます。「許可」または「拒否」のステータスと、その判断に至ったNSGルールが表示されます。拒否された場合は、拒否したルールの名前と理由(ポートが許可されていないなど)が表示されます。PowerShellでの実行例:
“`powershell
$nic = Get-AzNetworkInterface -Name “MyVM_nic0” -ResourceGroupName “MyResourceGroup”
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG” # 事前に作成されたNetwork Watcherリソースを取得Test-AzNetworkWatcherIPFlow -NetworkWatcher $networkWatcher
-TargetVirtualMachineId $nic.VirtualMachine.Id
-Direction Outbound-Protocol TCP
-LocalIPAddress $nic.IpConfigurations[0].PrivateIpAddress-LocalPort 80
-RemoteIPAddress “20.10.20.30” `
-RemotePort 443
“`Azure CLIでの実行例:
azurecli
az network watcher ip-flow-verify \
--resource-group "MyResourceGroup" \
--vm "MyVM" \
--direction Outbound \
--protocol Tcp \
--local-ip-address "10.0.0.4" \
--local-port 80 \
--remote-ip-address "20.10.20.30" \
--remote-port 443 -
シナリオ例:
- VMからインターネット上の特定のIPアドレスへのアウトバウンド接続ができない場合、NSGがブロックしているか確認する。
- 別のVMからWebサーバーVMへのインバウンド接続ができない場合、WebサーバーVMのNSGでポート80または443が許可されているか確認する。
- 新しいNSGルールを追加/変更した後に、想定通りのトラフィックが許可/拒否されるかテストする。
IPフロー検証は、ネットワーク通信問題が発生した際に、最も基本的なチェックとしてNSGが原因であるかを素早く切り分けるのに非常に役立ちます。
2. 次ホップ (Next hop)
- 目的: 特定のVMのNICから特定の宛先IPアドレスへトラフィックを送信した場合に、次にパケットが転送されるべきネットワークデバイスやインターフェイス(次ホップ)を確認します。これは、ルーティング設定が正しく機能しているか、あるいは意図しないルートを通っているかを確認するために使用されます。
- 仕組み: 指定されたNICに適用されている有効なルート(システムルート、UDR、BGPルートなど)を評価し、指定された宛先IPアドレスに対する最も具体的なルートに基づいて次ホップを決定します。これもIPフロー検証と同様に、実際のパケットを送信するわけではなく、ルーティングテーブルの論理的な評価に基づきます。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「次ホップ」を選択します。
3. サブスクリプション: 対象のVMが存在するサブスクリプションを選択します。
4. リソース グループ: 対象のVMが含まれるリソースグループを選択します。
5. 仮想マシン: 対象のVMを選択します。
6. ネットワーク インターフェイス: 対象のVMに紐づくNICを選択します。
7. 送信元 IP アドレス: 診断対象のNICのプライベートIPアドレスを入力します。
8. 送信先 IP アドレス: トラフィックの宛先となるIPアドレスを入力します。
9. 「確認」ボタンをクリックします。
10. 結果が表示されます。「次ホップの種類」(例: VirtualAppliance, VnetLocal, Internet, VPN Gatewayなど)、「次ホップのIPアドレス」(該当する場合、例: NVAのプライベートIP)、およびトラフィックの転送に適用された「ルート テーブル ID」(UDRを使っている場合)が表示されます。PowerShellでの実行例:
“`powershell
$nic = Get-AzNetworkInterface -Name “MyVM_nic0” -ResourceGroupName “MyResourceGroup”
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG”Test-AzNetworkWatcherNextHop -NetworkWatcher $networkWatcher
-TargetVirtualMachineId $nic.VirtualMachine.Id
-SourceIpAddress $nic.IpConfigurations[0].PrivateIpAddress `
-DestinationIpAddress “10.1.0.5”
“`Azure CLIでの実行例:
azurecli
az network watcher show-next-hop \
--resource-group "MyResourceGroup" \
--vm "MyVM" \
--source-ip-address "10.0.0.4" \
--destination-ip-address "10.1.0.5" -
シナリオ例:
- サブネットからNVA(Network Virtual Appliance、例: ファイアウォールVM)を経由して別のサブネットにトラフィックをルーティングしたいが、想定通りにNVAが次ホップにならない場合。
- VNetピアリングで接続されたVNet内のVMにアクセスできない場合、トラフィックがピアリングリンクにルーティングされているか確認する。
- オンプレミスへの通信がVPN Gatewayを経由しているか確認する。
- インターネットへの通信が、UDRで設定した通りにNVAを経由しているか確認する。
次ホップは、ネットワーク通信問題が発生した際に、ルーティング設定が原因であるかを切り分けるために非常に強力なツールです。IPフロー検証と組み合わせて使用することで、NSGとルーティングの両面から問題を診断できます。
3. 接続ブレード (Connection troubleshoot/monitor)
この機能は、特定のソースから特定の宛先への接続について、より詳細な診断や継続的な監視を行います。「接続トラブルシューティング」と「接続モニター」の2つのモードがあります。
3-1. 接続トラブルシューティング (Connection troubleshoot)
- 目的: 特定のソースVMから特定の宛先(VM, FQDN, IPアドレス, URI)への単一の接続テストを実行し、接続性、遅延、および途中のネットワーク経路上の問題(NSG, UDR, Firewallなど)を診断します。実際のパケットを送信して結果を報告するため、より実践的な診断が可能です。
- 仕組み: ソースVMにNetwork Watcher Agent仮想マシン拡張機能がインストールされている必要があります。指定されたソースVMから指定された宛先に対してテストパケットを送信し、接続の成功/失敗、RTT(往復時間)、ホップバイホップのパス情報、およびパス上のAzureリソース(NSG, Gateway, NVAなど)によってトラフィックがどのように処理されたかを報告します。Azureファイアウォールなどの一部のサービスとの連携により、それらがトラフィックをブロックしているかどうかも診断結果に反映される場合があります。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「接続トラブルシューティング」を選択します。
3. サブスクリプション、リソース グループ: ソースVMが存在するサブスクリプションとリソースグループを選択します。
4. ソース: ソースとして使用する仮想マシンを選択します。VMにはNetwork Watcher Agent拡張機能がインストールされている必要があります。インストールされていない場合は、Portal上でインストールを促されます。
5. 送信元ポート: ソースVMで使用するポート(通常は任意)を指定します。
6. 宛先: 宛先として以下のいずれかを指定します。
* 仮想マシン: Azure内の宛先VMを選択します。
* FQDN/IP/URI: インターネット上のWebサイト(例:www.google.com
)、IPアドレス、またはAzureストレージアカウントのような特定のAzureサービスエンドポイントを指定します。
7. 送信先ポート: 宛先ポートを指定します(例: Webサーバーなら80または443)。
8. 「診断」ボタンをクリックします。
9. 診断が実行され、結果が表示されます。結果には以下の情報が含まれます。
* 接続状態: 到達可能か不可能か。
* 接続パス: ソースから宛先までのネットワーク上のホップ情報。
* ネットワーク ジッター (Jitter), ネットワーク遅延 (Latency), パケット損失 (Packet loss): テストによるパフォーマンス測定結果。
* 診断情報: パス上の各ホップで何が起こったか(例: NSGによって拒否された、UDRによってルーティングされたなど)。問題がある場合は、その原因(例: NSG<NSG名>
によってポート<ポート番号>
が拒否されました)が具体的に表示されます。
* ログ記録: オプションで診断結果をストレージアカウントまたはLog Analyticsワークスペースに記録できます。PowerShellでの実行例:
“`powershell
$vm = Get-AzVM -Name “MyClientVM” -ResourceGroupName “MyResourceGroup”
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG”
$destination = “www.bing.com”
$port = 443Get-AzNetworkWatcherConnectionMonitor -NetworkWatcher $networkWatcher
-SourceVirtualMachineId $vm.Id
-Destination $destination-DestinationPort $port
-TestConfigurationProtocol Tcp-TestConfigurationProtocolConfiguration @{
Get-AzNetworkWatcherConnectionMonitor` コマンドレットで実行されますが、これはConnection Monitorの単発テストモードとして扱われます。
TcpConfiguration = @{
DisableTraceRoute = $false
}
}
```
*補足*: Connection TroubleshootはAzure CLIでの実行例:
azurecli
az network watcher connection-monitor test \
--resource-group "MyResourceGroup" \
--vm "MyClientVM" \
--remote-resource "www.bing.com" \
--remote-port 443 \
--protocol Tcp -
シナリオ例:
- アプリケーションサーバーがデータベースサーバーに接続できない場合。
- 社内ネットワークからVPN経由でAzureのファイルサーバーにアクセスできない場合。
- Azure VMから特定のSaaSアプリケーション(例: Office 365, Salesforce)に接続できない場合。
- 新しいファイアウォールルールをテストしたい場合。
接続トラブルシューティングは、実際の通信フローに近い診断を行うため、特定の接続問題の原因を特定するのに非常に強力です。特に、複数のネットワーク要素(NSG, UDR, Firewall, Gatewayなど)が関与する複雑なシナリオで有効です。
3-2. 接続モニター (Connection monitor)
- 目的: 特定のソースから複数の宛先への接続性を定期的かつ継続的に監視し、パフォーマンス(遅延、パケットロス)のトレンド分析を行います。これにより、ネットワークパフォーマンスのベースラインを設定したり、問題が始まるタイミングを検出し、履歴データに基づいて原因を特定したりすることができます。
- 仕組み: 接続モニターには「クラシック接続モニター」と「接続モニター (プレビュー機能から正式機能になったもの)」の2つのバージョンがありますが、新しいバージョンの「接続モニター」を使用することが推奨されます。新しいバージョンでは、以下のような仕組みで監視を行います。
- テスト グループ: 監視の対象となるソースと宛先の組み合わせを定義します。複数のテストグループを作成し、それぞれ異なる監視設定(プロトコル、ポート、テスト頻度など)を適用できます。
- ソース: 監視を開始するポイントです。Azure VM(Network Watcher Agentが必要)、Azure Virtual Network、Azure Virtual WAN、オンプレミスのマシン(Log Analyticsエージェントが必要)、またはAzure DNSなどの特定のサービス(エージェントレス)を指定できます。
- 宛先: 監視のターゲットです。Azure VM、Azure Virtual Network、Azure Virtual WAN、オンプレミスのマシン、FQDN、IPアドレス、またはAzureストレージアカウントなどの特定のサービスを指定できます。
- テスト構成: 監視に使用するプロトコル(TCP, ICMP, HTTP)やポート、テスト頻度、しきい値(遅延、パケットロスの許容範囲)などを定義します。
- データ収集と分析: テスト結果はLog Analyticsワークスペースに送信され、そこで集約、分析、可視化されます。遅延やパケットロスのトレンドをグラフで確認したり、設定したしきい値を超えた場合にアラートを発生させたりできます。
- エージェントレス監視: Azure Virtual NetworkやAzure DNSなど一部のソース/宛先タイプでは、監視対象リソースにエージェントをインストールすることなく監視を実行できます(Service Endpoint Monitorなど)。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。設定は比較的複雑なため、Portalからの設定が一般的です。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「接続モニター」を選択します。
3. 「作成」をクリックして新しい接続モニターを作成します。
4. 基本: 接続モニターの名前、サブスクリプション、リソースグループ、リージョン、およびテスト結果を保存するLog Analyticsワークスペースを選択します。
5. テスト グループ: 「テスト グループの追加」をクリックして、監視対象のソースと宛先の組み合わせとテスト設定を定義します。
* テスト グループ名: 識別しやすい名前を付けます。
* ソース: 監視を開始するソースを追加します(例: 特定のVNet内のすべてのVM、特定のサブネットなど)。
* 宛先: 監視のターゲットとなる宛先を追加します(例: 特定のVM、外部IPアドレス、ストレージアカウントなど)。
* テスト構成: 使用するプロトコル(TCP, ICMP, HTTP)、ポート、テスト頻度(例: 30秒ごと)、しきい値(例: 遅延が100msを超えたら警告)、トレースルートの無効化などを設定します。
6. 必要に応じて複数のテストグループを追加します。
7. タグ: 必要に応じてタグを設定します。
8. 「確認 + 作成」をクリックして設定を確認し、作成します。
9. 作成後、数分でデータの収集が開始されます。
10. 接続モニターのブレードに戻り、作成した接続モニターを選択します。結果はLog Analyticsワークスペースに送信されるため、「データ分析」や「ネットワークパフォーマンス モニターで表示」などのリンクから結果を表示します。Log AnalyticsワークスペースのNetwork Monitoring Solutionsから「接続モニター」のビューを選択することでも確認できます。結果の見方(Log Analytics / Network Performance Monitor):
* ダッシュボードで、設定した各テストグループにおける遅延とパケットロスの平均値や推移がグラフで表示されます。
* ソースと宛先の間のネットワークパス上のホップ情報(IPアドレス、AS番号など)も表示される場合があります。
* テスト結果をフィルタリングしたり、特定の時間範囲で表示したりできます。
* Log Analyticsのクエリ言語(Kusto Query Language – KQL)を使用して、より詳細な分析を行うことも可能です。 -
シナリオ例:
- Azureリージョン間を接続するVNetピアリングやVPN、ExpressRouteの回線パフォーマンスを継続的に監視する。
- 特定のアプリケーション層(例: Web層、DB層)を構成するVM間の通信パフォーマンスを監視し、SLAを満たしているか確認する。
- Azure VMからオンプレミスのデータベースへの接続遅延を監視する。
- Azure VMからインターネット上の重要なSaaSサービスへの接続性を継続的に確認する。
- ネットワークの問題が発生した際に、履歴データを確認して問題発生時刻やトレンドから原因を推測する。
接続モニターは、特定の時点での診断ではなく、長期的なネットワーク健全性とパフォーマンスのトレンドを把握するために非常に有効です。特にミッションクリティカルなアプリケーションや重要なネットワーク接続の監視に適しています。
4. 有効なセキュリティ ルール (Effective security rules)
- 目的: 特定のVMのNICに現在適用されているすべてのNSGルールの実効的なリストを確認します。これにより、どのようなトラフィックが許可または拒否されるのかを正確に把握できます。
- 仕組み: Azureでは、NSGはサブネットまたはNICに関連付けることができます。また、複数のNSGを同じNICに関連付けることも可能です(ただし、通常はサブネット単位の関連付けが推奨されます)。「有効なセキュリティ ルール」機能は、指定されたNICに直接関連付けられているNSGと、そのNICが所属するサブネットに関連付けられているNSGのすべてのルールを集計し、実効的なルールセットとして表示します。システム既定のルールも含まれます。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「有効なセキュリティ ルール」を選択します。
3. サブスクリプション、リソース グループ: 対象のVMが存在するサブスクリプションとリソースグループを選択します。
4. 仮想マシン: 対象のVMを選択します。
5. ネットワーク インターフェイス: 対象のVMに紐づくNICを選択します。
6. 「確認」ボタンをクリックします。
7. 結果が表示されます。このNICに適用されているすべてのインバウンドおよびアウトバウンドのNSGルールのリストが表示されます。各ルールのソース/宛先、ポート、プロトコル、方向、アクション(許可/拒否)、および優先度を確認できます。システム既定のルール(例: VNet内通信の許可)も含まれます。PowerShellでの実行例:
“`powershell
$nic = Get-AzNetworkInterface -Name “MyVM_nic0” -ResourceGroupName “MyResourceGroup”
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG”Get-AzNetworkWatcherEffectiveSecurityGroup -NetworkWatcher $networkWatcher `
-NetworkInterfaceId $nic.Id
“`Azure CLIでの実行例:
azurecli
az network watcher list-effective-nsg \
--resource-group "MyResourceGroup" \
--vm "MyVM" \
--nic "MyVM_nic0" -
シナリオ例:
- あるVMへの特定の通信がなぜブロックされているのか、あるいは許可されているのかを確認する(IPフロー検証と連携)。
- 新しいNSGルールが意図した通りにNICに適用されているか確認する。
- セキュリティ監査のために、特定のVMにどのようなNSGルールが適用されているかをリストアップする。
- サブネットレベルとNICレベルの両方にNSGが適用されている場合の、実効的なルールセットを確認する。
この機能は、IPフロー検証が単一のフローに対するNSG評価を行うのに対し、適用されている 全ての NSGルールを一覧表示する点が異なります。全体のNSG構成を把握するのに役立ちます。
5. 有効なルート (Effective routes)
- 目的: 特定のVMのNICに現在適用されているすべてのルートの実効的なリストを確認します。これにより、トラフィックがどのようにルーティングされるのかを正確に把握できます。
- 仕組み: Azureでは、ルーティングはシステムルート、UDR、およびVPN GatewayやExpressRoute Gatewayから広報されるBGPルートによって制御されます。「有効なルート」機能は、指定されたNICに適用されているシステムルートと、そのNICが所属するサブネットに関連付けられているルートテーブル(UDR)のすべてのルートを集計し、有効なルートセットとして表示します。BGPピアリングが確立されている場合は、BGPルートも含まれます。最も優先度の高い(最も具体的な)ルートが優先されるため、表示されるルートセットはそれらを考慮した実効的なものです。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「有効なルート」を選択します。
3. サブスクリプション、リソース グループ: 対象のVMが存在するサブスクリプションとリソースグループを選択します。
4. 仮想マシン: 対象のVMを選択します。
5. ネットワーク インターフェイス: 対象のVMに紐づくNICを選択します。
6. 「確認」ボタンをクリックします。
7. 結果が表示されます。このNICに適用されているすべてのルートのリストが表示されます。各ルートのプレフィックス(送信先ネットワーク)、次ホップの種類、次ホップIPアドレス、ソース(システムルート、UDR、BGPなど)を確認できます。PowerShellでの実行例:
“`powershell
$nic = Get-AzNetworkInterface -Name “MyVM_nic0” -ResourceGroupName “MyResourceGroup”
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG”Get-AzNetworkWatcherEffectiveRouteTable -NetworkWatcher $networkWatcher `
-NetworkInterfaceId $nic.Id
“`Azure CLIでの実行例:
azurecli
az network watcher list-effective-routes \
--resource-group "MyResourceGroup" \
--vm "MyVM" \
--nic "MyVM_nic0" -
シナリオ例:
- ある宛先IPへの通信がなぜ想定外の次ホップにルーティングされているのかを確認する(次ホップと連携)。
- 新しいUDRをサブネットに関連付けた後、意図した通りにルートが適用されているか確認する。
- VPN GatewayやExpressRoute GatewayからのBGPルートがVMに正しく広報されているか確認する。
- デフォルトルート(0.0.0.0/0)がインターネット、NVA、またはVPN Gatewayのどれに設定されているか確認する。
この機能は、次ホップ機能が単一の宛先IPに対するルーティング結果を表示するのに対し、適用されている 全ての ルートを一覧表示する点が異なります。全体のルーティング構成を把握するのに役立ちます。
6. パケット キャプチャ (Packet capture)
- 目的: 特定のVM上でネットワークトラフィックをキャプチャし、詳細な分析のためにファイルとして保存します。これにより、ネットワークパケットの生のデータを確認し、アプリケーションレベルの問題や特定のトラフィックフローを詳細に調査できます。
- 仕組み: 対象のVMにNetwork Watcher Agent仮想マシン拡張機能がインストールされている必要があります。キャプチャセッションを作成し、キャプチャするトラフィックのフィルター(プロトコル、ローカル/リモートIP、ローカル/リモートポート、方向)を設定します。キャプチャは一定時間または一定パケット数で停止するように設定でき、結果は指定したAzureストレージアカウントまたはローカルファイルに保存されます。
-
使い方: Azure Portal、PowerShell、Azure CLIで利用できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「パケット キャプチャ」を選択します。
3. 「新しいキャプチャの追加」をクリックします。
4. 基本: キャプチャの名前、サブスクリプション、リソースグループ、対象のVMを選択します。VMにはNetwork Watcher Agentがインストールされている必要があります。
5. 設定:
* ストレージ アカウント: キャプチャファイルを保存するストレージアカウントを選択します。または、ローカルパス(VM上のパス)を指定することもできますが、一時的なキャプチャに限定されるため、ストレージアカウントが推奨されます。
* ローカル ファイル パス: ローカル保存する場合のパス。
* 最大バイト数/パケット: 1パケットあたりのキャプチャサイズを制限できます(ヘッダー情報のみ取得したい場合などに使用)。
* 最大パケット数: キャプチャするパケットの総数に制限を設けます。
* タイム リミット (秒): キャプチャを実行する時間(最大18000秒 = 5時間)。
6. フィルター: 必須ではありませんが、特定のトラフィックのみをキャプチャするためにフィルターを設定できます。方向(Inbound/Outbound/Both)、プロトコル(TCP/UDP/Any)、ローカル/リモートIPアドレス、ローカル/リモートポートを指定できます。最大5つのフィルターを設定できます。
7. 「OK」をクリックしてキャプチャを開始します。
8. キャプチャの状態は「パケット キャプチャ」ブレードで確認できます。「実行中」の状態から、設定した制限に達するか手動で停止すると「完了」または「停止済み」になります。
9. キャプチャが完了すると、指定したストレージアカウントのコンテナに.cap
または.pcap
形式のファイルが保存されます。このファイルはWiresharkのようなネットワークプロトコルアナライザーで開いて詳細に分析できます。PowerShellでの実行例:
“`powershell
$vm = Get-AzVM -Name “MyVM” -ResourceGroupName “MyResourceGroup”
$storageAccount = Get-AzStorageAccount -Name “mystorageaccount” -ResourceGroupName “MyResourceGroup” # キャプチャ保存先のストレージアカウント
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG”New-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher
-TargetVirtualMachineId $vm.Id
-PacketCaptureName “MyPacketCapture”-StorageAccountId $storageAccount.Id
-TimeLimitInSeconds 60 `
-TotalBytesPerSession 1073741824 # 1GB
-Filter @(
@{
Protocol=”TCP”;
RemoteIPAddress=”10.1.0.5″;
LocalPort=”80″
}
)
“`Azure CLIでの実行例:
azurecli
az network watcher packet-capture create \
--resource-group "MyResourceGroup" \
--vm "MyVM" \
--name "MyPacketCapture" \
--storage-account "mystorageaccount" \
--time-limit 60 \
--filters '[{"protocol":"TCP", "remoteIpAddress":"10.1.0.5", "localPort":"80"}]' -
シナリオ例:
- アプリケーションの通信が期待通りに行われているか、どのようなパケットが送受信されているか詳細を確認したい場合。
- 未知の送信元からの不審なトラフィックがないか確認したい場合。
- 特定のポートやプロトコルのトラフィックが実際にVMに到達しているか確認したい場合(NSGやルーティングを通過した後)。
- ファイアウォールログやアプリケーションログだけでは分からない低レベルのネットワーク問題を診断したい場合。
パケットキャプチャは最も低レベルのネットワーク診断手段であり、他の診断ツールで原因が特定できない場合に、最終手段として詳細な情報収集に利用されます。ただし、キャプチャしたデータの分析には専門知識が必要です。
7. NSGフロー ログ (NSG Flow logs)
- 目的: ネットワークセキュリティグループ(NSG)を通過するIPトラフィックに関する5タプル情報(Source IP, Source Port, Dest IP, Dest Port, Protocol)と、トラフィックの方向、アクション(許可/拒否)、および状態(作成/継続/終了)を記録します。これにより、ネットワークセキュリティ監査、トラフィックパターンの分析、異常検出、および通信許可/拒否理由の履歴確認が可能になります。
- 仕組み: NSG単位で有効化します。有効化されたNSGを通過するすべてのトラフィック(許可されたものと拒否されたもの)に関するメタデータが収集されます。ログは指定したAzureストレージアカウントにJSON形式で書き込まれます。Log Analyticsワークスペースと連携することで、これらのログを容易に検索、分析、可視化することができます。
-
使い方: Azure Portal、PowerShell、Azure CLIで設定できます。
Azure Portalでの手順:
1. Network Watcherブレードを開きます。
2. 左側のメニューから「NSG フロー ログ」を選択します。
3. フローログを有効化したいNSGを含むサブスクリプションとリソースグループを選択します。
4. 一覧から対象のNSGを選択し、「有効」をクリックします。
5. 設定:
* バージョン: フローログのバージョンを選択します(v1またはv2)。v2が推奨されており、より詳細な情報(スループット、フロー状態)が含まれます。
* トラフィック分析: Traffic Analytics(後述)を有効にするかどうかを選択します。有効にする場合は、ログの送信先としてLog Analyticsワークスペースを選択します。
* ログの宛先: ストレージアカウントまたはLog Analyticsワークスペースを選択します。Log Analyticsを選択した場合は、Traffic Analyticsも自動的に有効化されます。ストレージアカウントを選択した場合は、後からTraffic Analyticsを有効化することも可能です。
* 保存期間: ストレージアカウントにログを保存する場合の保持期間を設定します(0~365日、または無期限)。
6. 「保存」をクリックします。
7. 設定後、数分でフローログの収集が開始されます。ログは指定したストレージアカウントまたはLog Analyticsワークスペースに書き込まれます。PowerShellでの実行例:
“`powershell
$nsg = Get-AzNetworkSecurityGroup -Name “MyBackendNsg” -ResourceGroupName “MyResourceGroup”
$storageAccount = Get-AzStorageAccount -Name “mynsglostorage” -ResourceGroupName “MyResourceGroup” # フローログ保存先のストレージアカウント
$networkWatcher = Get-AzNetworkWatcher -Name “NetworkWatcher_EastUS” -ResourceGroupName “NetworkWatcherRG”Set-AzNetworkWatcherFlowLogConfiguration -NetworkWatcher $networkWatcher
-TargetResourceId $nsg.Id
-EnableFlowLog $true-RetentionPolicyEnabled $true
-RetentionDays 30-FormatVersion 2
-StorageId $storageAccount.Id
“`Azure CLIでの実行例:
azurecli
az network watcher flow-log create \
--resource-group "MyResourceGroup" \
--nsg "MyBackendNsg" \
--storage-account "mynsglostorage" \
--enabled true \
--retention 30 \
--format-version 2 \
--traffic-analytics false # Traffic Analyticsを有効にしない場合 -
シナリオ例:
- 過去のある時点での特定の通信がNSGによって許可されたか、拒否されたかを確認したい場合。
- どのようなソースIPアドレスからネットワークへのアクセスが試みられているか(特に拒否されたトラフィック)を監視し、潜在的な脅威を検出する。
- ネットワーク内の主要なトラフィックパターン(例: どのサブネット間の通信が多いか、どのポートがよく使われるか)を分析する。
- アプリケーションの通信問題が発生した際に、NSGフローログを確認して、特定の通信がNSGに到達しているか、そして許可されているか拒否されているかを確認する。
- セキュリティコンプライアンスのために、ネットワークトラフィックのログを一定期間保持する。
NSGフローログは、ネットワークアクティビティに関する最も基本的な監査証跡となります。ログ自体は生データですが、Log AnalyticsやTraffic Analyticsと連携することで、強力な洞察を得ることができます。
8. Traffic Analytics (Traffic Analytics)
- 目的: NSGフローログを集約・分析し、ネットワークトラフィックの可視化と包括的な洞察を提供します。Azureネットワークのトラフィックフロー、トップトーカース(最も通信量の多いエンドポイント)、地理的なトラフィック分布、プロトコル分布などをインタラクティブなダッシュボードで確認できます。
- 仕組み: NSGフローログをLog Analyticsワークスペースに送信するように設定します。Traffic AnalyticsはこのLog Analyticsワークスペースのデータソースとして機能し、ログデータを定期的に処理・変換・拡充(例: IPアドレスの地理情報付与)し、Log Analytics内で分析可能なデータセットを作成します。このデータセットに基づいて、WebベースのTraffic Analyticsダッシュボードが情報を表示します。
-
使い方: NSGフローログの設定時にTraffic Analyticsを有効化するか、既に有効化されているNSGフローログの設定を変更して有効化します。結果はLog Analyticsワークスペースと、Network Watcherブレード内の「Traffic Analytics」ブレードから確認できます。
Azure Portalでの手順:
1. NSGフローログの設定手順(前述)に従い、NSGフローログを有効化します。
2. 設定時に「トラフィック分析を有効にします」を「オン」にし、ログの宛先としてLog Analyticsワークスペースを選択します。既存のLog Analyticsワークスペースを選択するか、新しく作成します。
3. NSGフローログの設定を保存します。
4. データ収集と処理には時間がかかる場合があります(初回は最大30分~1時間程度)。
5. Network Watcherブレードを開きます。
6. 左側のメニューから「Traffic Analytics」を選択します。
7. Traffic Analyticsの概要ダッシュボードが表示されます。ここから、さまざまなビュー(Azureサブスクリプション、VNet、サブネット、IPグループ、地理情報など)でネットワークトラフィックの概要を確認できます。
8. 特定のビューを選択すると、より詳細な情報(トップトーカース、トラフィックフローマップ、プロトコル分布など)が表示されます。
9. ダッシュボード上の任意の項目(例: 特定のサブネット)をクリックすると、その項目に関連するフィルタリングが適用され、ドリルダウンして分析できます。
10. Log Analyticsワークスペースから直接データを確認することも可能です。Log Analyticsワークスペースを開き、「Logs」ブレードでAzureNetworkAnalytics_CL
またはNetworkAnalytics_CL
テーブルに対してKQLクエリを実行します。Traffic Analyticsダッシュボードで確認できる主な情報:
* 概要: 全体のトラフィックボリューム、フロー数、最も通信量の多いリソース(トップトーカース)のサマリー。
* Azure サブスクリプション: サブスクリプション間のトラフィックフロー。
* 仮想ネットワーク: VNet間のトラフィックフロー。
* サブネット: サブネット間のトラフィックフロー、サブネットとインターネット/オンプレミス間のトラフィック。
* IPグループ: 定義したIPグループ(例: サーバー群、クライアント群)間のトラフィック。
* 地理: トラフィックの送信元/宛先の地理的な分布。
* デプロイ: リージョンごとのトラフィック分布。
* NSG: NSGごとのトラフィック量、許可/拒否されたトラフィックの割合。
* アプリケーション ポート: ポート番号ごとのトラフィック量と、それを使用している上位のアプリケーション。
* Azure Traffic Analytics のマップ: リソース間のトラフィックフローを視覚的に表示するマップ。
* 悪意のあるフロー: 脅威インテリジェンスデータに基づき、悪意のあるIPアドレスとの通信が試みられたフローを検出・表示。 -
シナリオ例:
- ネットワーク全体のトラフィックパターンを把握し、キャパシティプランニングや最適化に役立てる。
- 特定の時間帯に異常にトラフィックが増加した原因を特定する。
- どのアプリケーション(ポート)がネットワーク帯域幅を最も消費しているかを確認する。
- インターネット上の既知の悪意のあるIPアドレスとの通信が試みられていないか監視し、セキュリティインシデントを検出する。
- セキュリティ監査のために、特定のサブネット間の通信を分析する。
- 開発環境やテスト環境で不要なトラフィックが発生していないか確認する。
Traffic Analyticsは、NSGフローログという raw data をそのまま見るよりもはるかに容易に、ネットワークトラフィックの全体像や詳細を把握できる強力な可視化ツールです。大規模なネットワーク環境の運用において、必須とも言える機能です。
9. VPN診断 (VPN diagnostics)
- 目的: Azure VPN Gatewayの接続問題やパフォーマンス問題を診断するための情報を提供します。Gatewayログ、接続イベント、およびパフォーマンス関連のメトリックを収集・分析します。
- 仕組み: Azure PortalでVPN Gatewayリソースを選択し、診断設定を構成することで利用できます。通常、診断ログはLog Analyticsワークスペースやストレージアカウントに送信するように設定します。Network WatcherのVPN診断機能は、これらのログを収集・分析するインターフェースを提供します。
-
使い方: Azure PortalのNetwork WatcherブレードまたはVPN Gatewayブレードから利用できます。
Azure Portalでの手順(Network Watcher経由):
1. Network Watcherブレードを開きます。
2. 左側のメニューから「VPN 診断」を選択します。
3. サブスクリプション、リソース グループ: 対象のVPN Gatewayが存在するサブスクリプションとリソースグループを選択します。
4. VPN ゲートウェイ: 診断したいVPN Gatewayを選択します。
5. 「診断」をクリックします。
6. これにより、VPN Gatewayのログ収集設定の構成や、過去に収集されたログデータの分析を行う画面に遷移します。多くの場合、Log Analyticsワークスペースへの診断設定が推奨されます。
7. Log Analyticsワークスペースにログが送信されると、KQLクエリを使用して接続履歴、エラーメッセージ、パフォーマンスデータなどを詳細に分析できます。主な診断対象となるログ/メトリック:
* IKEv2診断ログ: IPsec/IKE接続に関するイベント(フェーズ1/2のネゴシエーション、エラーなど)。
* ゲートウェイ診断ログ: Gateway自体のイベント(設定変更、再起動など)。
* トンネル診断ログ: サイト間またはVNet間トンネルの接続状態変化(接続/切断)。
* P2S診断ログ: ポイント対サイト接続の履歴。
* BGP診断ログ: BGPピアリングの状態、ルート広報。
* パフォーマンスメトリック: スループット、CPU使用率など。 -
シナリオ例:
- オンプレミスとAzure間のサイト間VPN接続が確立できない、または不安定な場合。
- クライアントがVPN Gateway経由でAzureに接続できない(P2S接続)。
- VPN接続は確立しているが、パフォーマンスが遅い場合。
- BGPピアリングが正常に確立されているか、意図したルートが広報されているか確認したい場合。
VPN診断は、ハイブリッドネットワーク環境における接続問題を診断する上で非常に重要です。Log Analyticsと組み合わせることで、詳細なログ分析が可能になります。
Network Watcherのその他の機能
上記の主要機能以外にも、Network Watcherはいくつかの便利な機能を提供しています。
- トポロジ (Topology): 仮想ネットワーク内のリソース(VM, サブネット, NSG, Gatewayなど)間の関係性を視覚的に表示します。VNetピアリングやGateway接続など、ネットワーク構成を理解するのに役立ちます。
- 接続エンドポイント (Connection endpoints): 特定のAzureサービスエンドポイント(例: Storage, SQL Database)への接続テストを行います。VMからService Endpointが有効化されたサービスへの接続問題を診断できます。
- リソースの正常性 (Resource health): Network Watcherサービス自体の状態を表示します。Network Watcherの機能が正常に動作しているかを確認できます。
これらの機能も、ネットワーク管理やトラブルシューティングにおいて役立つ場合があります。
Network Watcherの使い方(入門編)
Network Watcherの機能を実際にいくつか試してみましょう。ここでは、Azure Portalを使った基本的な手順を紹介します。
ステップ1: Network Watcherを有効化する
- Azure Portalにサインインします。
- 検索バーで「Network Watcher」と入力し、サービスを選択します。
- 目的のリージョンでNetwork Watcherが「有効」になっていることを確認します。無効になっている場合は、対象のリージョンを選択し、「…」メニューから「有効化」を選択します。
ステップ2: IPフロー検証でNSGルールを確認する
あるVMから別のVMへの特定のポートでの通信がNSGによってブロックされるか確認してみましょう。
- Network Watcherブレードを開き、左メニューから「IP フロー検証」を選択します。
- サブスクリプション、リソース グループ、仮想マシン、ネットワーク インターフェイス を、診断したいVMとNICに合わせて選択します。
- 方向 を「送信」とします(あるいは「受信」、テストしたい通信に合わせてください)。
- プロトコル を「TCP」とします(あるいは「UDP」)。
- ローカル IP アドレス には、選択したNICのプライベートIPアドレスが自動入力されます(手動入力も可能)。
- ローカル ポート には、VM上のアプリケーションが使用するポート(例: 80, 443, 22, 3389など)を入力します。
- リモート IP アドレス には、通信相手のVMまたはサービスのエンドポイントのIPアドレスを入力します。
- リモート ポート には、通信相手のアプリケーションが使用するポートを入力します。
- 「確認」をクリックします。
- 結果を確認します。「許可」または「拒否」が表示されます。拒否された場合は、どのNSGのどのルールによって拒否されたかが表示されます。
ステップ3: 次ホップでルーティングを確認する
あるVMから特定のIPアドレスへのトラフィックがどこへ向かうか確認してみましょう。
- Network Watcherブレードを開き、左メニューから「次ホップ」を選択します。
- サブスクリプション、リソース グループ、仮想マシン、ネットワーク インターフェイス を、診断したいVMとNICに合わせて選択します。
- 送信元 IP アドレス には、選択したNICのプライベートIPアドレスが自動入力されます。
- 送信先 IP アドレス には、トラフィックの宛先となるIPアドレス(別のVMのIP、NVAのIP、インターネット上のIPなど)を入力します。
- 「確認」をクリックします。
- 結果を確認します。「次ホップの種類」(例: VnetLocal, Internet, VirtualAppliance, VnetGatewayなど)と、次ホップのIPアドレス(該当する場合)が表示されます。これにより、UDRやシステムルートがどのように適用されているかを確認できます。
ステップ4: 接続トラブルシューティングで end-to-end 接続を診断する
あるVMから別のVMまたはFQDNへの接続の健全性をテストしてみましょう。
- Network Watcherブレードを開き、左メニューから「接続トラブルシューティング」を選択します。
- サブスクリプション、リソース グループ、ソース を、診断したいVM(Network Watcher Agentが必要)に合わせて選択します。
- 送信元ポート は任意です(通常は自動的に割り当てられます)。
- 宛先 で「仮想マシン」を選択し、テスト相手のVMを選択します。または「FQDN/IP/URI」を選択し、WebサイトのFQDNや外部IPなどを入力します。
- 送信先ポート に、テストしたい宛先ポート番号を入力します。
- ログ記録 オプションで、診断結果をストレージアカウントまたはLog Analyticsワークスペースに保存するか選択できます(推奨)。
- 「診断」をクリックします。
- 診断が実行され、結果が表示されます。接続の成否、遅延、パケットロス、および通信経路上で問題を発生させている可能性のある要素(NSG, UDR, Firewallなど)が詳細に報告されます。
ステップ5: NSGフローログとTraffic Analyticsを有効化する
ネットワーク全体のトラフィックを可視化してみましょう。
- Network Watcherブレードを開き、左メニューから「NSG フロー ログ」を選択します。
- フローログを有効化したいNSGを選択します。
- 「有効」をクリックします。
- バージョン は「バージョン 2」を選択します。
- トラフィック分析を有効にします を「オン」にします。
- ログの宛先として、既存の Log Analytics ワークスペース を選択するか、「新しいワークスペースの作成」で作成します。
- 保存期間 を設定します(Traffic Analyticsには影響しませんが、生のフローログをストレージアカウントにも保存する場合に適用されます)。
- 「保存」をクリックします。
- 設定後、数分~数十分待機します。
- Network Watcherブレードに戻り、左メニューから「Traffic Analytics」を選択します。
- 設定したLog Analyticsワークスペースが選択されていることを確認し、ダッシュボードが表示されるのを待ちます。データが収集・処理されるにつれて、Traffic Analyticsのダッシュボードにトラフィック情報が表示されるようになります。
これらの基本的なステップを実行することで、Network Watcherの主要な診断・監視機能を体験できます。
Network Watcher活用シナリオ
Network Watcherの各機能は、単独で利用するだけでなく、組み合わせて使用することでより強力なトラブルシューティングや分析が可能になります。一般的な活用シナリオをいくつかご紹介します。
-
アプリケーション通信問題の特定: VM AからVM Bへの通信ができない場合。
- まず、VM AのNICとVM BのNICに対して IPフロー検証 を実行し、双方向でNSGが通信をブロックしていないか確認します。
- NSGに問題がない場合、VM AからVM BのIPアドレスに対して 次ホップ を実行し、トラフィックが意図した経路(例: 同じサブネット、VNetピアリング、NVA経由)を通っているか確認します。
- NSGとルーティングに問題が見られない場合、VM AからVM Bの特定のポートに対して 接続トラブルシューティング を実行し、接続パス上の問題を詳細に診断します。Gateway、NVA、またはアプリケーションレベルの問題を示唆する情報が得られる場合があります。
- より詳細なパケットレベルの調査が必要な場合は、VM AまたはVM Bで パケット キャプチャ を実行し、トラフィックの内容を分析します。
- 過去の通信履歴を確認したい場合は、対象のVMのNSGに対して NSGフロー ログ が有効になっているか確認し、ログ(Log AnalyticsやStorage Account)を分析します。
-
ルーティング設定の確認とトラブルシューティング: 新しいUDRやVNetピアリングを設定した後に、トラフィックが正しくルーティングされているか確認したい場合。
- UDRやVNetピアリングを設定したサブネット内のVMに対して 有効なルート を実行し、新しいルートがルートテーブルに正しく反映されているか確認します。
- 特定の宛先IPアドレスに対して 次ホップ を実行し、トラフィックが新しいルートに従って次ホップに転送されるか確認します。
-
ネットワークパフォーマンスの継続監視: Azureとオンプレミス間のVPN回線や、重要なアプリケーション層間の通信パフォーマンスを監視したい場合。
- Azure側のVPN Gatewayが存在するVNet内のVMや、アプリケーション層のVMをソースとして、オンプレミス側のサーバーや別のアプリケーション層のVM/FQDNを宛先として 接続モニター を設定します。
- 遅延やパケットロスにしきい値を設定し、アラートを構成します。
- Log Analyticsワークスペースで収集されたデータを定期的に確認し、パフォーマンスのトレンドや問題発生時期を把握します。
-
ネットワークセキュリティの監査と分析: ネットワーク内でどのようなトラフィックが流れているか、不審な通信がないか確認したい場合。
- 重要なサブネットに関連付けられたNSGに対して NSGフロー ログ を有効化し、Log Analyticsワークスペースにログを送信します。
- Traffic Analytics を使用して、ネットワーク全体のトラフィックフローを可視化します。トップトーカース、プロトコル分布、地理的なトラフィックなどを分析します。
- Traffic Analyticsの「悪意のあるフロー」ビューで、既知の脅威IPとの通信がないか監視します。
- Log Analyticsワークスペースで KQLクエリ を使用し、特定の条件(例: 特定のポートへの大量の失敗した接続試行)に合致するフローログを検索し、セキュリティインシデントを検出します。
これらのシナリオ以外にも、Network Watcherは様々なネットワーク運用・管理タスクに活用できます。問題発生時の診断だけでなく、 proactive な監視や定期的な監査にも利用することで、ネットワーク環境の安定性とセキュリティを向上させることができます。
Network Watcherの注意点と考慮事項
Network Watcherを利用するにあたって、いくつかの注意点と考慮事項があります。
- リージョン固有のサービス: Network Watcherはリージョン固有のサービスです。診断・監視したいリソースが存在するリージョンでNetwork Watcherを有効化する必要があります。
- 課金: 各機能は従量課金です。特にNSGフローログ、Traffic Analytics、Connection Monitorはデータ量や監視対象数に応じてコストが発生します。大規模な環境でこれらの機能を広範囲に利用する場合は、事前に料金を見積もり、コスト管理計画を立てることが重要です。
- エージェントの必要性: 一部の機能(Packet capture, Connection Monitorの一部モード, Connection Troubleshoot)は、対象のVMにNetwork Watcher Agent仮想マシン拡張機能がインストールされている必要があります。これは自動でインストールされる場合もありますが、手動でインストールが必要な場合や、ポリシーで管理している場合は注意が必要です。
- Log Analyticsとの連携: NSGフローログやConnection Monitorのデータを分析・可視化するためには、Log Analyticsワークスペースとの連携が必須または強く推奨されます。Traffic AnalyticsはLog Analytics上のデータを利用するため、Log Analyticsワークスペースが必要です。これらのサービスも別途課金が発生します。
- データの遅延: NSGフローログやConnection MonitorのデータがLog Analyticsに反映され、Traffic Analyticsで処理されるまでには若干の遅延(数分~数十分)が発生します。リアルタイムに近い監視が必要な場合は、他の手段(例: VM内からのエージェントベースの監視ツール)も検討する必要があります。
- トラブルシューティングの制限: Network WatcherはAzure仮想ネットワーク内の診断に特化しています。オンプレミスネットワーク、ユーザーデバイス、またはアプリケーション自体の問題など、Azureネットワークの外部で発生している問題の診断には限界があります。他の監視ツールや診断手法と組み合わせて使用する必要があります。
これらの点を理解した上で、Network Watcherを適切に構成・運用することが重要です。
まとめ
Azure Network Watcherは、Azure仮想ネットワークの可視化、診断、監視、およびログ記録のための包括的なツールスイートです。IPフロー検証や次ホップといった単一時点の診断機能から、NSGフローログやTraffic Analyticsによる継続的なトラフィック分析、Connection Monitorによるパフォーマンス監視まで、多岐にわたる機能を提供しています。
これらの機能を活用することで、Azureネットワーク環境における以下のようなタスクを効率化し、問題を迅速に解決することが可能になります。
- 通信が許可/拒否される原因(NSG)の特定
- トラフィックのルーティング経路の確認と問題(UDRなど)の診断
- アプリケーション間の接続性やパフォーマンスの監視
- ネットワークトラフィックの全体像の把握とセキュリティ分析
- VPN接続問題の診断
Network WatcherはAzureネットワーク運用における強力な味方となります。これからAzureネットワークを運用・管理される方は、まず本記事で解説したIPフロー検証、次ホップ、接続トラブルシューティングといった基本的な診断ツールから試してみることをお勧めします。そして、環境の規模や要件に応じて、NSGフローログ、Traffic Analytics、Connection Monitorといった監視・分析機能を活用していくことで、より堅牢で安定したAzureネットワーク環境を実現できるでしょう。
クラウドネットワークの複雑性が増す中で、Network Watcherのような専用の診断・監視ツールを使いこなすことは、安定運用のためには不可欠です。ぜひNetwork Watcherを積極的に活用し、快適なAzureライフを送りましょう。