【AzureCLI】接続のトラブルシューティングで仮想マシンの疎通確認を実行する

AzureCLI AzureCLI

接続のトラブルシューティングをAzureCLIで実行して仮想マシンから疎通確認をしてみました。

広告

接続のトラブルシューティングを実行する

以下のコマンドで接続のトラブルシューティングを利用して疎通確認することができます。

az network watcher test-connectivity `
 --resource-group <送信元仮想マシンのリソースグループ名> `
 --source-resource <送信元仮想マシン> `
 --dest-address <宛先アドレス or 宛先URL> `
 --protocol < Http or Https or Icmp or Tcp >

今回はインターフェースとしてPowershellを利用しているので、改行する際には ` を利用していますが、コマンドプロンプトを利用する場合には、^ を利用する必要がありますのでその点は注意してください。

記載例1:yahoo.co.jpに疎通確認する

インターネットの宛先として「yahoo.co.jp」に疎通できるかを確認してみます。

az network watcher test-connectivity `
 --resource-group Test-RG `
 --source-resource test-vm-02 `
 --dest-address yahoo.co.jp `
 --protocol Https

以下のような出力となり、[“connectionStatus”: “Reachable”] となっているので、今回は疎通できたことが分かりました。

PS C:\> az network watcher test-connectivity `
>>  --resource-group Test-RG `
>>  --source-resource test-vm-02 `
>>  --dest-address yahoo.co.jp `
>>  --protocol Https
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "avgLatencyInMs": 93,
  "connectionStatus": "Reachable",
  "hops": [
    {
      "address": "10.1.0.6",
      "id": "xxxxxxxx-f15c-41bc-a5ff-4e219e415eb5",
      "issues": [],
      "links": [
        {
          "context": {},
          "issues": [],
          "linkType": "Internet",
          "nextHopId": "xxxxxxxx-81e8-4914-b762-64c382de0b75",
          "resourceId": "",
          "roundTripTimeAvg": 2,
          "roundTripTimeMax": 3,
          "roundTripTimeMin": 2
        }
      ],
      "nextHopIds": [
        "xxxxxxxx-81e8-4914-b762-64c382de0b75"
      ],
      "previousHopIds": [],
      "previousLinks": [],
      "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Test-RG/providers/Microsoft.Compute/virtualMachines/test-vm-02",
      "type": "Source"
    },
    {
      "address": "182.22.25.124",
      "id": "xxxxxxxx-81e8-4914-b762-64c382de0b75",
      "issues": [],
      "links": [],
      "nextHopIds": [],
      "previousHopIds": [
        "xxxxxxxx-f15c-41bc-a5ff-4e219e415eb5"
      ],
      "previousLinks": [
        {
          "context": {},
          "issues": [],
          "linkType": "Internet",
          "nextHopId": "xxxxxxxx-f15c-41bc-a5ff-4e219e415eb5",
          "resourceId": "",
          "roundTripTimeAvg": null,
          "roundTripTimeMax": null,
          "roundTripTimeMin": null
        }
      ],
      "resourceId": null,
      "type": "Internet"
    }
  ],
  "maxLatencyInMs": 172,
  "minLatencyInMs": 46,
  "probesFailed": 0,
  "probesSent": 3
}
PS C:\>

記載例2:ICMPで疎通確認する

任意の宛先にICMPで疎通できるかを確認します。
今回は [10.4.0.4] という異なるサブネット内の仮想マシンに疎通確認してみます。

az network watcher test-connectivity `
 --resource-group Test-RG `
 --source-resource test-vm-02 `
 --dest-address 10.4.0.4 `
 --protocol Icmp

以下のような出力となり、こちらも[“connectionStatus”: “Reachable”] となっているので、今回は疎通できたことが分かりました。

PS C:\> az network watcher test-connectivity `
>>  --resource-group Test-RG `
>>  --source-resource test-vm-02 `
>>  --dest-address 10.4.0.4 `
>>  --protocol Icmp
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "avgLatencyInMs": 1,
  "connectionStatus": "Reachable",
  "hops": [
    {
      "address": "10.1.0.6",
      "id": "xxxxxxxx-8c04-4656-b95a-898a93b6cf1d",
      "issues": [],
      "links": [
        {
          "context": {
            "PeeringAllowGatewayTransit": "False",
            "PeeringAllowIPForwarding": "True",
            "PeeringAllowVNetAccess": "True",
            "PeeringID": "xxxxxxxx-3826-0c5e-0085-5adad00d27e4",
            "PeeringRemoteVNetRegion": null,
            "PeeringResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Test-RG/providers/Microsoft.Network/virtualNetworks/vnet-test/virtualNetworkPeerings/peer-to-tetrgvnet",
            "PeeringUseRemoteGateways": "False"
          },
          "issues": [],
          "linkType": "VirtualNetworkPeering",
          "nextHopId": "xxxxxxxx-49ed-46a4-a658-0498cc7717a8",
          "resourceId": "",
          "roundTripTimeAvg": 2,
          "roundTripTimeMax": 2,
          "roundTripTimeMin": 2
        }
      ],
      "nextHopIds": [
        "xxxxxxxx-49ed-46a4-a658-0498cc7717a8"
      ],
      "previousHopIds": [],
      "previousLinks": [],
      "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Test-RG/providers/Microsoft.Compute/virtualMachines/test-vm-02",
      "type": "Source"
    },
    {
      "address": "10.4.0.4",
      "id": "xxxxxxxx-49ed-46a4-a658-0498cc7717a8",
      "issues": [],
      "links": [],
      "nextHopIds": [],
      "previousHopIds": [
        "xxxxxxxx-8c04-4656-b95a-898a93b6cf1d"
      ],
      "previousLinks": [
        {
          "context": {
            "PeeringAllowGatewayTransit": "False",
            "PeeringAllowIPForwarding": "True",
            "PeeringAllowVNetAccess": "True",
            "PeeringID": "xxxxxxxx-3826-0c5e-0085-5adad00d27e4",
            "PeeringRemoteVNetRegion": null,
            "PeeringResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestResourceGroup/providers/Microsoft.Network/virtualNetworks/TestResourceGroup-vnet/virtualNetworkPeerings/peer-to-testvm",
            "PeeringUseRemoteGateways": "False"
          },
          "issues": [],
          "linkType": "VirtualNetworkPeering",
          "nextHopId": "xxxxxxxx-8c04-4656-b95a-898a93b6cf1d",
          "resourceId": "",
          "roundTripTimeAvg": null,
          "roundTripTimeMax": null,
          "roundTripTimeMin": null
        }
      ],
      "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/TestResourceGroup/providers/Microsoft.Network/networkInterfaces/testvm984/ipConfigurations/ipconfig1",
      "type": "VirtualNetwork"
    }
  ],
  "maxLatencyInMs": 3,
  "minLatencyInMs": 1,
  "probesFailed": 0,
  "probesSent": 10
}
PS C:\>

[参考] 結果の可読性を上げてみる

結果の出力は情報量が多いので、コマンドの結果を加工することで結果の可読性が上がります
以下に加工したコマンドの例を記載しておきます。

$response = az network watcher test-connectivity `
 --resource-group Test-RG `
 --source-resource test-vm-02 `
 --dest-address 10.4.0.4 `
 --protocol Icmp `
 | ConvertFrom-Json

 #疎通できたのかのステータスを取得する
$response | select "connectionStatus"

 #ホップするアドレスを表示する
$response.hops | select "address"

・加工したコマンドの実行結果

加工したコマンドの実行結果

拡張機能をインストールしていないとエラーとなる

上記コマンドを実行するためには仮想マシンに拡張機能「NetworkWatcherAgent」のインストールが必要です。

拡張機能がインストールされていないとコマンドを実行できず、以下のように「Code: NetworkWatcherVmExtensionNotInstalled」が表示されてエラーとなります。

「NetworkWatcherVmExtensionNotInstalled」が表示されてエラーとなる

AzureCLIを利用した拡張機能のインストール方法については以下の記事でまとめていますので参考にしてください。

Azure仮想マシンに拡張機能をインストールしてみた
AzureCLIを利用してAzure仮想マシンに拡張機能をインストールしてみました。 事前準備 最初に利用できる拡張機能を以下のコマンドで取得します。 az vm extension image list 以下のように出力されるので、必要な...

Azureポータルからも実施可能

「接続のトラブルシューティング」を利用した疎通確認はAzureポータル上からも実行可能です。

Azureポータル上から接続のトラブルシューティングを実行する方法は以下の記事にまとめていますので参考にしてください。

Azureポータル上から特定の宛先に疎通確認してみた
Network Watcherの「接続のトラブルシューティング」という機能を試してみました。この機能を利用することでAzure上にある仮想マシンのOS内に入らずにポータル上から特定の宛先に対して疎通確認することが可能となります。また、少し疑問に思った接続のトラブルシューティングの挙動についても合わせて試してみました。

タイトルとURLをコピーしました