次の方法で共有


Azure Linux 仮想マシンで複数のネットワーク インターフェイスを構成する

適用対象: ✔️ Linux VM

Note

この記事で参照されている CentOS は Linux ディストリビューションであり、EOL (End Of Life) に到達します。 適宜、使用と計画を検討してください。 詳細については、「 CentOS End Of Life ガイダンスを参照してください。

この記事では、最も一般的な Linux ディストリビューションを実行する Azure Linux 仮想マシン (VM) で複数の仮想ネットワーク インターフェイスを構成する方法について説明します。

まとめ

複数のネットワーク インターフェイスが接続されている Azure VM を作成できます。 一般的なシナリオは、フロントエンドとバックエンドの接続用に異なるサブネット、または監視またはバックアップ ソリューション専用のネットワークを使用することです。

この記事では、次のサンプル シナリオに基づく Azure Linux VM で複数のネットワーク インターフェイスを動作させるために必要な構成について説明します。

  • VM には、同じサブネット内に 2 つ以上のネットワーク インターフェイスがあります。
  • VM には、異なるサブネットに 2 つ以上のネットワーク インターフェイスがありますが、同じ仮想ネットワーク (VNET) 内にあります。

詳細については、次のスクリーンショットを参照してください。

各シナリオでは、同じ VNET 内の任意の VM から接続をテストできます。

重要

この同じプロセスは、2 つ以上の NIC を持つ VM でも実行できます。

複数のネットワーク インターフェイス用にゲスト OS を構成する

Linux VM に複数のネットワーク インターフェイスを追加する場合は、ルーティング規則を作成する必要があります。 これらの規則により、VM は特定のネットワーク インターフェイスに属するトラフィックを送受信できます。 そうしないと、トラフィックを正しく処理できません。 たとえば、 eth1 に属するトラフィックは、定義された既定のルートでは正しく処理できません。

次のセクションでは、最も一般的な Linux ディストリビューションを実行する Linux VM で 2 つのネットワーク インターフェイスを動作させるために必要な構成について説明します。

Note

次のセクションのすべてのコマンドを実行するには、ルート特権を使用します (ルートに切り替えるか、 sudo コマンド ユーティリティを使用します)。

各セクションでは、VM に次のいずれかの設定を持つ 2 つのネットワーク インターフェイスがあることを前提としています。

  • ルーティング ( sudo ip route show コマンドの出力):

    • 同じサブネット内の 2 つの NIC:

      default via 10.0.1.1 dev eth0 proto static metric 100
      10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
      10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.5 metric 101
      168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100
      169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
      
    • 異なるサブネット内の同じ VNET 内の 2 つの NIC:

      default via 10.0.1.1 dev eth0 proto static metric 100
      10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
      10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.5 metric 101
      168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100
      169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
      
  • インターフェイス ( sudo ip address show コマンドの出力):

    • 同じサブネット内の 2 つの NIC:

      lo: inet 127.0.0.1/8 scope host lo
      eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0
      eth1: inet 10.0.1.5/24 brd 10.0.1.255 scope global eth1
      
    • 異なるサブネット内の同じ VNET 内の 2 つの NIC:

      lo: inet 127.0.0.1/8 scope host lo
      eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0
      eth1: inet 10.0.2.5/24 brd 10.0.2.255 scope global eth1
      
  1. 次のコマンドを実行して、2 つのルーティング テーブルを /etc/iproute2/rt_tables ファイルに追加します (NIC ごとに 1 つのエントリが必要です)。

    sudo echo "200 eth0-rt" >> /etc/iproute2/rt_tables
    sudo echo "201 eth1-rt" >> /etc/iproute2/rt_tables
    

    さらに多くのネットワーク インターフェイスが VM に接続されている場合は、追加のルーティング テーブル (たとえば、 202 eth2-rt203 eth3-rt など) を追加します。

  2. /etc/sysconfig/network-scripts/ ディレクトリ内のネットワーク インターフェイスごとに構成ファイルが存在することを確認します。 ifcfg-eth0構成ファイルに基づいて新しいネットワーク インターフェイス構成ファイルを作成できます (DEVICE行を変更し、新しいファイルからDHCP_HOSTNAME行とHWADDR行を削除します)。 これを行うには、次のコマンドを実行します。

    sudo cat /etc/sysconfig/network-scripts/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i 's/DEVICE=eth0/DEVICE=eth1/' /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i '/DHCP_HOSTNAME/d' /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth1
    
  3. ネットワーク スタックのアクティブ化中に変更を永続的にして適用するには、ファイル /etc/sysconfig/network-scripts/ifcfg-eth0 および /etc/sysconfig/network-scripts/ifcfg-eth1 (ifcfg-eth2 を編集します。 ifcfg-eth3 など(VM に 3 つ以上のネットワーク インターフェイスがある場合)、 NM_CONTROLLED の値を yes から no に変更します。 これを行うには、次のコマンドを実行します。

    sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0.bkp
    sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth1 /tmp/ifcfg-eth1.bkp
    sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth0
    sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
    

    Note

    cat /etc/sysconfig/network-scripts/ifcfg-eth* コマンドを使用して、NM_CONTROLLED=no行が /etc/sysconfig/network-scripts/ifcfg-eth0 ファイルと /etc/sysconfig/network-scripts/ifcfg-eth1 ファイルの両方に追加されていることを確認します。 行がファイルに含まれていない場合は、 sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0 コマンドと sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth1 コマンドを使用して手動で追加します。

  4. この構成を変更した後、次のコマンドを実行して、ネットワーク サービスを再起動して変更を適用します。

    sudo systemctl restart network
    
  5. 任意のテキスト エディター (次の例では vi エディターが使用されています) を使用して、対応するルールとルート ファイルを作成し、各ファイルに適切なルールとルートを追加します。 次の手順を使用して、ネットワーク インターフェイスごとに 1 つの rule-eth# ファイルと route-eth# ファイルのセットを作成します。 すべての手順で、IP アドレスとサブネットの情報を適宜置き換えます。 より多くのネットワーク インターフェイスがある場合は、対応する IP アドレス、ネットワーク、ゲートウェイの詳細を使用して、各インターフェイスに同じ rule-eth# ファイルと route-eth# ファイルのセットを作成します。

    • eth0 のルールとルートを作成します:

      1. eth0 のルール ファイルを作成するには、ファイル /etc/sysconfig/network-scripts/rule-eth0 を開きます。

        sudo vi /etc/sysconfig/network-scripts/rule-eth0
        
      2. ルール ファイルに次の内容を追加します。 それに応じて IP アドレスを置き換え、構成で IPv4 アドレスを指定し、32 ビット値を保持してください。

        from 10.0.1.4/32 table eth0-rt
        to 10.0.1.4/32 table eth0-rt
        
      3. eth0 のルート ファイルを作成するには、ファイル /etc/sysconfig/network-scripts/route-eth0 を開きます。

        sudo vi /etc/sysconfig/network-scripts/route-eth0
        
      4. ルート ファイルに次の内容を追加します。 それに応じて、ネットワークとゲートウェイの値を置き換えます。

        10.0.1.0/24 dev eth0 table eth0-rt
        default via 10.0.1.1 dev eth0 table eth0-rt
        
    • eth1 のルールとルートを作成します:

      1. eth1 のルール ファイルを作成するには、ファイル /etc/sysconfig/network-scripts/rule-eth1 を開きます。

        sudo vi /etc/sysconfig/network-scripts/rule-eth1
        
      2. ルール ファイルに次の内容を追加します。 それに応じて IP アドレスを置き換え、コマンドで IPv4 アドレスを指定し、32 ビット値を保持してください。

        • 同じサブネット内の 2 つの NIC:

          from 10.0.1.5/32 table eth1-rt
          to 10.0.1.5/32 table eth1-rt
          
        • 異なるサブネット内の同じ VNET 内の 2 つの NIC:

          from 10.0.2.5/32 table eth1-rt
          to 10.0.2.5/32 table eth1-rt
          
      3. eth1 のルート ファイルを作成するには、ファイル /etc/sysconfig/network-scripts/route-eth1 を開きます。

        sudo vi /etc/sysconfig/network-scripts/route-eth1
        
      4. ルート ファイルに次の内容を追加します。 それに応じて、ネットワークとゲートウェイの値を置き換えます。

        • 同じサブネット内の 2 つの NIC:

          10.0.1.0/24 dev eth1 table eth1-rt
          default via 10.0.1.1 dev eth1 table eth1-rt
          
        • 異なるサブネット内の同じ VNET 内の 2 つの NIC:

          10.0.2.0/24 dev eth1 table eth1-rt
          default via 10.0.2.1 dev eth1 table eth1-rt
          
  6. 変更を適用するには、次のコマンドを実行してネットワーク サービスを再起動します。

    sudo systemctl restart network
    

    これでルーティング規則が正しく設定され、任意のネットワーク インターフェイスから接続が機能するようになります。 Secure Shell (SSH) を使用するか、同じ VNET 内の VM から両方の IP に ping を実行することで、接続をテストできます。

  7. 次のコマンドを使用して、現在のルートとルールが読み込まれたことを確認します。

    sudo ip route show
    sudo ip rule show
    

重要

2 番目の NIC との通信で問題が解決しない場合は、 sudo reboot コマンドを使用して VM を再起動し、手順 7 を繰り返して、接続をもう一度テストします。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。