接続のトラブルシューティングを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」が表示されてエラーとなります。
AzureCLIを利用した拡張機能のインストール方法については以下の記事でまとめていますので参考にしてください。
Azureポータルからも実施可能
「接続のトラブルシューティング」を利用した疎通確認はAzureポータル上からも実行可能です。
Azureポータル上から接続のトラブルシューティングを実行する方法は以下の記事にまとめていますので参考にしてください。