この問題に関連する同様の質問を見つけましたが、私の状況に一致するものはなく、アドバイスもこれを実行するのに役立ちませんでした。
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を別々に定義することはできません。
移植しましたec2-net-utils
fromAmazon LinuxtoUbuntu。これらのスクリプトが行うことは、追加のIPを含む新しいインターフェースを自動的に構成し、非対称ルーティングを修正することです。
ここを見てください:
これに対する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