次の方法で共有


Azure PowerShellを使用して仮想マシンに複数の IP アドレスを割り当てる

Azure仮想マシン (VM) には、1 つ以上のネットワーク インターフェイス (NIC) が接続されています。 NIC には、1 つ以上の静的または動的パブリックおよびプライベート IP アドレスを割り当てることができます。

VM に複数の IP アドレスを割り当てると、次のことが可能になります。

  • 異なる IP アドレスと TLS/SSL 証明書を持つ複数のウェブサイトやサービスを、1 つのサーバーでホストする。

  • ファイアウォールやロード バランサーのような、ネットワーク仮想アプライアンスとして機能する。

  • 任意の NIC のプライベート IP アドレスを Azure Load Balancer バックエンド プールに追加する機能。 以前は、プライマリ NIC のプライマリ IP アドレスのみをバックエンド プールに追加できました。 複数の IP 構成の負荷分散方法の詳細については、複数の IP 構成の負荷分散に関する記事を参照してください。

VM に接続された各 NIC には、1 つ以上の IP 構成が関連付けられています。 各構成には、1 つの静的または動的プライベート IP アドレスが割り当てられています。 また、1 つのパブリック IP アドレス リソースが関連付けられている場合もあります。 Azureの IP アドレスの詳細については、Azure の IP アドレスに関するページを参照してください。

Note

1 つの NIC 上のすべての IP 構成は、同じサブネットに関連付けられている必要があります。 異なるサブネット上の複数の IP が必要な場合は、VM 上の複数の NIC を使用できます。 Azure内の VM 上の複数の NIC の詳細については、「複数の NIC を持つ VM の作成を参照してください。

NIC に割り当てることができるプライベート IP アドレスの数には上限があります。 Azure サブスクリプションで使用できるパブリック IP アドレスの数にも制限があります。 詳細については、Azureの制限に関する記事を参照してください。

この記事では、PowerShell を使用して、仮想マシンに複数の IP アドレスを追加する方法を説明します。

Prerequisites

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

  • Azure Cloud ShellまたはローカルにインストールAzure PowerShell。 Azure Cloud Shellでの PowerShell の使用の詳細については、「Azure Cloud Shell クイック スタートを参照してください。

    • PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 5.4.1 以降が必要です。 インストールされているバージョンを確認するには、Get-InstalledModule -Name Az を実行します。 アップグレードする必要がある場合は、「install Azure PowerShell moduleを参照してください。 Az.Network モジュールが 4.3.0 以降であることを確認します。 インストールされているモジュールを確認するには、コマンドGet-InstalledModule -Name "Az.Network"を使用します。 モジュールの更新が必要な場合は、必要に応じて Update-Module -Name "Az.Network" コマンドを使用します。
  • Azure PowerShellにサインインし、この機能を使用するサブスクリプションが選択されていることを確認します。 詳細については、「sign in with Azure PowerShell」を参照してください。

Note

この記事の手順では、すべての IP 構成を 1 つの NIC に割り当てていますが、複数の IP 構成を複数の NIC を持つ VM の任意の NIC に割り当てることもできます。 複数の NIC を持つ VM の作成方法については、「複数 NIC を持つ VM の作成」を参照してください。

「操作方法」の記事で作成されたネットワーク構成リソースの図。

"図: このハウツー記事で作成されたネットワーク構成リソースの図。"

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

Azure リソース グループは、Azure リソースがデプロイおよび管理される論理コンテナーです。

eastus2 の場所に myResourceGroup という名前の New-AzResourceGroup を使用してリソース グループを作成します。

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

仮想ネットワークの作成

このセクションでは、仮想マシン用の仮想ネットワークを作成します。

New-AzVirtualNetworkNew-AzVirtualNetworkSubnetConfig を使用して、1 つのサブネットを持つ仮想ネットワークを作成します。

## Create backend subnet config ##
$subnet = @{
    Name = 'myBackendSubnet'
    AddressPrefix = '10.1.0.0/24'
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet

## Create the virtual network ##
$vnet = @{
    Name = 'myVNet'
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus2'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig
}
New-AzVirtualNetwork @vnet

プライマリ パブリック IP アドレスを作成する

New-AzPublicIpAddress を使用して、プライマリ パブリック IP アドレスを作成します。

$ip1 = @{
    Name = 'myPublicIP-1'
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    IpAddressVersion = 'IPv4'
    Zone = 1,2,3
}
New-AzPublicIpAddress @ip1

ネットワーク セキュリティ グループの作成

このセクションでは、仮想マシンと仮想ネットワークのネットワーク セキュリティ グループを作成します。 SSH に対してポート 22 上で仮想マシンへの接続を許可する規則を作成します。

New-AzNetworkSecurityGroupNew-AzNetworkSecurityRuleConfig を使用して、ネットワーク セキュリティ グループと規則を作成します。

## Create rule for network security group and place in variable. ##
$nsgrule1 = @{
    Name = 'myNSGRuleSSH'
    Description = 'Allow SSH'
    Protocol = '*'
    SourcePortRange = '*'
    DestinationPortRange = '22'
    SourceAddressPrefix = 'Internet'
    DestinationAddressPrefix = '*'
    Access = 'Allow'
    Priority = '200'
    Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule1

## Create network security group ##
$nsg = @{
    Name = 'myNSG'
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus2'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

ネットワーク インターフェイスの作成

New-AzNetworkInterfaceNew-AzNetworkInterfaceIpConfig を使用して、仮想マシンのネットワーク インターフェイス (NIC) を作成します。 以前に作成したパブリック IP アドレスとネットワーク セキュリティ グループは、ネットワーク インターフェイスに関連付けられています。 ネットワーク インターフェイスは、前に作成した仮想ネットワークに接続されています。

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net

## Place the network security group into a variable. ##
$ns = @{
    Name = 'myNSG'
    ResourceGroupName = 'myResourceGroup'
}
$nsg = Get-AzNetworkSecurityGroup @ns

## Place the primary public IP address into a variable. ##
$pub1 = @{
    Name = 'myPublicIP-1'
    ResourceGroupName = 'myResourceGroup'
}
$pubIP1 = Get-AzPublicIPAddress @pub1

## Create a primary IP configuration for the network interface. ##
$IP1 = @{
    Name = 'ipconfig1'
    Subnet = $vnet.Subnets[0]
    PrivateIpAddressVersion = 'IPv4'
    PublicIPAddress = $pubIP1
}
$IP1Config = New-AzNetworkInterfaceIpConfig @IP1 -Primary

## Create a secondary IP configuration for the network interface. ##
$IP3 = @{
    Name = 'ipconfig3'
    Subnet = $vnet.Subnets[0]
    PrivateIpAddressVersion = 'IPv4'
    PrivateIpAddress = '10.1.0.6'
}
$IP3Config = New-AzNetworkInterfaceIpConfig @IP3

## Command to create a network interface. ##
$nic = @{
    Name = 'myNIC1'
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus2'
    NetworkSecurityGroup = $nsg
    IpConfiguration = $IP1Config,$IP3Config
}
New-AzNetworkInterface @nic

Note

静的 IP アドレスを追加するときは、NIC が接続されているサブネット上に未使用の有効なアドレスを指定する必要があります。

仮想マシンの作成

次のコマンドを使用して、仮想マシンを作成します。

$cred = Get-Credential

## Place network interface into a variable. ##
$nic = @{
    Name = 'myNIC1'
    ResourceGroupName = 'myResourceGroup'
}
$nicVM = Get-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = 'myVM'
    VMSize = 'Standard_DS1_v2'
}
$vmos = @{
    ComputerName = 'myVM'
    Credential = $cred
}
$vmimage = @{
    PublisherName = 'Debian'
    Offer = 'debian-11'
    Skus = '11'
    Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
      | Set-AzVMOperatingSystem @vmos -Linux `
      | Set-AzVMSourceImage @vmimage `
      | Add-AzVMNetworkInterface -Id $nicVM.Id

## Create the virtual machine for VMs ##
$vm = @{
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus2'
    VM = $vmConfig
    SshKeyName = 'mySSHKey'
    }
New-AzVM @vm -GenerateSshKey

セカンダリ プライベート IP アドレスとパブリック IP アドレスを追加する

New-AzPublicIpAddress を使用して、セカンダリ パブリック IP アドレスを作成します。

$ip2 = @{
    Name = 'myPublicIP-2'
    ResourceGroupName = 'myResourceGroup'
    Location = 'eastus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    IpAddressVersion = 'IPv4'
    Zone = 1,2,3
}
New-AzPublicIpAddress @ip2

New-AzNetworkInterfaceIpConfig を使用して、仮想マシンのセカンダリ IP 構成を作成します。

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net

## Place your virtual network subnet into a variable. ##
$sub = @{
    Name = 'myBackendSubnet'
    VirtualNetwork = $vnet
}
$subnet = Get-AzVirtualNetworkSubnetConfig @sub

## Place the secondary public IP address you created previously into a variable. ##
$pip = @{
    Name = 'myPublicIP-2'
    ResourceGroupName = 'myResourceGroup'
}
$pubIP2 = Get-AzPublicIPAddress @pip

## Place the network interface into a variable. ##
$net = @{
    Name = 'myNIC1'
    ResourceGroupName = 'myResourceGroup'
}
$nic = Get-AzNetworkInterface @net

## Create a secondary IP configuration for the network interface. ##
$IPc2 = @{
    Name = 'ipconfig2'
    Subnet = $vnet.Subnets[0]
    PrivateIpAddressVersion = 'IPv4'
    PrivateIpAddress = '10.1.0.5'
    PublicIPAddress = $pubIP2
}
$IP2Config = New-AzNetworkInterfaceIpConfig @IPc2

## Add the IP configuration to the network interface. ##
$nic.IpConfigurations.Add($IP2Config)

## Save the configuration to the network interface. ##
$nic | Set-AzNetworkInterface

VM オペレーティング システムに IP アドレスを追加する

複数のプライベート IP アドレスを構成して作成した VM に接続し、サインインします。 VM に追加したプライベート IP アドレスは、プライマリも含め、すべて手動で追加する必要があります。 お使いの VM オペレーティング システムに応じて、次の手順を実行します。

Windows Server

展開
  1. コマンド プロンプトまたは PowerShell を開きます。

  2. コマンド ラインで「ipconfig /all」を入力します。 DHCP によって割り当てられた プライマリ プライベート IP アドレスが表示されます。

  3. コマンド ラインに「 ncpa.cpl 」と入力して、 ネットワーク接続 の構成を開きます。

  4. 新しい IP アドレスが割り当てられているネットワーク アダプターの プロパティ を開きます。

  5. [インターネット プロトコル バージョン 4 (TCP/IPv4)] をダブルクリックします。

  6. [次の IP アドレスを使用する:] をクリックします。 次の値を入力します。

    Setting Value
    IPアドレス: プライマリ プライベート IP アドレスを入力します。
    サブネット マスク: IP アドレスに基づいてサブネット マスクを入力します。
    たとえば、サブネットが /24 サブネットの場合、サブネット マスクは 255.255.255.0 になります
    既定のゲートウェイ: サブネット内の最初の IP アドレスです。
    サブネットが 10.0.0.0/24 の場合、ゲートウェイの IP アドレスは 10.0.0.1 です
  7. [次の DNS サーバーのアドレスを使用する:] を選択します。 次の値を入力します。

    Setting Value
    優先 DNS サーバー: プライマリ DNS サーバーを入力します。
    168.63.129.16 の IP アドレスを入力して、指定された既定Azure DNS を使用します。
  8. [ 詳細設定 ] ボタンを選択します。

  9. [] を選択し、[] を追加します。

  10. Azure ネットワーク インターフェイスに追加したプライベート IP アドレスを入力します。 対応する サブネット マスクを入力します。 [] を選択し、[] を追加します。

  11. 前の手順を繰り返して、Azure ネットワーク インターフェイスに追加したプライベート IP アドレスを追加します。

Important

仮想マシンのオペレーティング システム内のAzure仮想マシンに割り当てられたパブリック IP アドレスを手動で割り当ててはいけません。 オペレーティング システム内で IP アドレスを手動で設定する場合は、Azure ネットワーク インターフェイスに割り当てられているプライベート IP アドレスと同じアドレスであることを確認します。 アドレスを正しく割り当てないと、仮想マシンへの接続が失われるおそれがあります。 詳細については、「IP アドレス設定を変更する」を参照してください。

プライベート IP アドレスの詳細については、プライベート IP アドレスに関する記事を参照してください。

  1. [ OK] を 選択して、セカンダリ IP アドレスの設定を閉じます。

  2. [ OK] を 選択してアダプターの設定を閉じます。 RDP 接続が再確立されます。

  3. コマンド プロンプトまたは PowerShell を開きます。

  4. コマンド ラインで「ipconfig /all」を入力します。

  5. プライマリとセカンダリのプライベート IP アドレスが構成に存在することを確認します。

    PS C:\Users\azureuser> ipconfig /all
    
    Windows IP Configuration
    
       Host Name . . . . . . . . . . . . : myVM
       Primary Dns Suffix  . . . . . . . :
       Node Type . . . . . . . . . . . . : Hybrid
       IP Routing Enabled. . . . . . . . : No
       WINS Proxy Enabled. . . . . . . . : No
    
    Ethernet adapter Ethernet:
    
       Connection-specific DNS Suffix  . :
       Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
       Physical Address. . . . . . . . . : 00-0D-3A-E6-CE-A3
       DHCP Enabled. . . . . . . . . . . : No
       Autoconfiguration Enabled . . . . : Yes
       Link-local IPv6 Address . . . . . : fe80::a8d1:11d5:3ab2:6a51%5(Preferred)
       IPv4 Address. . . . . . . . . . . : 10.1.0.4(Preferred)
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       IPv4 Address. . . . . . . . . . . : 10.1.0.5(Preferred)
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       IPv4 Address. . . . . . . . . . . : 10.1.0.6(Preferred)
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 10.1.0.1
       DHCPv6 IAID . . . . . . . . . . . : 100666682
       DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-2A-A8-26-B1-00-0D-3A-E6-CE-A3
       DNS Servers . . . . . . . . . . . : 168.63.129.16
       NetBIOS over Tcpip. . . . . . . . : Enabled
    
  6. ウィンドウで使用されるプライマリ プライベート IP アドレスが、Azure VM ネットワーク インターフェイスのプライマリ IP アドレスと同じであることを確認します。 詳細については、「複数の IP アドレスを持つ VM からインターネットにアクセスできないAzure Windowsを参照してください。

検証 (Windows Server)

パブリック IP 経由でセカンダリ IP 構成からのインターネット接続を確認するには、次のコマンドを使用します。 10.1.0.5 を、Azure VM ネットワーク インターフェイスに追加したセカンダリ プライベート IP アドレスに置き換えます。

ping -S 10.1.0.5 outlook.com

Note

セカンダリ IP 構成でインターネットに ping を実行できるのは、その構成にパブリック IP アドレスが関連付けられている場合です。 プライマリ IP 構成では、インターネットに ping を実行するためにパブリック IP アドレスは必要ありません。

SUSE Linux Enterprise および openSUSE

展開 SUSE ベースのディストリビューションでは、cloud-netconfig パッケージのcloud-netconfig-azure プラグインを使用して IP 構成を管理します。 管理者側では手動の手順は必要ありません。 プラットフォームで設定されたインターフェイスの最初の IP アドレスは、DHCP 経由で割り当てられます。 cloud-netconfig プラグインは、Azure インスタンス メタデータ サービス API を継続的に (1 分に 1 回) プローブして、インターフェイスに割り当てられた IP アドレスを増やし、セカンダリ IP アドレスとして自動的に追加または削除します。

このプラグインは、既定で新しいイメージにインストールされ、有効になっているはずです。 古いワークロードの構成手順については、次を参照してください: https://www.suse.com/c/multi-nic-cloud-netconfig-ec2-azure/

Ubuntu 14/16

展開

Linux ディストリビューションの最新ドキュメントを調べることをお勧めします。

  1. ターミナル ウィンドウを開きます。

  2. 自身がルート ユーザーになっていることを確認します。 そうでない場合は、次のコマンドを入力します。

    sudo -i
    
  3. ネットワーク インターフェイスの構成ファイルを更新します ( 'eth0' を想定)。

    • DHCP の既存の行アイテムを保持します。 プライマリ IP アドレスが以前と同じ構成のまま維持されます。

    • 次のコマンドを使用して、別の静的 IP アドレスの構成を追加します。

      cd /etc/network/interfaces.d/
      ls
      

      .cfg ファイルが表示されます。

  4. ファイル を開きます。 ファイルの末尾に次の行が表示されます。

    auto eth0
    iface eth0 inet dhcp
    
  5. ファイルの行の最後に、次の行を追加します。 10.1.0.5 を自分のプライベート IP アドレスとサブネット マスクに置き換えます。

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    

    他のプライベート IP アドレスを追加するには、ファイルを編集し、後続の行に新しいプライベート IP アドレスを追加します。

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    iface eth0 inet static
    address 10.1.0.6
    netmask 255.255.255.0
    
  6. 次のコマンドを使用して、ファイルの内容を保存します。

    :wq
    
  7. 次のコマンドを使用して、ネットワーク インターフェイスをリセットします。

    ifdown eth0 && ifup eth0
    

    Important

    リモート接続を使用する場合は、同じ行で ifdown と ifup の両方を実行します。

  8. 次のコマンドを使用して、IP アドレスがネットワーク インターフェイスに追加されたことを確認します。

    ip addr list eth0
    

    追加した IP アドレスが、リストの一部として表示されます。 Example:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe04:4516/64 scope link
       valid_lft forever preferred_lft forever
    

検証 (Ubuntu 14/16)

関連付けたパブリック IP を使用してセカンダリ IP 構成からインターネットに接続できることを確認するには、次のコマンドを使用します。

ping -I 10.1.0.5 outlook.com

Note

セカンダリ IP 構成でインターネットに ping を実行できるのは、その構成にパブリック IP アドレスが関連付けられている場合だけです。 プライマリ IP 構成では、インターネットに ping を実行するためにパブリック IP アドレスは必要ありません。

Linux VM の場合、セカンダリ NIC からの送信接続を検証しようとしたときに、適切なルートの追加が必要になることがあります。 Linux ディストリビューションに応じて適切なドキュメントを参照してください。 この目標を達成するには、次の方法を使用します。

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 必ず次のように置き換えてください。

    • 10.1.0.5 はパブリック IP アドレスが関連付けられているプライベート IP アドレスを持つ

    • 10.1.0.1 から既定のゲートウェイへ

    • eth2 をセカンダリネットワークインターフェースカードの名前にする

Ubuntu 18.04 以降

展開

18.04 以降、 netplan はネットワーク管理のために Ubuntu で使用されます。 Linux ディストリビューションの最新ドキュメントを調べることをお勧めします。

  1. ターミナル ウィンドウを開きます。

  2. 自身がルート ユーザーになっていることを確認します。 ルート ユーザーでない場合は、次のコマンドを入力します。

    sudo -i
    
  3. 2 番目のインターフェイス用のファイルを作成し、テキスト エディターでファイルを開きます。

    vi /etc/netplan/60-static.yaml
    
  4. 次の行をファイルに追加し、10.1.0.5/24 を実際の IP およびサブネット マスクに置き換えます。

    network:
        version: 2
        ethernets:
            eth0:
                addresses:
                    - 10.1.0.5/24
    

    プライベート IP アドレスを追加するには、ファイルを編集し、後続の行に新しいプライベート IP アドレスを追加します。

    network:
        version: 2
        ethernets:
            eth0:
                addresses:
                    - 10.1.0.5/24
                    - 10.1.0.6/24
    
  5. 次のコマンドを使用して、ファイルの内容を保存します。

    :wq
    
  6. netplan で変更をテストし、構文を確認してみてください。

    netplan try
    

    Note

    netplan try は変更を一時的に適用し、120 秒後に変更をロールバックします。 接続が失われた場合は、2 分待ってから再接続します。 その時点で、変更はロールバックされています。

  7. netplan try に問題がないと仮定し、構成変更を適用します。

    netplan apply
    
  8. 次のコマンドを使用して、IP アドレスがネットワーク インターフェイスに追加されたことを確認します。

    ip addr list eth0
    

    追加した IP アドレスが、リストの一部として表示されます。 Example:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe04:4516/64 scope link
       valid_lft forever preferred_lft forever
    

検証 (Ubuntu 18.04+)

関連付けたパブリック IP を使用してセカンダリ IP 構成からインターネットに接続できることを確認するには、次のコマンドを使用します。

ping -I 10.1.0.5 outlook.com

Note

セカンダリ IP 構成でインターネットに ping を実行できるのは、その構成にパブリック IP アドレスが関連付けられている場合だけです。 プライマリ IP 構成では、インターネットに ping を実行するためにパブリック IP アドレスは必要ありません。

Linux VM の場合、セカンダリ NIC からの送信接続を検証しようとしたときに、適切なルートの追加が必要になることがあります。 Linux ディストリビューションの適切なドキュメントに従ってください。 この目標を達成する 1 つの方法を次に示します。

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 必ず次のように置き換えてください。

    • 10.1.0.5 はパブリック IP アドレスが関連付けられているプライベート IP アドレスを持つ

    • 10.1.0.1 から既定のゲートウェイへ

    • eth2 をセカンダリネットワークインターフェースカードの名前にする

Red Hat Enterprise Linux とその他

展開

Note

RHEL10.x で追加の IP アドレスを構成するには、NetworkManger を再起動して、システムを systemctl restart NetworkManger.service または再起動するだけで十分です。 他の手順は不要です。

RHEL 8.6 以上、RHEL 9

RHEL 8.6 以降および RHEL 9 以降では、"networkmanager-cloud-setup" パッケージで複数の IP 構成とそれに関連付けられているルート構成を処理できます。

  1. それぞれのファイル /etc/cloud/cloud.cfg.d/99-apply-network-config.cfg または /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg 内のセカンダリ IP 構成を処理するために cloud-init を無効にしました。 これにより、NetworkManager と nm-cloud-setup がネットワーク構成全体を管理できるようになります
[root@rhel8 ~]# cat /etc/cloud/cloud.cfg.d/99-apply-network-config.cfg
datasource:
  Azure:
     apply_network_config: False
  1. まだインストールされていない場合は、"NetworkManager-cloud-setup" パッケージをインストールします
]# yum install NetworkManager-cloud-setup
Red Hat Enterprise Linux 8 for x86_64 - BaseOS from RHUI (RPMs)                                                                                                39 MB/s |  66 MB     00:01
Red Hat Enterprise Linux 8 for x86_64 - Supplementary (RPMs) from RHUI                                                                                        2.3 MB/s | 340 kB     00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs)                                                                                             41 MB/s |  60 MB     00:01
Red Hat CodeReady Linux Builder for RHEL 8 x86_64 (RPMs) from RHUI                                                                                             33 MB/s | 8.9 MB     00:00
Red Hat Ansible Engine 2 for RHEL 8 x86_64 (RPMs) from RHUI                                                                                                    14 MB/s | 2.5 MB     00:00
Dependencies resolved.
==============================================================================================================================================================================================
 Package                                           Architecture                  Version                                   Repository                                                    Size
==============================================================================================================================================================================================
Installing:
 NetworkManager-cloud-setup                        x86_64                        1:1.40.16-13.el8_9                        rhel-8-for-x86_64-appstream-rhui-rpms                        198 k
Upgrading:
 NetworkManager                                    x86_64                        1:1.40.16-13.el8_9                        rhel-8-for-x86_64-baseos-rhui-rpms                           2.3 M
 NetworkManager-libnm                              x86_64                        1:1.40.16-13.el8_9                        rhel-8-for-x86_64-baseos-rhui-rpms                           1.9 M
 NetworkManager-team                               x86_64                        1:1.40.16-13.el8_9                        rhel-8-for-x86_64-baseos-rhui-rpms                           161 k
 NetworkManager-tui                                x86_64                        1:1.40.16-13.el8_9                        rhel-8-for-x86_64-baseos-rhui-rpms                           356 k

Transaction Summary
==============================================================================================================================================================================================
Install  1 Package
Upgrade  4 Packages

Total download size: 4.9 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): NetworkManager-cloud-setup-1.40.16-13.el8_9.x86_64.rpm                                                                                                 2.0 MB/s | 198 kB     00:00
(2/5): NetworkManager-1.40.16-13.el8_9.x86_64.rpm                                                                                                              18 MB/s | 2.3 MB     00:00
(3/5): NetworkManager-team-1.40.16-13.el8_9.x86_64.rpm                                                                                                        4.1 MB/s | 161 kB     00:00
(4/5): NetworkManager-libnm-1.40.16-13.el8_9.x86_64.rpm                                                                                                        12 MB/s | 1.9 MB     00:00
(5/5): NetworkManager-tui-1.40.16-13.el8_9.x86_64.rpm                                                                                                         8.8 MB/s | 356 kB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                          28 MB/s | 4.9 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                      1/1
  Running scriptlet: NetworkManager-libnm-1:1.40.16-13.el8_9.x86_64                                                                                                                       1/1
  Upgrading        : NetworkManager-libnm-1:1.40.16-13.el8_9.x86_64                                                                                                                       1/9
  Running scriptlet: NetworkManager-libnm-1:1.40.16-13.el8_9.x86_64                                                                                                                       1/9
  Running scriptlet: NetworkManager-1:1.40.16-13.el8_9.x86_64                                                                                                                             2/9
  Upgrading        : NetworkManager-1:1.40.16-13.el8_9.x86_64                                                                                                                             2/9
  Running scriptlet: NetworkManager-1:1.40.16-13.el8_9.x86_64                                                                                                                             2/9
  Installing       : NetworkManager-cloud-setup-1:1.40.16-13.el8_9.x86_64                                                                                                                 3/9
  Running scriptlet: NetworkManager-cloud-setup-1:1.40.16-13.el8_9.x86_64                                                                                                                 3/9
  Upgrading        : NetworkManager-team-1:1.40.16-13.el8_9.x86_64                                                                                                                        4/9
  Upgrading        : NetworkManager-tui-1:1.40.16-13.el8_9.x86_64                                                                                                                         5/9
  Cleanup          : NetworkManager-tui-1:1.40.0-1.el8.x86_64                                                                                                                             6/9
  Cleanup          : NetworkManager-team-1:1.40.0-1.el8.x86_64                                                                                                                            7/9
  Running scriptlet: NetworkManager-1:1.40.0-1.el8.x86_64                                                                                                                                 8/9
  Cleanup          : NetworkManager-1:1.40.0-1.el8.x86_64                                                                                                                                 8/9
  Running scriptlet: NetworkManager-1:1.40.0-1.el8.x86_64                                                                                                                                 8/9
  Cleanup          : NetworkManager-libnm-1:1.40.0-1.el8.x86_64                                                                                                                           9/9
  Running scriptlet: NetworkManager-libnm-1:1.40.0-1.el8.x86_64                                                                                                                           9/9
  Verifying        : NetworkManager-cloud-setup-1:1.40.16-13.el8_9.x86_64                                                                                                                 1/9
  Verifying        : NetworkManager-1:1.40.16-13.el8_9.x86_64                                                                                                                             2/9
  Verifying        : NetworkManager-1:1.40.0-1.el8.x86_64                                                                                                                                 3/9
  Verifying        : NetworkManager-libnm-1:1.40.16-13.el8_9.x86_64                                                                                                                       4/9
  Verifying        : NetworkManager-libnm-1:1.40.0-1.el8.x86_64                                                                                                                           5/9
  Verifying        : NetworkManager-team-1:1.40.16-13.el8_9.x86_64                                                                                                                        6/9
  Verifying        : NetworkManager-team-1:1.40.0-1.el8.x86_64                                                                                                                            7/9
  Verifying        : NetworkManager-tui-1:1.40.16-13.el8_9.x86_64                                                                                                                         8/9
  Verifying        : NetworkManager-tui-1:1.40.0-1.el8.x86_64                                                                                                                             9/9
Installed products updated.

Upgraded:
  NetworkManager-1:1.40.16-13.el8_9.x86_64   NetworkManager-libnm-1:1.40.16-13.el8_9.x86_64   NetworkManager-team-1:1.40.16-13.el8_9.x86_64   NetworkManager-tui-1:1.40.16-13.el8_9.x86_64
Installed:
  NetworkManager-cloud-setup-1:1.40.16-13.el8_9.x86_64

Complete!
  1. セカンダリ IP 構成を処理するために "nm-cloud-setup" を有効にするには、nm-cloud-setup.service ファイルと nm-cloud-setup.timer ファイルを作成します (要件に合わせて OnBootSec パラメーターと OnUnitActiveSec パラメーターを調整します)
[root@rhel8 ~]# cat /etc/systemd/system/nm-cloud-setup.service
[Unit]
Description=Automatically configure NetworkManager in cloud
Documentation=man:nm-cloud-setup(8)
Before=network-online.target
After=NetworkManager.service

[Service]
Environment=NM_CLOUD_SETUP_AZURE=yes
Type=oneshot
ExecStart=/usr/libexec/nm-cloud-setup

[Install]
WantedBy=NetworkManager.service
[root@rhel8 ~]# cat /etc/systemd/system/nm-cloud-setup.timer
[Unit]
Description=Periodically run nm-cloud-setup

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min

[Install]
WantedBy=timers.target

  1. サービスの再読み込みデーモンを有効にする
systemctl enable --now nm-cloud-setup.service
systemctl start nm-cloud-setup.service
systemctl enable --now nm-cloud-setup.timer
systemctl daemon-reload
  1. VM を再起動して確認します。 VM は、それぞれのプライマリ IP とセカンダリ IP を正常に識別する必要があります。

RHEL 8.5 >

  1. ターミナル ウィンドウを開きます。

  2. 自身がルート ユーザーになっていることを確認します。 そうでない場合は、次のコマンドを入力します。

    sudo -i
    
  3. パスワードを入力し、画面の指示に従います。 ルート ユーザーになったら、次のコマンドを使用して、ネットワーク スクリプト フォルダーに移動します。

    cd /etc/sysconfig/network-scripts
    
  4. 次のコマンドを使用して、関連する ifcfg ファイルをリストアップします。

    ls ifcfg-*
    

    ifcfg-eth0 がファイルの 1 つとして表示されます。

  5. システムに追加された IP ごとに新しい構成ファイルを作成します。

    touch ifcfg-eth0:0
    
  6. 次のコマンドを使用して ifcfg-eth0:0 ファイルを開きます。

    vi ifcfg-eth0:0
    
  7. この場合は、次のコマンドを使用してファイル eth0:0 にコンテンツを追加します。 10.1.0.5を新しいプライベート IP アドレスとサブネット マスクに置き換えます。

    DEVICE=eth0:0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=10.1.0.5
    NETMASK=255.255.255.0
    
  8. 次のコマンドを使用して、ファイルの内容を保存します。

    :wq
    
  9. IP アドレスごとに構成ファイルを作成し、対応する値を追加します。

    touch ifcfg-eth0:1
    
    vi ifcfg-eth0:1
    
    DEVICE=eth0:1
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=10.1.0.6
    NETMASK=255.255.255.0
    
    :wq
    
  10. ネットワーク サービスを再起動し、次のコマンドを実行して、変更が成功したかどうかを確認します。

    systemctl restart NetworkManager.service
    ifconfig
    

    返されるリストに、追加した IP アドレスが表示されることを確認します。

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.4  netmask 255.255.255.0  broadcast 10.1.0.255
        inet6 fe80::6245:bdff:fe7d:704a  prefixlen 64  scopeid 0x20<link>
        ether 60:45:bd:7d:70:4a  txqueuelen 1000  (Ethernet)
        RX packets 858  bytes 244215 (238.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1021  bytes 262077 (255.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.5  netmask 255.255.255.0  broadcast 10.1.0.255
        ether 60:45:bd:7d:70:4a  txqueuelen 1000  (Ethernet)
    
    eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.6  netmask 255.255.255.0  broadcast 10.1.0.255
        ether 60:45:bd:7d:70:4a  txqueuelen 1000  (Ethernet)
    

検証 (Red Hat とその他)

関連付けたパブリック IP を使用してセカンダリ IP 構成からインターネットに接続できることを確認するには、次のコマンドを使用します。

ping -I 10.0.0.5 outlook.com

Note

セカンダリ IP 構成でインターネットに ping を実行できるのは、その構成にパブリック IP アドレスが関連付けられている場合だけです。 プライマリ IP 構成では、インターネットに ping を実行するためにパブリック IP アドレスは必要ありません。

Linux VM の場合、セカンダリ NIC からの送信接続を検証しようとしたときに、適切なルートの追加が必要になることがあります。 Linux ディストリビューションの適切なドキュメントを参照してください。 この目標を達成するには、次の方法を使用します。

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 必ず次のように置き換えてください。

    • 10.0.0.5 を、パブリック IP アドレスが関連付けられているプライベート IP アドレスに

    • 10.0.0.1 を既定のゲートウェイに

    • eth2 をセカンダリネットワークインターフェースカードの名前にする

Debian GNU/Linux

展開

Linux ディストリビューションの最新ドキュメントを調べることをお勧めします。

  1. ターミナル ウィンドウを開きます。

  2. 自身がルート ユーザーになっていることを確認します。 そうでない場合は、次のコマンドを入力します。

    sudo -i
    
  3. ネットワーク インターフェイスの構成ファイルを更新します ( 'eth0' を想定)。

    • DHCP の既存の行アイテムを保持します。 プライマリ IP アドレスが以前と同じ構成のまま維持されます。

    • 次のコマンドを使用して、各静的 IP アドレスの構成を追加します。

      cd /etc/network/interfaces.d/
      ls
      

      .cfg ファイルが表示されます。

  4. ファイル を開きます。 ファイルの末尾に次の行が表示されます。

    auto eth0
    iface eth0 inet dhcp
    
  5. ファイルの行の最後に、次の行を追加します。 10.1.0.5 を自分のプライベート IP アドレスとサブネット マスクに置き換えます。

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    

    構成ファイルに新しい IP アドレス情報を追加します。

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    iface eth0 inet static
    address 10.1.0.6
    netmask 255.255.255.0
    
  6. 次のコマンドを使用して、ファイルの内容を保存します。

    :wq
    
  7. ネットワーク サービスを再起動して、変更を反映させます。 Debian 8 以降の場合は、次を使用します。

    systemctl restart networking
    

    Debian の以前のバージョンでは、以下のコマンドを使用できます。

    service networking restart
    
  8. 次のコマンドを使用して、IP アドレスがネットワーク インターフェイスに追加されたことを確認します。

    ip addr list eth0
    

    追加した IP アドレスが、リストの一部として表示されます。 Example:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe04:4516/64 scope link
       valid_lft forever preferred_lft forever
    

検証 (Debian GNU/Linux)

関連付けたパブリック IP を使用してセカンダリ IP 構成からインターネットに接続できることを確認するには、次のコマンドを使用します。

ping -I 10.1.0.5 outlook.com

Note

セカンダリ IP 構成でインターネットに ping を実行できるのは、その構成にパブリック IP アドレスが関連付けられている場合だけです。 プライマリ IP 構成では、インターネットに ping を実行するためにパブリック IP アドレスは必要ありません。

Linux VM の場合、セカンダリ NIC からの送信接続を検証しようとしたときに、適切なルートの追加が必要になることがあります。 Linux ディストリビューションに応じて適切なドキュメントを参照してください。 この目標を達成するには、次の方法を使用します。

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 必ず次のように置き換えてください。

    • 10.1.0.5 はパブリック IP アドレスが関連付けられているプライベート IP アドレスを持つ

    • 10.1.0.1 から既定のゲートウェイへ

    • eth2 をセカンダリネットワークインターフェースカードの名前にする

次のステップ

  • Azureのパブリック IP アドレスの詳細を確認します。
  • private IP アドレスの詳細については、Azureを参照してください。
  • Azure ネットワーク インターフェイスの ip アドレスを<>構成する方法について説明します。