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 アドレスを追加する方法を説明します。

前提条件

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

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

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

Note

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

Diagram of network configuration resources created in How-to article.

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

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

Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

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

$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 アドレスを作成する

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

$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 アドレスを追加する

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

$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 アドレスを追加する

注意

この記事では、サポート終了 (EOL) 状態が近づいている Linux ディストリビューションである CentOS について説明します。 それに応じて、使用と計画を検討してください。

複数のプライベート 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 アドレスを使う] をクリックします。 次の値を入力します。

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

    設定
    優先 DNS サーバー: プライマリ DNS サーバーを入力します。
    既定の Azure 提供 DNS を使用するには、IP アドレス 168.63.129.16 を入力します。
  8. [Advanced] \(詳細設定) ボタンを選択します。

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

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

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

重要

仮想マシンのオペレーティング システム内で 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. Windows で使用されるプライマリ プライベート IP アドレスが、Azure VM ネットワーク インターフェイスのプライマリ IP アドレスと同じであることを確認します。 詳細については、「複数の IP アドレスを持つ Azure Windows VM からインターネット アクセスできない」を参照してください。

検証 (Windows Server)

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

ping -S 10.1.0.5 outlook.com

注意

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

SUSE Linux Enterprise および openSUSE

展開 SUSE ベースのディストリビューションでは、cloud-netconfig-azure パッケージの cloud-netconfig プラグインを使用して追加の IP アドレスを管理します。 管理者側で手動で構成する必要はありません。 プラットフォームで設定されたインターフェイスの最初の IP アドレスは、DHCP 経由で割り当てられます。 その後、cloud-netconfig プラグインは Azure Instance Metadata Service 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
    

    重要

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

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

    ip addr list eth0
    

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

    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 ディストリビューションに応じて適切なドキュメントを参照してください。 これを行う方法の 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 をセカンダリ NIC の名前に

Ubuntu 18.04 以降

展開

OS ネットワーク管理のために、Ubuntu 18.04 以降が netplan に変更されました。 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 try を使用して変更をテストし、構文を確認します。

    netplan try
    

    Note

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

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

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

    ip addr list eth0
    

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

    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 をセカンダリ NIC の名前に

Red Hat Enterprise Linux、CentOS、およびその他

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

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

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

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

    ls ifcfg-*
    

    ファイルのうちの 1 つに ifcfg-eth0 があります。

  5. IP アドレスを追加するには、次のように構成ファイルを作成します。 IP 構成ごとに 1 つのファイルを作成する必要があることに注意してください。

    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 アドレスを追加するには、追加の構成ファイルを作成し、そのファイルに 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、CentOS、その他)

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

ping -I 10.0.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.0.0.5 を、パブリック IP アドレスが関連付けられているプライベート IP アドレスに

    • 10.0.0.1 をデフォルト ゲートウェイに

    • eth2 をセカンダリ NIC の名前に

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 アドレスを追加するには、ファイルを編集し、後続の行に新しいプライベート 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 アドレスが、リストの一部として表示されます。 例:

    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 ディストリビューションに応じて適切なドキュメントを参照してください。 これを行う方法の 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 をセカンダリ NIC の名前に

次のステップ