Eden が、
セカンダリネットワークインターフェイスを
Ubutu Amazon EC2 インスタンスで動作させる方法を示します

Eden_CPT1018

Ubuntu Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでセカンダリネットワークインターフェイスを動作させるには、どうすればよいですか? 

Amazon Linux EC2 インスタンス以外のインスタンスにセカンダリネットワークインターフェイスを追加するとトラフィックフローの問題が発生します。これらの問題が発生するのは、プライマリとセカンダリの両方のネットワークインターフェイスが同じサブネットにあり、1 つのゲートウェイを持つルーティングテーブルが 1 つしかないためです。セカンダリネットワークインターフェイスに入るトラフィックは、プライマリネットワークインターフェイスを使用してインスタンスを残します。ただし、セカンダリ IP アドレスはプライマリネットワークインターフェイスの MAC アドレスに属していないため、これは許可されていません。

セカンダリインターフェイスを機能させるには、セカンダリネットワーク設定ファイルを作成し、ルーティングテーブルを設定して、セカンダリインターフェイスのトラフィックが新しいルーティングテーブルを使用するようにカスタムルーティングテーブルポリシーデータベースにルールを設定します。

注意: セカンダリネットワークインターフェイスを追加する手順は、以下の Ubuntu のバージョンごとに異なります。

  • Ubuntu 14.04
  • Ubuntu 16.04
  • Ubuntu 18.04

注意: CentOS または RHEL インスタンスについては、「CentOS インスタンスまたは RHEL Ubuntu インスタンスでセカンダリネットワークインターフェイスを動作させるにはどうすればいいですか?」を参照してください。

Ubuntu 14.04 または 16.04 の設定

セカンダリインターフェイス設定ファイルの作成、ルーティングテーブルの設定、および Ubuntu のルーティングポリシールールの設定は、1 つのファイルを使用して行うことができます。

すべての手順はルートユーザー権限で行う必要があります。「sudo -i」 でルートユーザーになるか、「sudo」ですべてのコマンドを実行してください。

1.プライマリネットワークインターフェイスの名前を取得します。

ip a | grep ^[[:digit:]]

次のように表示されます。 

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

重要: 前の例では、プライマリインターフェイスの名前は「eth0」、「eth1」、などです。ただし、m4 ファミリーや m5 ファミリーなど、拡張されたネットワークをサポートするインスタンスでは、名前の不一致が発生することがあります。たとえば、セカンダリの名前が「eth0」の場合、プライマリの名前は「ens3」となります。この名前の不一致は、インスタンスの実行中にセカンダリインターフェイスが追加されたときに発生します。

起動時にインターフェイスを追加するか、インスタンスを再起動することで、名前の不一致を回避できます。または、インターフェイスが実行されている場合は、次のように名前を変更できます。

ip link set eth0 name ens4 && ip link set ens4 up

2.セカンダリインターフェイスの設定ファイルを作成します。この例では、「eth1」のセカンダリインターフェイスを使用します。手順 1 で見つけたセカンダリインターフェイス名と一致するように「eth1」を変更してください。 

vi /etc/network/interfaces.d/51-eth1.cfg

以下は、172.31.21.115 という単一の IP アドレスと、セカンダリインターフェイス上の 172.31.16.1 というゲートウェイの例です。シナリオに合わせて IP アドレスとゲートウェイを変更してください。また、ゲートウェイがサブネット内の最初の有効な IP アドレスである必要があります。 

auto eth1
iface eth1 inet static 
address 172.31.21.115
netmask 255.255.240.0

# Gateway configuration
up ip route add default via 172.31.16.1 dev eth1 table 1000

# Routes and rules
up ip route add 172.31.21.115 dev eth1 table 1000
up ip rule add from 172.31.21.115 lookup 1000

以下に、複数の IP アドレスの例を示します。この例では、IP アドレスは 172.31.21.115 と 172.31.18.46 であり、ゲートウェイは 172.31.16.1 です。シナリオに合わせて IP アドレスとゲートウェイを更新してください。 

auto eth1

# Enter one or more IP settings
iface eth1 inet static
address 172.31.21.115
netmask 255.255.240.0

iface eth1 inet static
address 172.31.18.46
netmask 255.255.240.0

# Default gateway for eth1
up ip route add default via 172.31.16.1 dev eth1 table 1000

# A route for every IP
up ip route add 172.31.21.115 dev eth1 table 1000
up ip route add 172.31.18.46 dev eth1 table 1000

# A policy rule for every IP
up ip rule add from 172.31.21.115 lookup 1000
up ip rule add from 172.31.18.46 lookup 1000

3.デフォルトゲートウェイがメインテーブルに上書きされないようにするには、restrict-default-gw ファイルを作成します。

vi /etc/dhcp/dhclient-enter-hooks.d/restrict-default-gw

4.restrict-default-gw ファイルに以下の行を追加します。手順 1 で見つけたプライマリインターフェイス名と一致するように「eth0」を変更してください。

case ${interface} in
  eth0)
    ;;
  *)
    unset new_routers
    ;;
esac

5.ネットワークを再起動します。

Ubuntu 14.04 内。 

(ifdown eth1 && ifup eth1)

Ubuntu 16.04 内 

systemctl restart networking

Ubuntu 18.04 の設定

Ubuntu 18.04 はネットワーク設定を Netplan に切り替えました。次の例では、Netplan の設定を使用しています。Netplan は YAML 形式を使用し、インデントが重要であることに注意してください。以下の例では、2 スペースのインデントを使用しています。

1.セカンダリインターフェイスの設定ファイルを作成します。

vi /etc/netplan/51-eth1.yaml

2. 51-eth1.yaml ファイルに以下の行を追加します。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      addresses:
       - 172.31.24.153/20
       - 172.31.28.195/20
      dhcp4: no
      routes:
       - to: 0.0.0.0/0
         via: 172.31.16.1 # Default gateway
         table: 1000
       - to: 172.31.24.153
         via: 0.0.0.0
         scope: link
         table: 1000
       - to: 172.31.28.195
         via: 0.0.0.0
         scope: link
         table: 1000
      routing-policy:
        - from: 172.31.24.153
          table: 1000
        - from: 172.31.28.195
          table: 1000

3.ネットワーク設定を適用します。 

netplan --debug apply

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 09 月 05 日