複数のネットワーク インターフェイス カードを使用して Linux 仮想マシンを Azure に作成する方法

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

この記事では、Azure CLI を使用して複数の NIC を持つ VM を作成する方法について説明します。

関連リソースを作成する

最新の Azure CLI をインストールし、az login を使用して Azure アカウントにログインします。

次の例では、パラメーター名を独自の値を置き換えます。 たとえば、myResourceGroupmystorageaccountmyVM といったパラメーター名にします。

最初に、az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroup --location eastus

az network vnet create で仮想ネットワークを作成します。 次の例では、myVnet という名前の仮想ネットワークと mySubnetFrontEnd という名前のサブネットを作成します。

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 10.0.0.0/16 \
    --subnet-name mySubnetFrontEnd \
    --subnet-prefix 10.0.1.0/24

az network vnet subnet create を使用してバックエンド トラフィックのサブネットを作成します。 次の例では、mySubnetBackEnd という名前のサブネットを作成します。

az network vnet subnet create \
    --resource-group myResourceGroup \
    --vnet-name myVnet \
    --name mySubnetBackEnd \
    --address-prefix 10.0.2.0/24

az network nsg create で、ネットワーク セキュリティ グループを作成します。 次の例では、myNetworkSecurityGroup という名前のネットワーク セキュリティ グループを作成します。

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

複数の NIC を作成して構成する

az network nic create を使用して、2 つの NIC を作成します。 次の例では、ネットワーク セキュリティ グループに接続された、myNic1myNic2 という名前の 2 つの NIC を作成します (1 つの NIC が各サブネットに接続します)。

az network nic create \
    --resource-group myResourceGroup \
    --name myNic1 \
    --vnet-name myVnet \
    --subnet mySubnetFrontEnd \
    --network-security-group myNetworkSecurityGroup
az network nic create \
    --resource-group myResourceGroup \
    --name myNic2 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

VM を作成して NIC を接続する

VM を作成するとき、--nics を使用して、作成した NIC を指定します。 VM のサイズを選択する際には注意が必要です。 1 つの VM に追加できる NIC の合計数には制限があります。 詳しくは、 Linux VM のサイズに関する記事をご覧ください。

az vm create を使用して VM を作成します。 次の例では、myVM という名前の VM を作成します。

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics myNic1 myNic2

複数の NIC 用にゲスト OS を構成する」の手順で、ゲスト OS にルーティング テーブルを追加します。

VM に NIC を追加する

前の手順では、複数の NIC を含む VM を作成しました。 Azure CLI を使用して NIC を既存の VM に追加することもできます。 VM のサイズによってサポートされる NIC の数が異なります。VM のサイズを決める際はご注意ください。 必要な場合は、VM のサイズを変更できます

az network nic create を使用して別の仮想 NIC を作成します。 次の例では、バックエンドのサブネットおよび前の手順で作成されたネットワーク セキュリティ グループに接続された myNic3 という名前の NIC を作成します。

az network nic create \
    --resource-group myResourceGroup \
    --name myNic3 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

NIC を既存の VM に追加するには、最初に az vm deallocate を使用して VM の割り当てを解除します。 次の例では、myVM という名前の VM の割り当てを解除します。

az vm deallocate --resource-group myResourceGroup --name myVM

az vm nic add を使用して NIC を追加します。 次の例では、myNic3myVM に追加します。

az vm nic add \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

az vm start を使用して VM を起動します。

az vm start --resource-group myResourceGroup --name myVM

複数の NIC 用にゲスト OS を構成する」の手順で、ゲスト OS にルーティング テーブルを追加します。

NIC を VM から削除する

NIC を既存の VM から削除するには、最初に az vm deallocate を使用して VM の割り当てを解除します。 次の例では、myVM という名前の VM の割り当てを解除します。

az vm deallocate --resource-group myResourceGroup --name myVM

az vm nic remove を使用して NIC を削除します。 次の例では、myNic3myVM から削除します。

az vm nic remove \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

az vm start を使用して VM を起動します。

az vm start --resource-group myResourceGroup --name myVM

Resource Manager テンプレートを使用して複数の NIC を作成する

Azure Resource Manager テンプレートで宣言型の JSON ファイルを使用して環境を定義します。 詳しくは、「Azure Resource Manager の概要」をご覧ください。 Resource Manager テンプレートでは、複数の NIC の作成など、デプロイ時にリソースの複数のインスタンスを作成することができます。 copy を使用して、作成するインスタンスの数を指定します。

"copy": {
    "name": "multiplenics"
    "count": "[parameters('count')]"
}

詳細については、copy を使用した複数のインスタンスの作成に関する記事を参照してください。

copyIndex() を使用してリソース名に数値を追加することもできます。これにより、myNic1myNic2 などを作成することができます。インデックス値を追加する例を次に示します。

"name": "[concat('myNic', copyIndex())]",

完全な例については、「 Resource Manager テンプレートを使用して複数の NIC を作成する」を参照してください。

複数の NIC 用にゲスト OS を構成する」の手順で、ゲスト OS にルーティング テーブルを追加します。

複数の NIC 用にゲスト OS を構成する

前の手順では、仮想ネットワークとサブネットを作成し、NIC を接続した後、VM を作成しました。 パブリック IP アドレスと SSH トラフィックを許可するネットワーク セキュリティ グループの規則は作成していません。 複数の NIC 用にゲスト OS を構成するには、リモート接続を許可し、VM 上でローカルにコマンドを実行する必要があります。

SSH トラフィックを許可するには、次のように az network nsg rule create を使用してネットワーク セキュリティ グループの規則を作成します。

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

az network public-ip create を使用してパブリック IP アドレスを作成し、az network nic ip-config update を使用してこれを最初の NIC に割り当てます。

az network public-ip create --resource-group myResourceGroup --name myPublicIP

az network nic ip-config update \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --name ipconfig1 \
    --public-ip myPublicIP

VM のパブリック IP アドレスを表示するには、次のように az vm show を使用します。

az vm show --resource-group myResourceGroup --name myVM -d --query publicIps -o tsv

次に、VM のパブリック IP アドレスに SSH 接続します。 前の手順で指定した既定のユーザー名は azureuser でした。 自分のユーザー名とパブリック IP アドレスを指定してください。

ssh azureuser@137.117.58.232

セカンダリ ネットワーク インターフェイスとの間で送受信を行うには、セカンダリ ネットワーク インターフェイスごとに、オペレーティング システムに永続的なルートを手動で追加する必要があります。 この記事では、eth1 がセカンダリ インターフェイスです。 オペレーティング システムに永続的なルートを追加する方法は、ディストリビューションによって異なります。 手順については、ディストリビューションのドキュメントを参照してください。

オペレーティング システムにルートを追加する場合、ゲートウェイ アドレスは、ネットワーク インターフェイスがあるサブネットの最初のアドレスです。 たとえば、サブネットに 10.0.2.0/24 の範囲が割り当てられている場合、ルートに対して指定するゲートウェイは 10.0.2.1 になります。また、サブネットに 10.0.2.128/25 の範囲が割り当てられている場合、ルートに対して指定するゲートウェイは 10.0.2.129 です。 ルートの宛先には特定のネットワークを定義できます。また、インターフェイスのすべてのトラフィックが指定されたゲートウェイを通過するようにするには、0.0.0.0 の宛先を指定します。 各サブネットのゲートウェイは仮想ネットワークによって管理されます。

セカンダリ インターフェイスのルートを追加したら、route -n を使用してそのルートがルート テーブルに含まれていることを確認します。 この記事の VM に 2 つのネットワーク インターフェイスが追加されたルート テーブルの出力例を次に示します。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.1.1        255.255.255.255 UGH   0      0        0 eth0
169.254.169.254 10.0.1.1        255.255.255.255 UGH   0      0        0 eth0

再起動後にルート テーブルを再度確認して、追加したルートが再起動後も保持されていることを確認します。 接続をテストするには、たとえば、次のコマンドを入力します。ここで、eth1 は、セカンダリ ネットワーク インターフェイスの名前です。

ping bing.com -c 4 -I eth1

次のステップ

複数の NIC を持つ VM を作成する際は、 Linux VM のサイズ を確認してください。 VM の各サイズでサポートされている NIC の最大数に注意してください。

VM をさらにセキュリティで保護するには、Just In Time VM アクセスを使用します。 この機能は、必要に応じて一定期間にわたり、SSH トラフィックに対してネットワーク セキュリティ グループ規則を開きます。 詳細については、「Manage virtual machine access using just in time (ジャスト イン タイムを使用して仮想マシンへのアクセスを管理する)」を参照してください。