EC2インスタンスに複数ENIをアタッチした場合の通信テスト


[こちら](http://d.hatena.ne.jp/j3tm0t0/20120410/1334086123)に記載されているEC2インスタンスにENIを複数アタッチした場合のmeta data serverとの通信が現時点でどんな状況かをテストしてみた。

## 構成
[CentOS6のAMI](https://aws.amazon.com/marketplace/pp/B00A6KUVBW/ref=mkt_ste_l2_ec2_f1?nc1=h_l2_c)を使って複数のENIをアタッチしたEC2インスタンスを起動して、EIPはeth0、eht1のいずれかにアタッチする。
EIPはデフォルトゲートェイが向いているENIにアタッチ。

## 検証すること
デフォルトゲートウェイがeth1に向いている場合にEC2インスタンスが起動するかを調べる。


## デフォルトゲートウェイがeth0に向いてる場合

起動直後のルーティングは以下。

```
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         ip-10-0-0-1.ap- 0.0.0.0         UG    0      0        0 eth0
```

デフォルトゲートウェイがeth0に向くように設定する。

```
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=on
DEFROUTE=yes

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=on
DEFROUTE=no
```

ネットワークを再起動した後のルーティングを表示する（これは当然通信可能）。

```
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth1
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         ip-10-0-0-1.ap- 0.0.0.0         UG    0      0        0 eth0

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 06:F0:8D:D1:56:9E
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::4f0:8dff:fed1:569e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:205 errors:0 dropped:0 overruns:0 frame:0
          TX packets:212 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15578 (15.2 KiB)  TX bytes:24467 (23.8 KiB)
          Interrupt:246

eth1      Link encap:Ethernet  HWaddr 06:01:19:0A:B4:D9
          inet addr:10.0.2.100  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::401:19ff:fe0a:b4d9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:949 errors:0 dropped:0 overruns:0 frame:0
          TX packets:591 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:75907 (74.1 KiB)  TX bytes:82037 (80.1 KiB)
          Interrupt:245

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
```

## デフォルトゲートウェイがeth1に向いてる場合

デフォルトゲートェイがeth1に向くように設定変更する。

```
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=on
DEFROUTE=no

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=on
DEFROUTE=yes
```

ネットワークを再起動した後のルーティングを表示する。
EIPをつけた変えたりしたのでダウンはしたが、正常に通信出来る。

```
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth1
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         ip-10-0-2-1.ap- 0.0.0.0         UG    0      0        0 eth1

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 06:F0:8D:D1:56:9E
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::4f0:8dff:fed1:569e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0
          TX packets:117 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7425 (7.2 KiB)  TX bytes:8368 (8.1 KiB)
          Interrupt:246

eth1      Link encap:Ethernet  HWaddr 06:01:19:0A:B4:D9
          inet addr:10.0.2.100  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::401:19ff:fe0a:b4d9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:560 errors:0 dropped:0 overruns:0 frame:0
          TX packets:364 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:46871 (45.7 KiB)  TX bytes:44451 (43.4 KiB)
          Interrupt:245

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
```

## デフォルトゲートウェイがeth1に向いてるEC2から作成したAMIを使ってEC2を起動

念のため、先ほどのEC2インスタンスからAMIを作成してEC2を起動してみる。
先ほどと同じようにEC2にはENIを2つアタッチしてeth1にEIPをアタッチすると正常に起動した。

```
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth1
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         ip-10-0-2-1.ap- 0.0.0.0         UG    0      0        0 eth1

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 06:38:12:29:FA:F2
          inet addr:10.0.0.200  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::438:12ff:fe29:faf2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:117 errors:0 dropped:0 overruns:0 frame:0
          TX packets:125 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5989 (5.8 KiB)  TX bytes:7692 (7.5 KiB)
          Interrupt:246

eth1      Link encap:Ethernet  HWaddr 06:CE:B6:82:AA:92
          inet addr:10.0.2.200  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4ce:b6ff:fe82:aa92/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:331 errors:0 dropped:0 overruns:0 frame:0
          TX packets:258 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:28919 (28.2 KiB)  TX bytes:30075 (29.3 KiB)
          Interrupt:245

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

```

## 参考

ちなみにAmazon Linuxではeth0が優先されるようにされており、さらにmeta data serverへはeth0を使うようにStatic Routingが設定されているみたい。

```
$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ip-10-0-0-1.ap- 0.0.0.0         UG    0      0        0 eth0
default         ip-10-0-2-1.ap- 0.0.0.0         UG    10001  0        0 eth1
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth1
instance-data.a *               255.255.255.255 UH    0      0        0 eth0

$ sudo cat /etc/sysconfig/network-scripts/route-eth0
# Static route for metadata service
169.254.169.254 via 0.0.0.0 dev eth0

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 06:5B:66:C0:16:C3
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::45b:66ff:fec0:16c3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:732 errors:0 dropped:0 overruns:0 frame:0
          TX packets:678 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:73668 (71.9 KiB)  TX bytes:70086 (68.4 KiB)
          Interrupt:72

eth1      Link encap:Ethernet  HWaddr 06:12:84:DD:FD:5C
          inet addr:10.0.2.100  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::412:84ff:fedd:fd5c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1304 (1.2 KiB)  TX bytes:1362 (1.3 KiB)
          Interrupt:73

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:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
```