web-dev-qa-db-ja.com

EC2インスタンスでの複数のENIの設定

Ec2-net-utilsを使用せずにOSのインターフェースをどのように設定しますか?

単一のEC2インスタンスでアクセスできるように約18のパブリックIPを設定する必要があります。各パブリックIPは、インスタンス上の単一の内部IPにバインドする必要があります。必要なElasticIPで構成された2つのENIがあり、これらはインスタンスに接続されていますが、OSにENIを認識させるのに行き詰まっています。

私は このチュートリアル をフォローしていますが、インターフェイスごとに複数のIPを構成するように拡張する方法を理解できません。また、 この質問 によると、これを行う正しい方法についていくつかの議論があるようです。

誰かが私を正しい方向に向けることができれば、私は本当に感謝しています。私はこれでほぼ2日を無駄にしました!

詳細は次のとおりです。

  • OS:Centos 7
  • ENI1:セカンダリプライベートIP = [10.0.1.97 ... 10.0.1.106]
  • ENI2:セカンダリプライベートIP = [10.0.1.218 ... 10.0.1.226]
  • VPCゲートウェイ10.0.1.1
1
Russell

@mootmootによる回答は、これについてほとんどの方法で私を導きましたが、完全を期すために、最終的に動作する構成に至るまでの手順を以下に示します。これを行うためのより良い方法があると確信していますが、他の誰かが立ち往生している場合に備えて...

/ etc/sysconfig/network-scripts内のファイルに次の変更を加えました

ifcfg-ethで定義されたインターフェースをそのままにして、次のようにエイリアスを追加しました。

ifcfg-eth0:

DEVICE=eth0:0
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
IPV6INIT="no"
DEFROUTE="no"


IPADDR0="10.0.1.XXX"
PREFIX0="24"

ここで、10.0.1.XXXはENIの最初のsecondaryアドレスです(プライマリアドレスは、デフォルトのifcfg-ethファイルで指定されているようにdhcpによって構成されたままです)

eNIのすべてのIPが指定されるまで、ifcfg-eth0:Xファイルを追加し続けます。

次に、上記のeth0エイリアスと同じテンプレートとENIのプライマリIPアドレスを使用して、ファイル内の2番目のデバイスを定義しますifcfg-eth1

次に、上記のようにifcfg-eth1:などと呼ばれるファイルを定義して、eth1のエイリアスを追加します。

次のルートファイルを定義します。

route-eth

default via 10.0.1.1 dev eth0  table 1

route-eth1

default via 10.0.1.1 dev eth1  table 2

ここで、10.0.1.1はVPCゲートウェイのアドレスです

次に、eth2のすべてのIPとeth1のすべてのセカンダリIPのルールを次のように定義する必要がありました。

rule-eth

from 10.0.1.106 lookup 1
from 10.0.1.105 lookup 1
... etc

rule-eth1

from 10.0.1.41 lookup 1
from 10.0.1.226 lookup 1
... etc   

私も行を追加しました

GATEWAYDEV=eth0

/ etc/sysconfig/networkingへ

すべてのアドバイスに感謝し、同様の状況で誰かを助けることを願っています。

0
Russell

前の答えは雑然としているので、AWS CLIを使用するだけでワークフローを使用して別の答えを配置します(AWS SDKを使用して自動化スクリプトを微調整できます)( http://docs.aws.Amazon.com/cli /latest/userguide/installing.html

  1. を使用してプライベートIPでENIを作成します。 (aws ec2 create-network-interface)ENIIDを書き留めます
  2. VPCにEIPを割り当てます。 (aws ec2 assign-address --domain vpc)EIP-idを書き留めます
  3. EIPをENI-idにリンクし、正しいプライベートIPをポイントします(aws ec2associate-address
  4. EC2インスタンスを作成または起動し、ENIにアタッチします。 (aws ec2 attach-network-interface

すべてのスクリプトを配置したら、適切なENIを使用してEC2インスタンスを再作成するのはほんの数分です。

(以下の更新された回答)Linuxでは、インターフェイスに複数のIPアドレスを割り当てるためのインターフェイスへの正しい割り当ては、物理インターフェイスにIPアドレスを追加することです。 ubuntuなどの場合、最初のインターフェースの場合はeth0:0、eth0:1、後続のインターフェースの場合はeth1:0、eth1:1のようになります。

そして、これはCentosではわずかに異なります。

enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether ....
inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3
inet 192.168.1.151/24 brd 192.168.1.255 scope global secondary enp0s3
inet 192.168.1.152/24 brd 192.168.1.255 scope global secondary enp0s3

したがって、正しいドキュメントはこれである必要があります。 http://www.unixmen.com/linux-basics-assign-multiple-ip-addresses-single-network-interface-card-centos-7/

つまり、Centosはインターフェイスごとに1つのネットワークインターフェイスファイルを自動的に作成します。/etc/sysconfig/network-scripts /に移動し、各ファイル名をifcfg-eth *として確認します(上記のリンクにenp0が表示される理由を聞かないでください)。トリッキーな部分は、CentosがNetworkManagerの使用を強制するかどうかであり、centosのドキュメントwiki.centos.org/FAQ/CentOS7の要求に応じて構成する必要があります。

したがって、m3.xlarge用に少なくとも4つのインターフェイスファイルが表示されます。/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1/etc/sysconfig/network-scripts/ifcfg-eth2/etc/sysconfig/network-scripts/ifcfg-eth3

メインインターフェイスが実行されている必要があるため、実行中のインスタンスのIPアドレスのヒントが表示されます。したがって、/ etc/sysconfig/network-scripts/ifcfg-eth0を開くと、インスタンスがIP 10.0.1.10として構成されている場合、次のように表示されます。

IPADDR0="10.0.1.10"

IPアドレスを追加するには、unixmenリンクが言うように実行します。

IPADDR1="10.0.1.97"
IPADDR2="10.0.1.98"
IPADDR3="10.0.1.99"

次に、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3を開き、タスクを繰り返します。その後、「systemctlrestartnetwork」を使用して再起動します。 (すべての構成ファイルをバックアップして、将来ファイルをオーバーライドするだけにします)

次に、ルーティング部分で遊んでください。 VPCルートテーブルSubnetを印刷するだけです。/etc/sysconfig/network-scripts /内で、route-ethX、つまりroute-eth0、route-eth1、route-eth2、route-eth3を処理します。つまり、この部分を設定するには、独自のネットワークを知っている必要があります(VPCレイアウトに表示される必要があります)。 VPCゲートウェイ10.0.1.1を1つだけ言及したので、すべてのroute- *ファイルについて、次のようになります。

# I just assume your put all your 10.0.1.x in the CIDR /24 segments
#
# file route-eth0
# Assume your first ENI IP address is  10.0.1.10 
# format : default via gateway-ip dev dev-name table route-table-number 
default via 10.0.1.1 dev eth0 table 0

# format : network cidr  dev dev-name src ENI-intrace-IP route-table-number  
10.0.1.0/24 dev eth0 src 10.0.1.10 table 0

# file route-eth1
# Assume your 2nd ENI IP address is  10.0.1.11
default via 10.0.1.1 dev eth1 table 1
10.0.1.0/24 dev eth1 src 10.0.1.15 table 1

# file route-eth2
# Assume your 2nd ENI IP address is  10.0.1.12
default via 10.0.1.1 dev eth1 table 2
10.0.1.0/24 dev eth2 src 10.0.1.12 table 2

次に、/ etc/sysconfig/network-scriptsで、前述のドキュメントに従って、rule-ethX、つまりrule-eth0、rule-eth1を作成します。1。route-ethXに一致するようにテーブル番号をインクリメントします。2。IPを次のように変更します。 ENIに割り当てられた内部ネットワークアドレス。

# file rule-eth0 ,but as the doc suggest, you should skip this file.
# format : from  ENI_IP/CIDR table <table_number> 
from 10.0.1.10/32 table 0

#file rule-eth1
from 10.0.1.11/32 table 1

Centosネットワークセットアップは、ローカルVmware/virtualbox仮想ネットワークアダプターで再生する必要があります。そうすれば突然心配する必要はありません

1
mootmoot