演習 - Network Watcher の監視ツールと診断ツールを使用したネットワークのトラブルシューティング

完了

Azure Network Watcher を使用すると、仮想マシン (VM) の通信を妨げる構成エラーを診断するのに役立ちます。

通信できない 2 つの VM があるとします。 あなたは、問題を診断して可能な限り迅速に解決したいと考えています。 これを行うため、Network Watcher を使用したいと思っています。

ここでは、異なるサブネット内の 2 つの VM 間の接続に関するトラブルシューティングを行います。

重要

この演習を行うには、独自の Azure サブスクリプションが必要です。また、料金が発生することがあります。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

仮想ネットワークと VM を構成する

まず、インフラストラクチャの作成から始めます。 また、次のような構成エラーも意図的に作成します。

  1. ブラウザーで Azure Cloud Shell セッションを開きます。

  2. リソースを作成するディレクトリを開きます。

  3. Cloud Shell メニュー バーの左上にある [Bash] を選択します。

  4. サブスクリプションでサポートされているリージョンを一覧表示します。

    az account list-locations
    
  5. リソース グループを作成し、次のコードを実行して変数名 RG に割り当て、<resource group name> を自分のリソース グループの名前に、<name> を前の出力のリージョンの name に置き換えます。

    az group create --name <resource group name> --location <name>
    RG=<resource group name>
    
  6. 次のコマンドを実行して、FrontendSubnet という名前のサブネットを持つ MyVNet1 という名前の仮想ネットワークを作成します。

    az network vnet create \
        --resource-group $RG \
        --name MyVNet1 \
        --address-prefixes 10.10.0.0/16 \
        --subnet-name FrontendSubnet \
        --subnet-prefixes 10.10.1.0/24
    
  7. 次のコマンドを実行して、BackendSubnet という名前の別のサブネットを作成します。

    az network vnet subnet create \
    --address-prefixes 10.10.2.0/24 \
    --name BackendSubnet \
    --resource-group $RG \
    --vnet-name MyVNet1
    
  8. 次のコマンドを実行して FrontendSubnet に VM をデプロイし、<password> を任意の複雑なパスワードに置き換えます。

    az vm create \
        --resource-group $RG \
        --name FrontendVM \
        --vnet-name MyVNet1 \
        --subnet FrontendSubnet \
        --image Win2019Datacenter \
        --admin-username azureuser \
        --admin-password <password>
    

    Note

    エラー "partofthepassword: event not found" (partofthepassword: イベントが見つかりません) が発生した場合は、許可された文字を使用して新しいパスワードを作成します。

  9. 次のコードを実行して、FrontendVM に IIS をインストールします。

    az vm extension set \
        --publisher Microsoft.Compute \
        --name CustomScriptExtension \
        --vm-name FrontendVM \
        --resource-group $RG \
        --settings '{"commandToExecute":"powershell.exe Install-WindowsFeature -Name Web-Server"}' \
        --no-wait
    
  10. 次のコマンドを実行して BackendSubnet に仮想マシンをデプロイし、<password> を任意の複雑なパスワードに置き換えます。

    az vm create \
        --resource-group $RG \
        --name BackendVM \
        --vnet-name MyVNet1 \
        --subnet BackendSubnet \
        --image Win2019Datacenter \
        --admin-username azureuser \
        --admin-password <password>
    
  11. 次のコマンドを実行して、BackendVM に IIS をインストールします。

    az vm extension set \
        --publisher Microsoft.Compute \
        --name CustomScriptExtension \
        --vm-name BackendVM \
        --resource-group $RG \
        --settings '{"commandToExecute":"powershell.exe Install-WindowsFeature -Name Web-Server"}' \
        --no-wait
    
  12. 次のコマンドを入力して、ネットワーク セキュリティ グループ (NSG) MyNsg を作成します。

    az network nsg create \
        --name MyNsg \
        --resource-group $RG
    
  13. VM 間の通信を妨げる構成エラーを作成します。

    az network nsg rule create \
        --resource-group $RG \
        --name MyNSGRule \
        --nsg-name MyNsg \
        --priority 4096 \
        --source-address-prefixes '*' \
        --source-port-ranges '*' \
        --destination-address-prefixes '*' \
        --destination-port-ranges 80 443 3389 \
        --access Deny \
        --protocol TCP \
        --direction Inbound \
        --description "Deny from specific IP address ranges on 80, 443 and 3389."
    
  14. 次のコマンドを実行して、ネットワーク セキュリティ グループをサブネットに関連付けます。

    az network vnet subnet update \
        --resource-group $RG \
        --name BackendSubnet \
        --vnet-name MyVNet1 \
        --network-security-group MyNsg
    

ご利用のリージョンの Network Watcher を有効にする

次に、Azure CLI を使用して、インフラストラクチャと同じリージョンに Network Watcher を設定しましょう。

  1. このコマンドを実行して Network Watcher を有効にし、<location> を、このセッションの始めにリソース グループを作成したときに使用した Azure リージョンに置き換えます。
az network watcher configure \
    --enabled true \
    --resource-group $RG \
    --locations <location>

Network Watcher を使用してトポロジを表示する

これで、Azure portal の Network Watcher を使用して、異なるサブネットにある 2 台の VM 間の接続のトラブルシューティングを行えるようになりました。 同僚から、2 つの VM 間で HTTP/HTTPS 経由の接続の問題が報告されています。 まず、ネットワーク トポロジを調査します。

  1. Azure portal にサインインします。

  2. グローバル検索で「Network Watcher」と入力し、そのサービスを選択します。 Network Watcher の [概要] ペインが表示され、アクティブなネットワーク ウォッチャーが一覧に表示されます。

  3. [Network Watcher] メニューで、[監視] の下にある [トポロジ] を選択します。 [Network Watcher | トポロジ] ウィンドウが表示されます。

  4. ドロップダウン フィールドで、この演習用の [サブスクリプション][リソース グループ] を選択します。 MyVNet1 のネットワーク トポロジには、フロントエンドとバックエンドの VM インターフェイスが表示されます。 これは、この演習の開始時に作成した仮想ネットワークです。

    演習のネットワーク トポロジを示すスクリーンショット。

接続モニターを使用してバックエンドからフロントエンドへのテストを実行する

トポロジは正しいように見えます。 より詳細な情報を取得するために、接続モニターでいくつかのテストを設定してみましょう。 まず、バックエンド VM からフロントエンド VM へのテストを作成します。

  1. [Network Watcher] メニューで、[監視] の下にある [接続モニター] を選択します。 [Network Watcher | 接続モニター] の [概要] ペインが表示されます。

  2. コマンド バーで、[作成] を選択します。 [接続モニターの作成] ページが表示されます。

  3. [基本] タブで、各設定に対して次の値を入力します。

    設定
    接続モニター名 Back-to-front-HTTP-test
    サブスクリプション ドロップダウン リストからサブスクリプションを選択します
    リージョン リソースをデプロイした Azure リージョンを選択します
    ワークスペースの構成 接続モニターによって作成されたワークスペースの使用 (既定) をオンにします
  4. [次へ: テスト グループ] を選択します。 [テスト グループの詳細の追加] ウィンドウが表示されます。

  5. テスト グループ名として「Back-to-front-HTTP-test-group」を入力します。

  6. [ソース] ボックスで、[ソースの追加] を選択します。 [ソースの追加] ウィンドウが表示されます。

  7. [Azure エンドポイント] タブで、[サブネット] を選択し、お使いのサブスクリプションを確実に選択してから、一覧で [BackendSubnet] を選択します。

    Network Watcher バックエンド サブネット有効化のスクリーンショット。

  8. [エンドポイントの追加] を選択します。 [ソース] ボックスで、BackendSubnet がソースとして識別されます。 このエンドポイントを選択し、[編集] を選択して、名前を BackendSubnet に変更し、[保存] を選択します。

    エンドポイント名の編集を示すスクリーンショット。

  9. [テスト構成] ボックスで、[テスト構成の追加] を選択します。 [テスト構成の追加] ウィンドウが表示されます。

  10. [新しい構成] タブで、各設定に対して次の値を入力します。

    設定
    テスト構成名 Back-to-front-HTTP-test-configuration
    Protocol HTTP
    宛先ポート 80
    テストの頻度 30 秒ごと
    "残りの設定は既定値のままにします"
  11. [テスト構成の追加] を選択して、このテスト構成をテスト グループに追加します。 テスト構成が識別された状態で、[テスト グループの詳細の追加] が再表示されます。

  12. [宛先] ボックスで、[宛先の追加] を選択します。 [宛先の追加] ウィンドウが表示されます。

  13. [Azure エンドポイント] タブで、[サブネット] を選択し、お使いのサブスクリプションを確実に選択してから、一覧で [FrontendSubnet] を選択します。

  14. [エンドポイントの追加] を選択します。 FrontendSubnet が宛先として識別された状態で、[テスト グループの詳細の追加] が再表示されます。

  15. ウィンドウの下部で [テスト グループの追加]を選択します。 [接続モニターの作成] ペインが表示されます。

  16. [テスト グループ] タブに、ソースがバックエンドとして、宛先がフロントエンドとして表示されているテスト グループが一覧表示されたことを確認します。

  17. [確認と作成][作成] の順に選択します。

テストが [接続モニター] ペインに表示されない場合は、[更新] ボタンを選択します。 NSG はバックエンド サブネットに関連付けられているため、Back-to-front-HTTP-test の結果には、バックエンド VM からフロントエンド VM にトラフィックが問題なく流れていることが表示されるはずです。

接続モニターを使用してフロントエンドからバックエンドへのテストを実行する

反対方向で同じテストを実行します。 接続モニターで別のテストを設定してみましょう。 まず、フロントエンド VM からバックエンド VM へのテストを作成します。

  1. [接続モニター] ペインで、[作成] を選択します。

  2. [基本] タブで、各設定に対して次の値を入力します。

    設定
    接続モニター名 Front-to-back-HTTP-test
    サブスクリプション ドロップダウン リストからサブスクリプションを選択します
    リージョン リソースをデプロイした Azure リージョンを選択します
  3. [次へ: テスト グループ] を選択します。 [テスト グループの詳細の追加] ウィンドウが表示されます。

  4. [テスト グループ名] に「Front-to-back-HTTP-test-group」と入力して、[ソース] ボックスで [ソースの追加] を選択します。 [ソースの追加] ウィンドウが表示されます。

  5. [Azure エンドポイント] タブで、[サブネット] を選択し、お使いのサブスクリプションを確実に選択してから、一覧で [FrontendSubnet] を選択します。

  6. [エンドポイントの追加] を選択します。 [ソース] ボックスで、BackendSubnet がソースとして識別されます。 このエンドポイントを選択し、[編集] を選択して、名前を FrontendSubnet に変更し、[保存] を選択します。

  7. [テスト構成] ボックスで、[テスト構成の追加] を選択します。 [テスト構成の追加] ウィンドウが表示されます。

  8. [新しい構成] タブで、各設定に対して次の値を入力します。

    設定
    テスト構成名 Front-to-back-HTTP-test-configuration
    Protocol HTTP
    宛先ポート 80
    テストの頻度 30 秒ごと
    "残りの設定は既定値をそのまま使用します"
  9. [テスト構成の追加] を選択します。 テスト構成が識別された状態で、[テスト グループの詳細の追加] が再表示されます。

  10. [宛先] ボックスで、[宛先の追加] を選択します。 [宛先の追加] ウィンドウが表示されます。

  11. [Azure エンドポイント] タブで、[サブネット] を選択し、お使いのサブスクリプションを確実に選択してから、一覧で [BackendSubnet] を選択します。

  12. [エンドポイントの追加] を選択します。 BackendSubnet が宛先として識別された状態で、[テスト グループの詳細の追加] ペインが再表示されます。

  13. ウィンドウの下部で [テスト グループの追加]を選択します。 [接続モニターの作成] ウィンドウが再表示されます。

  14. [テスト グループ] タブに、Front-to-back-HTTP-test-group が一覧表示されたことを確認します。

  15. [確認と作成][作成] の順に選択します。

テストが [接続モニター] ペインに表示されない場合は、[更新] ボタンを選択します。 NSG はバックエンド サブネットに関連付けられているため、Front-to-back-HTTP-test の結果には、フロントエンド VM からバックエンド VM に流れるトラフィックはないことが表示されるはずです。

IP フロー検証を使用して接続をテストする

IP フロー検証ツールを使用して、詳細情報を取得してみましょう。

  1. [Network Watcher] を選択し、リソース メニューの [ネットワーク診断ツール][IP フロー検証] を選択します。

  2. 各設定に次の値を入力してテストを構成してから、[確認] を選択します。

    設定
    サブスクリプション サブスクリプションを選択します。
    リソース グループ リソース グループを選択します
    仮想マシン BackendVM
    ネットワーク インターフェイス BackendVMVMNic
    プロトコル TCP
    Direction 受信
    ローカル IP アドレス 10.10.2.4
    ローカル ポート 3389
    リモート IP 10.10.1.4
    リモート ポート 3389

    IP フロー テストを示すスクリーンショット。

  3. [結果] には、NSG およびセキュリティの規則のためにアクセスが拒否されたことが示されます。

この演習では、Network Watcher ツールを使用して、2 つのサブネット間の接続の問題を検出しました。 通信は、一方向は許可されていますが、NSG ルールによって逆方向はブロックされます。