質問: AWS内に作成したEC2からインターネットのアクセスができない事象が発生しております。 構築したサーバのルーティング設定周りが怪しいと思っておりますが、原因を特定できておりませんので、AWS構築に詳しい方がいらっしゃいましたら、ご教授ください。 実行したコマンドは下記のとおりです。 ■コマンド実行結果 ``` # curl http://google.com curl: (7) Failed to connect to google.com port 80: Connection timed out ``` 今回環境を構築した手順は下記のとおりです。 ■構築手順 ・AWSにてVPCを作成し、その後パブリックサブネット(10.0.1.0/24)を作成いたしました。 ・インターネットゲートウェイを作成し、VPCにアタッチいたしました。 ・インターネットに向けて設定として、ルートテーブルにDestinationに0.0.0.0/0、Targetに上記で作成したインターネットゲートウェイを指定いたしました。 ・その後、EC2を作成し、グローバルIPアドレスとしてEIPをアタッチしております。 ・構築方法については、下記URLで紹介されている手順を参考にして構築しております。 (参考) ■パケットキャプチャ 上記コマンドを実行した際にパケットキャプチャを取得したところ、google.comへのSYNパケットを投げているのですが、その後、ACKパケットが返却されず、SYNパケットを再送しているような状況でした。 ■routeコマンド結果 ``` # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default ip-10-0-1-1.ap- 0.0.0.0 UG 0 0 0 eth0 default ip-10-0-1-1.ap- 0.0.0.0 UG 10001 0 0 eth1 10.0.1.0 * 255.255.255.0 U 0 0 0 eth0 10.0.1.0 * 255.255.255.0 U 0 0 0 eth1 ```
回答: EC2 インスタンスに eth0, eth1 と 2つのネットワークインターフェース(ENI)が存在していて、おそらく、eth0:プライベートIPアドレスのみ、eth1:プライベートIPアドレス+EIP となっていて、ルーティング設定により eth0 から outbound パケットを出そうとしているのだと思います。 eth1 を優先するようルーティングを設定するか、eth1 を削除し eth0 のみとし、eth0 に EIP を付けるといいと思います。 eth0 のグローバルIPアドレスが固定でなくてもいいならば、EIP ではなく、起動時に自動的で設定されるグローバルIPアドレス/パブリックIPアドレスを使ってもいいです。