このクイックスタートでは、仮想マシンをデプロイし、Network Watcher の IP フローの確認を使用して、さまざまな IP アドレスとの間の接続をテストします。 IPフロー検証の結果を用いて、トラフィックをブロックし通信失敗を引き起こしているセキュリティルールを特定することができます。 また、問題を解決する方法も学べます。 また、ネットワーク インターフェイスの有効なセキュリティ規則を使用して、セキュリティ規則でトラフィックが許可または拒否されている理由を判断する方法についても説明します。
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
[前提条件]
アクティブなサブスクリプションを持つ Azure アカウント。
Azure Cloud Shell または Azure CLI。
この記事の手順では、Azure Cloud Shell で Azure CLI コマンドを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure CLI をローカルにインストールしてコマンドを実行することもできます。 このクイックスタートには、バージョン 2.0 以降の Azure CLI が必要です。 Azure CLIをローカルで実行している場合は、az loginコマンドを使ってAzureにサインインしてください。
仮想マシンを作成する
このセクションでは、米国東部リージョンに仮想ネットワークとサブネットを作成します。 その後、既定のネットワーク セキュリティ グループを使用して、サブネットに仮想マシンを作成します。
az group create を使用してリソース グループを作成します。 Azure リソース グループは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
# Create a resource group. az group create --name 'myResourceGroup' --location 'eastus'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/24az network nsg createを使ってデフォルトのネットワークセキュリティグループを作成します。
# Create a default network security group. az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'注
ネットワーク セキュリティ グループの既定の規則は、SSH を含むインターネットからの受信アクセスをすべてブロックします。 仮想マシンに接続するには、Azure Bastion を使用します。 詳細については、「 クイック スタート: 既定の設定で Azure Bastion をデプロイする」を参照してください。
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' --generate-ssh-keys
IPフロー検証によるネットワーク通信のテスト
このセクションでは、Network WatcherのIPフロー検証機能を使って、仮想マシンとのネットワーク通信をテストします。
az network watcher test-ip-flow コマンドを使って、my VMから13.107.21.200への送信通信を IP flow verify でテストしてください(
13.107.21.200はwww.bing.comで使われている公開IPアドレスの一つです):# 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 仮想マシンはインターネットにアクセスできます。
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/AllowVnetOutBound2 番目のテスト結果は、既定のセキュリティ規則 AllowVnetOutBound が原因で 10.0.1.10 へのアクセスが許可されていることを示しています。 既定では、Azure 仮想マシンは、その仮想ネットワークのアドレス空間内のすべての IP アドレスにアクセスできます。
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 ------ -------- Deny defaultSecurityRules/DenyAllOutBound3 番目のテストの結果は、既定のセキュリティ規則 DenyAllOutBound が原因で 10.10.10.10 へのアクセスが拒否されていることを示しています。
方向を inbound に変更し、ローカル ポートを 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 ------ -------- Deny defaultSecurityRules/DenyAllInBound4 番目のテストの結果は、既定のセキュリティ規則 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ルールの以下の情報が含まれています。
{
"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 ルールのアドレスプレフィックスの一つであることがわかります。 このプレフィックスはIPアドレス 13.107.21.200を含み、 www.bing.comへの送信をテストするために使いました。
同様に、他の規則をチェックして、各規則におけるソースと宛先の IP アドレスのプレフィックスを確認できます。
リソースをクリーンアップする
リソースが不要になったら、 az group delete を使って myResourceGroup リソースグループとその中にあるすべてのリソースを削除してください:
# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes