インターネットから Amazon VPC 内の Amazon EC2 インスタンスに接続できないのはなぜですか?
最終更新日: 2019 年 2 月 11 日
インターネットから Amazon Virtual Private Cloud (Amazon VPC) 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに接続することができません。どうすれば解決できますか?
簡単な説明
Amazon VPC 内の Amazon EC2 インスタンスに接続する際に発生する問題は、多くの場合セキュリティグループ、ネットワークアクセスコントロールリスト (ACL)、またはルートテーブルの設定に関連しています。
解決方法
起動する前に、Amazon EC2 インスタンスがシステムステータスのチェックとインスタンスステータスのチェックに成功していることを確認します。
セキュリティグループのチェック
インスタンスの Elastic Network Interface に関連付けられているセキュリティグループが、必要なポートを経由する接続を許可していることを確認します。
重要: 本稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみインスタンスへのアクセスを許可します。テスト目的で、0.0.0.0/0 のカスタム IP アドレスを指定し、すべての IP アドレスに SSH または RDP を使用したインスタンスへのアクセスを許可できます。
注意: セキュリティグループはステートフルであるため、Egress ルールの設定は必要ありません。
ネットワーク ACL のチェック
ネットワーク ACL について以下を確認します。
- VPC サブネットに関連付けられているネットワーク ACL が、必要なポートを経由するトラフィックを許可していることを確認する。
注意: 詳細については、VPC に推奨されるネットワーク ACL ルールとルールの追加と削除を参照してください。 - インバウンドとアウトバウンドの両方のトラフィックが許可されていることを確認する。
注意: ネットワーク ACL はステートレスです。許可されているインバウンドトラフィックに対する応答は、アウトバウンドトラフィックのルールに従いますが、許可されているアウトバウンドトラフィックに対する応答は、インバウンドトラフィックのルールに従います。 - アウトバウンド ACL で開いているのがエフェメラルポートのみであることを確認する。
注意: 必要なポートのみを開いておくことがベストプラクティスです。
重要: インスタンスにアクセスできない原因がまだ不明である場合は、VPC フローログの有効化を検討します。フローログは、VPC を行き来する IP アドレスのトラフィックをキャプチャします。フローログの中に拒否されたトラフィックを見つけた場合、セキュリティグループとネットワーク ACL の設定を再度確認します。
ルートテーブルのチェック
インターネットゲートウェイが VPC にアタッチされているかどうかを確認するには、以下の手順を実行します。
- Amazon VPC コンソールにサインインします。
- ナビゲーションペインの [仮想プライベートクラウド] セクションで、[インターネットゲートウェイ] を選択します。
- 検索ボックスで、VPC にアタッチしたインターネットゲートウェイを検索します。あるいは、ページの検索バーからアタッチした VPC の ID (例、vpc-xxxxxxxx) を検索することもできます。
- インターネットゲートウェイの ID (例、igw-xxxxxxxx) を書き留めます。
インターネットゲートウェイが VPC にすでにアタッチされている場合は、以下の手順を実行します。
- VPC のルートテーブルでインターネットゲートウェイのルートを確認します。ターゲットが、インターネットゲートウェイが VPC にアタッチした ID (例: igw-xxxxxxxx) に一致し、送信先が 0.0.0.0/0 であるルートエントリを探します。
- このルートがなければ、ターゲット がこのインターネットゲートウェイで、送信先 が 0.0.0.0/0 であるルートエントリを追加します。
- サブネットルートテーブルにも、このインターネットゲートウェイへのルートエントリがあることを確認します。このエントリがない場合、インスタンスはプライベートサブネットの中にあるため、インターネットからはアクセス不可能です。
注意: オペレーティングシステムレベル (OS レベル) のルートテーブルが、インターネット経由のトラフィックを許可していることを確認します。お使いの設定に応じて、route -n (Linux インスタンス) またはnetstat -rn (Linux または Windows インスタンス) のいずれかのコマンドを使用します。
IP アドレスのチェック
- パブリック IP アドレスが VPC インスタンスに割り当てられているか、または、Elastic IP アドレスがインスタンスのネットワークインターフェイスにアタッチされているかを確認します。パブリック IP アドレスまたは Elastic IP アドレスがインスタンスのネットワークインターフェイスに割り当てられていなければ、1 つを割り当てます。
注意: 詳細については、IP アドレスの操作と Elastic IP アドレスの操作を参照してください。 - インスタンスにある OS レベルのソフトウェアまたはファイアウォールが、必要なポートを経由するトラフィックを許可していることを確認します。