web-dev-qa-db-ja.com

2つの同時ネットワークインターフェイスを備えたUbuntuでEC2サーバーを実行する

この問題に関連する同様の質問を見つけましたが、私の状況に一致するものはなく、アドバイスもこれを実行するのに役立ちませんでした。

EC2で実行されているデフォルトのAMIの64ビットUbuntuサーバーがあります。これには2つのネットワークインスタンスがあり、それぞれに2つのローカルIPSおよびリンクされたEIPがあります。

各インスタンスのローカルIPアドレスは、異なるインスタンス上の同じネットワークIPの複雑さを克服するために、意図的に別々のサブネット上にあります。

最初のインスタンスの2つのIPは正常に機能し、問題はありません。

私はしばらくの間、すべてのサーバーの起動に次のコードを使用しています

#!/bin/bash
MAC_ADDR=$(ifconfig eth0 | sed -n 's/.*HWaddr \([a-f0-9:]*\).*/\1/p')
IP=($(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC_ADDR/local-ipv4s))
for ip in ${IP[@]:1}; do
    echo "Adding IP eth0: $ip"
    ip addr add dev eth0 $ip/24
done

このスクリプトに2番目の部分を追加して、2番目のインターフェイスIPを起動しようとしました

MAC_ADDR=$(ifconfig eth1 | sed -n 's/.*HWaddr \([a-f0-9:]*\).*/\1/p')
IP=($(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC_ADDR/local-ipv4s))
for ip in ${IP[@]:1}; do
    echo "Adding IP eth1: $ip"
    ip addr add dev eth1 $ip/24
done

/ etc/network/interfacesファイルを変更して、2番目のインターフェースを開始しました

# The primary network interface
auto eth0
iface eth0 inet dhcp


auto eth1
iface eth1 inet static
address 10.10.21.22
netmask 255.255.255.0

ifconfigは、両方のインターフェースが動作していることを示しています

ifconfig
eth0      Link encap:Ethernet  HWaddr 06:b1:b9:f8:32:af  
          inet addr:10.10.2.20  Bcast:10.10.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4b1:b9ff:fef8:32af/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:114125 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51731 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:106211526 (106.2 MB)  TX bytes:50413300 (50.4 MB)
          Interrupt:26 

eth1      Link encap:Ethernet  HWaddr 06:b1:b9:f5:38:3a  
          inet addr:10.10.21.22  Bcast:10.10.21.255  Mask:255.255.255.0
          inet6 addr: fe80::4b1:b9ff:fef5:383a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12269 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11522 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:366172 (366.1 KB)  TX bytes:484140 (484.1 KB)
          Interrupt:27 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:197 errors:0 dropped:0 overruns:0 frame:0
          TX packets:197 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:14772 (14.7 KB)  TX bytes:14772 (14.7 KB)

私のルーティングルールは、2つのサブネットと2つのインターフェイスに対して正しく設定されているようです

    Destination     Gateway     Netmask     Interface   
    Default Route   10.10.2.1   
eth0
    1.0.0.0 None    255.255.255.0   eth0
    1.0.0.0 None    255.255.255.0   eth1
    10.10.2.0   None    255.255.255.0   eth0
    10.10.21.0  None    255.255.255.0   eth1

同じサーバーから問題のあるローカルIP(10.10.21.22と10.10.21.23)にpingを実行して、成功させることができます。他のサーバーからプライマリインターフェイスのパブリックIPにpingを実行できます。他のサーバーから2番目のインターフェイスのIPにpingを実行できません。

これをテストしている間、ファイアウォールは無効になっています。

何が見落とされたか、間違っていたかについてのガイダンスはありますか?

編集-追加情報

メインサーバーは、標準AMI(マイクロサイズ)のUbuntu 13.0464ビットです。

eth0には、10.10.2.20と10.10.2.21の2つのIPが機能しています。

eth1には、10.10.21.22と10.10.21.23の2つのIPが機能していません。

すべてのローカルIPには外部EIPもあります。

同じマシンからこれらすべてにpingを実行すると機能します。他のマシンから最初のインターフェースにpingを実行すると機能します。他のマシンからの2番目のインターフェースへのpingは失敗します。

VPCルートテーブルには、10.10.0.0/16がローカルで、0.0.0.0/0がigwであると記載されています。うまく見えます。ここを見るとは思わず、Linux内のルートテーブルをチェックしただけでした-2つのインターフェイスを機能させるためにEC2/VPCで特別に必要なものはありますか? EC2はすべてのIP /インスタンスマッピングを知っていて、それに応じて指示すると想定していました。

Vpcレベルでルートを追加しようとしたところ、「ルートテーブルrtb-022ab66bのローカルルート10.10.0.0/16よりも10.10.21.0/24のより具体的なルートを作成できません」というメッセージが表示されました。

新しい編集-より多くのVPSサブネット設定

前回のアップデートでルートテーブルについて言及しましたが、VPC内のサブネットを指定しませんでした

VPCルートテーブルは10.10.0.0/16ローカルであり、10.10.2.0サブネットと10.10.21.0サブネットの両方を含む必要があります

VPC内には2つの個別のサブネットがセットアップされています。EC2内のそれぞれに1つのインターフェイスがあります。両方のサブネットは、VPCルートテーブルのアソシエーション内に表示されます。

10.10.2.0/24

10.10.21.0/24

上記の編集の最後に記載されているエラーのため、EC2ルーティングテーブルでより具体的なルーティングルールを設定できません。唯一のオプションは10.10.0.0/16であり、少なくともPPCレベルでは、2と21を別々に定義することはできません。

2
PPCnSEO

移植しましたec2-net-utils fromAmazon LinuxtoUbuntu。これらのスクリプトが行うことは、追加のIPを含む新しいインターフェースを自動的に構成し、非対称ルーティングを修正することです。

ここを見てください:

2
Alessandro

これに対するAmazonのサポートに感謝しますが、他の誰かに役立つ場合に備えて、ここに投稿してください。

インスタンスでrootとして、次のコマンドを入力します。

ip route add default via 10.10.2.1 dev eth0 tab 1
ip route add default via 10.10.21.1 dev eth1 tab 2
ip rule add from 10.10.2.0/24 tab 1
ip rule add from 10.10.21.0/24 tab 2

注:EC2のubuntuインスタンスで再起動しても持続するには;このファイルを編集します:/etc/rc.localそのファイル内では、行は次のようになります。

route add -net XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gw XXX.XXX.XXX.XXX
1
PPCnSEO