Share via


クイック スタート: Azure CLI を使用して仮想マシン ネットワーク トラフィック フィルターの問題を診断する

このクイックスタートでは、仮想マシンをデプロイし、Network Watcher の IP フローの確認を使用して、さまざまな IP アドレスとの間の接続をテストします。 IP フロー検証の結果を使用して、トラフィックのブロックと通信エラーの原因となっているセキュリティ規則を特定し、それを解決する方法を確認します。 また、ネットワーク インターフェイスの有効なセキュリティ規則を使用して、セキュリティ規則でトラフィックが許可または拒否されている理由を判断する方法についても説明します。

Network Watcher クイックスタートで作成されるリソースを示す図。

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。

  • Azure Cloud Shell または Azure CLI。

    この記事の手順では、Azure Cloud Shell で Azure CLI コマンドを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。

    また、Azure CLI をローカルにインストールしてコマンドを実行することもできます。 このクイックスタートには、Azure CLI のバージョン 2.0 以降が必要です。 Azure CLI をローカルで実行する場合は、az login コマンドを使用して Azure にサインインします。

仮想マシンの作成

このセクションでは、米国東部リージョンに仮想ネットワークとサブネットを作成します。 その後、既定のネットワーク セキュリティ グループを使用して、サブネットに仮想マシンを作成します。

  1. az group create を使用してリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

    # Create a resource group.
    az group create --name 'myResourceGroup' --location 'eastus'
    
  2. az network vnet createを使用して、仮想ネットワークを作成します。

    # Create a virtual network and a subnet.
    az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24 
    
  3. az network nsg create を使用して、既定のネットワーク セキュリティ グループを作成します。

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    
  4. az vm create を使用して仮想マシンを作成します。 プロンプトが表示されたら、ユーザー名とパスワードを入力します。

    # Create a Linux virtual machine using the latest Ubuntu 20.04 LTS image.
    az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest'
    

IP フローの確認を使用してネットワーク通信をテストする

このセクションでは、Network Watcher の IP フローの確認機能を使用して、仮想マシンとの間のネットワーク通信をテストします。

  1. az network watcher test-ip-flow コマンドを使用して、IP フロー検証で myVM から 13.107.21.200 への送信通信をテストします (13.107.21.200 は、www.bing.com によって使用されるパブリック IP アドレスの 1 つです)。

    # Start the IP flow verify session to test outbound flow to www.bing.com.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '13.107.21.200:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    数秒後に、次の例と同様の出力が表示されます。

    Access  RuleName
    ------  --------
    Allow   defaultSecurityRules/AllowInternetOutBound
    

    このテスト結果は、既定のセキュリティ規則 AllowInternetOutBound が原因で 13.107.21.200 へのアクセスが許可されていることを示しています。 既定では、Azure 仮想マシンはインターネットにアクセスできます。

  2. RemoteIPAddress を「10.0.1.10」に変更し、テストを繰り返します。 10.0.1.10 は、myVNet アドレス空間内のプライベート IP アドレスです。

    # Start the IP flow verify session to test outbound flow to 10.0.1.10.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.0.1.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    数秒後に、次の例と同様の出力が表示されます。

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/AllowVnetOutBound
    

    2 番目のテスト結果は、既定のセキュリティ規則 AllowVnetOutBound が原因で 10.0.1.10 へのアクセスが許可されていることを示しています。 既定では、Azure 仮想マシンは、その仮想ネットワークのアドレス空間内のすべての IP アドレスにアクセスできます。

  3. RemoteIPAddress を「10.10.10.10」に変更し、テストを繰り返します。 10.10.10.10 は、myVNet アドレス空間内のプライベート IP アドレスです。

    # Start the IP flow verify session to test outbound flow to 10.10.10.10.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.10.10.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    数秒後に、次の例と同様の出力が表示されます。

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllOutBound
    

    3 番目のテストの結果は、既定のセキュリティ規則 DenyAllOutBound が原因で 10.10.10.10 へのアクセスが拒否されていることを示しています。

  4. directioninbound に、ローカル ポートを80 に、リモート ポートを 60000 に変更してテストを繰り返します。

    # Start the IP flow verify session to test inbound flow from 10.10.10.10.
    az network watcher test-ip-flow --direction 'inbound' --protocol 'TCP' --local '10.0.0.4:80' --remote '10.10.10.10:6000' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    数秒後に、次の例と類似した出力が表示されます。

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllInBound
    

    4 番目のテストの結果は、既定のセキュリティ規則 DenyAllInBound が原因で 10.10.10.10 からのアクセス拒否されていることを示しています。 既定では、仮想ネットワーク外部からの Azure 仮想マシンへのアクセスはすべて拒否されます。

セキュリティ規則の詳細を表示する

前のセクションの規則によって通信が許可または拒否された理由を特定するには、az network nic list-effective-nsg コマンドを使用して、myVM 仮想マシンのネットワーク インターフェイスに対して有効なセキュリティ規則を確認します。

# Get the effective security rules for the network interface of myVM.
az network nic list-effective-nsg --resource-group 'myResourceGroup' --name 'myVmVMNic'

返される出力には、www.bing.com への送信アクセスを許可した AllowInternetOutbound 規則に関する次の情報が含まれます。

{
  "access": "Allow",
  "destinationAddressPrefix": "Internet",
  "destinationAddressPrefixes": [
	"Internet"
  ],
  "destinationPortRange": "0-65535",
  "destinationPortRanges": [
	"0-65535"
  ],
  "direction": "Outbound",
  "expandedDestinationAddressPrefix": [
	"1.0.0.0/8",
	"2.0.0.0/7",
	"4.0.0.0/9",
	"4.144.0.0/12",
	"4.160.0.0/11",
	"4.192.0.0/10",
	"5.0.0.0/8",
	"6.0.0.0/7",
	"8.0.0.0/7",
	"11.0.0.0/8",
	"12.0.0.0/8",
	"13.0.0.0/10",
	"13.64.0.0/11",
	"13.104.0.0/13",
	"13.112.0.0/12",
	"13.128.0.0/9",
	"14.0.0.0/7",
	...
	...
	...
	"200.0.0.0/5",
	"208.0.0.0/4"
  ],
  "name": "defaultSecurityRules/AllowInternetOutBound",
  "priority": 65001,
  "protocol": "All",
  "sourceAddressPrefix": "0.0.0.0/0",
  "sourceAddressPrefixes": [
	"0.0.0.0/0",
	"0.0.0.0/0"
  ],
  "sourcePortRange": "0-65535",
  "sourcePortRanges": [
	"0-65535"
  ]
},

出力を見ると、アドレスのプレフィックス「13.104.0.0/13」が AllowInternetOutBound 規則のアドレスのプレフィックスの中にあることがわかります。 このプレフィックスには、www.bing.com への送信通信をテストするために使用した IP アドレス「13.107.21.200」が含まれます。

同様に、他の規則をチェックして、各規則におけるソースと宛先の IP アドレスのプレフィックスを確認できます。

リソースをクリーンアップする

myResourceGroup とそれに含まれるすべてのリソースが不要になったら、az group delete を使用してそれらを削除します。

# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes

次のステップ

このクイック スタートでは、VM を作成し、受信および送信ネットワーク トラフィック フィルターを診断しました。 ネットワーク セキュリティ グループの規則が、VM との間でやり取りされるトラフィックを許可または拒否することを学習しました。 セキュリティ規則およびセキュリティ規則を作成する方法について、さらに詳しく学習してください。

適切なネットワーク トラフィック フィルターを適用しても、ルーティングの構成が原因で仮想マシンへの通信が失敗する可能性があります。 仮想マシンのルーティングに関する問題の診断方法については、仮想マシン ネットワークのルーティングの問題の診断に関する記事を参照してください。 送信ルーティング、待ち時間、トラフィックのフィルタリングに関する問題を 1 つのツールで診断するには、Azure Network Watcher との接続のトラブルシューティングに関する記事を参照してください。