クイックスタート: Azure PowerShell を使用して仮想ネットワークを作成する

このクイックスタートでは、Azure PowerShell を使用して仮想ネットワークを作成する方法を示します。 次に、そのネットワークに 2 つの仮想マシン (VM) を作成し、インターネットからそれらの VM に安全に接続し、VM 間のプライベート通信を開始します。

仮想ネットワークは、Azure 内のプライベート ネットワークの基本的な構成ブロックです。 Azure Virtual Network では、VM などの Azure リソースが、相互に、およびインターネットと安全に通信することができます。

仮想ネットワークのクイックスタートで作成されたリソースの図。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。

  • Azure Cloud Shell または Azure PowerShell。

    このクイックスタートの手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloudshell を開く] を選択します。 [コピー] を選択してコードをコピーした後、Cloud Shell にそれを貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。

    また、Azure PowerShell をローカルにインストールしてコマンドレットを実行することもできます。 この記事の手順では、バージョン 5.4.1 以降の Azure PowerShell モジュールが必要です。 Get-Module -ListAvailable Az を実行して、インストールされているバージョンを見つけます。 アップグレードする必要がある場合は、Azure PowerShell モジュールの更新を参照してください。

    PowerShell をローカルで実行する場合は、Connect-AzAccount を実行して Azure に接続します。

リソース グループを作成する

New-AzResourceGroup を使用して、仮想ネットワークをホストするためのリソース グループを作成します。 次のコードを実行して、eastus2 Azure リージョンに test-rg という名前のリソース グループを作成します。

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

仮想ネットワークの作成

  1. New-AzVirtualNetwork を使用して、eastus2 の場所の test-rg リソース グループに、vnet-1 という名前で、IP アドレス プレフィックスが 10.0.0.0/16 の仮想ネットワークを作成します。

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure によって、仮想ネットワーク内のサブネットにリソースをデプロイします。 Add-AzVirtualNetworkSubnetConfig を使用して、subnet-1 という名前で、アドレス プレフィックスが 10.0.0.0/24 のサブネット構成を作成します。

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Set-AzVirtualNetwork を使用して、サブネット構成を仮想ネットワークに関連付けます。

    $virtualNetwork | Set-AzVirtualNetwork
    

Azure Bastion をデプロイする

Azure Bastion では、プライベート IP アドレスを使用することで、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) を介して、仮想ネットワーク内の VM にブラウザーを使用して接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 Azure Bastion の詳細については、「Azure Bastion とは」を参照してください。

時間単位の価格は、送信データの使用状況に関係なく、Bastion がデプロイされた時点から開始します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。

  1. 仮想ネットワークの Bastion サブネットを構成します。 このサブネットは、Bastion リソース専用に予約されており、名前を AzureBastionSubnet にする必要があります。

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. 構成を設定します。

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Bastion のパブリック IP アドレスを作成します。 Bastion ホストは、パブリック IP を使用して、ポート 443 経由で SSH と RDP にアクセスします。

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. New-AzBastion コマンドを使用して、AzureBastionSubnet に新しい Standard SKU Bastion ホストを作成します。

    $bastion = @{
        Name = 'bastion'
        ResourceGroupName = 'test-rg'
        PublicIpAddressRgName = 'test-rg'
        PublicIpAddressName = 'public-ip'
        VirtualNetworkRgName = 'test-rg'
        VirtualNetworkName = 'vnet-1'
        Sku = 'Basic'
    }
    New-AzBastion @bastion
    

Bastion リソースのデプロイには、約 10 分かかります。 仮想ネットワークに Bastion がデプロイされる間、次のセクションで VM を作成できます。

仮想マシンを作成する

New-AzVM を使用して、vm-1vm-2 という名前の 2 つの VM を、仮想ネットワークの subnet-1 サブネットに作成します。 資格情報を求められたら、VM のユーザー名とパスワードを入力します。

  1. 1 つ目の VM を作成するには、次のコードを使用します。

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-1"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-1"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-1"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    
  2. 2 つ目の VM を作成するには、次のコードを使用します。

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-2"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-2"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-2"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    

ヒント

-AsJob オプションを使用して、他のタスクを続行しながらバックグラウンドで VM を作成できます。 たとえば、 New-AzVM @vm1 -AsJobを実行します。 Azure でバックグラウンドで VM の作成を開始すると、次のような出力が返されます。

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM

Azure で VM を作成するには数分かかります。 Azure で VM の作成が完了すると、PowerShell に出力が返されます。

Note

Bastion ホストがある仮想ネットワーク内の VM には、パブリック IP アドレスが必要ありません。 Bastion がパブリック IP を提供し、VM はプライベート IP を使用してネットワーク内で通信します。 Bastion ホストがある仮想ネットワーク内のいずれの VM からも、パブリック IP を削除できます。 詳細については、「パブリック IP アドレスの関連付けを Azure VM から解除する」を参照してください。

Note

パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。

次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。

  • パブリック IP アドレスが VM に割り当てられます。
  • アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
  • Azure NAT Gateway リソースが VM のサブネットに割り当てられている。

フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。

Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する」を参照してください。

仮想マシンへの接続

  1. ポータルで、[仮想マシン] を検索して選択します。

  2. [仮想マシン] ページで、[vm-1] を選択します。

  3. vm-1[概要] 情報で、[接続] を選択します。

  4. [仮想マシンへの接続] ページで、[Bastion] タブを選択します。

  5. [Bastion を使用する] を選択します。

  6. VM の作成時に作成したユーザー名とパスワードを入力した後、[接続] を選択します。

VM 間の通信を開始する

  1. vm-1 の bash プロンプトで、ping -c 4 vm-2 を入力します。

    次のメッセージのような応答が表示されます。

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. vm-1 への Bastion 接続を閉じます。

  3. 仮想マシンに接続する」の手順を繰り返して、vm-2 に接続します。

  4. vm-2 の bash プロンプトで、ping -c 4 vm-1 を入力します。

    次のメッセージのような応答が表示されます。

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. vm-2 への Bastion 接続を閉じます。

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

仮想ネットワークと VM が用済みになったら、Remove-AzResourceGroup を使用して、リソース グループとそのリソースすべてを削除します。

Remove-AzResourceGroup -Name 'test-rg' -Force

次のステップ

このクイックスタートでは、2 つの VM を含む、既定のサブネットを指定した仮想ネットワークを作成しました。 Azure Bastion をデプロイし、それを使用して VM に接続し、VM 間で安全に通信しました。 仮想ネットワーク設定の詳細については、「仮想ネットワークの作成、変更、削除」をご覧ください。