この記事の目次
AWSで構築したWebサーバーがHTTPで接続できない原因4つ
本記事ではAmazon EC2のインスタンスがインターネットに接続できない原因に関して解説していきます。AWS初心者はまず、AWSの基本サービスであるEC2を使ってWebサーバーの構築を行うことが多いかと思います。
しかし、Amazon EC2インスタンスを使ってWebサーバーを構築したものの、HTTPでの接続ができないといったトラブルは多いです。その際のトラブルシューティングにご活用いただければ幸いです。
原因1:Public IPアドレスの問題
HTTP接続できない原因の1つ目はAmazon EC2のインスタンスにPublic IPアドレスが付与されていないことです。 つまり、インスタンスにPrivate IPアドレスが付与されてしまっているケースです。
Public IPアドレスとPrivate IPアドレスについて
インターネットに接続するためのIPアドレスがPublic IPアドレス、社内LANなどの閉じたネットワークで使用されるのがPrivate IPアドレスです。 Public IPアドレスが付与されていないWebサーバーはインターネット経由でHTTP接続することができません。
Private IPアドレスの形式は、ネットワークのクラスに応じて以下のいずれかとなっています。
Class A: 10.0.0.0 ~ 10.255.255.255
Class B: 172.16.0.0 ~ 172.31.255.255
Class C: 192.168.0.0 ~ 192.168.255.255
上記のいずれにも該当しないIPアドレスはPublic IPアドレス(Global IPアドレスとも言う)となります。
解決方法 その1
該当のEC2インスタンスにPublic IPアドレスが付与されていないか、AWSのコンソールにて確認しましょう。 EC2インスタンスを起動する際、デフォルトではPublic IPアドレスが付与されますので、誤ってPrivate IPアドレスを選択していないか確認しましょう。
解決方法 その2
Elastic IPアドレスをEC2のインスタンスに付与してしまうのも、解決方法の1つです。 Elastic IPアドレスはPublic IPアドレスでもあるので、EC2インスタンスにElastic IPアドレスを付与することでHTTP接続できない問題が解消される可能性があります。
Public IPアドレスはEC2インスタンスが再起動すると変更になってしまいますので、EC2インスタンスWebサーバーとして運用する場合、Elasctic IPアドレスを付与したほうが良いケースがあります。
原因2:ネットワークACLの問題
ネットワークACLによってトラフィックが遮断されていることが、HTTP接続できない原因となっていることがあります。EC2インスタンスが動作しているVPCサブネットのネットワークACLのルールを確認しましょう。
ネットワークACLとは
ネットワークACL(アクセスコントールリスト)とは、AWSが提供するVPC単位でのファイアウォールです。このネットワークACLでHTTPが許可されていないことが、EC2インスタンスにHTTP接続できない原因となっている可能性があります。
ネットワークACLはあくまでサブネット単位での制御となっています。また、セキュリティグループと異なってステートレスで通信を管理するため、インバウンドとアウトバウンドの両方を設定する必要があります。
解決方法
該当のEC2インスタンスが起動しているVPCサブネットの設定を確認しましょう。具体的な確認事項は以下となっております。
・該当のVPCサブネットに紐付いているネットワークACLが必要なポート(HTTPの場合は80番)を許可しているかどうかを確認します。
・インバウンドとアウトバウンドが両方許可されているかどうかを確認します。
上記2点に関して許可されていない場合は、許可するように設定を変更してください。
原因3:セキュリティグループの問題
HTTP接続できない原因の3つ目は、EC2インスタンスのセキュリティグループの問題です。EC2インスタンスのElastic Network Interfaceに紐付いているセキュリティグループによってHTTPのトラフィックが許可されていない可能性があります。
セキュリティグループとは
セキュリティグループとはAWSが提供するEC2のインスタンスレベルでトラフィックを制御するファイアウォールです。 前述のネットワークACLと異なり、EC2のインスタンスに対して関連付けを行うことができます。
セキュリティグループはネットワークACLとは異なり、ステートフルで通信を管理しますので、戻りの通信を設定する必要がありません。Webサーバーであれば「HTTP通信を許可します」といった設定を行えば良いのです。
解決方法
該当のEC2インスタンスに関連付いているセキュリティグループの設定を確認しましょう。期待通りの設定となっていなければ、正しく設定を変更する必要があります。
確認事項は以下となっております。期待通りの設定になっていない場合は、設定を正しく変更するようにしてください。
・セキュリティグループの設定でHTTP(80番のポート)が許可されているかを確認します。
・セキュリティグループの設定で0.0.0.0/0 のカスタム IP アドレスを指定されているかを確認します。
2点目のIPアドレスに関しては必ずしも0.0.0.0/0にする必要はありません。こちらは送信元のIPアドレスを指定する項目ですので、アクセス元が限定されている場合は、アクセス元のIPアドレスを指定する形でも問題ありません。
0.0.0.0/0と指定すると全てのIPアドレスからアクセスを許可することができます。
原因4:インターネットゲートウェイの問題
HTTP接続できない原因の4つ目は、インターネットゲートウェイにトラフィックがルーティングされていないことです。
該当のVPCにインターネットゲートウェイがアタッチされているか、またインターネットゲートウェイに正しくルーティングされているかを確認する必要があります。
インターネットゲートウェイとは
インターネットゲートウェイとは、VPCとインターネット間の通信を可能にするAWS提供のコンポーネントです。要するに、インターネットゲートウェイがVPCにアタッチされていないとVPC内のEC2インスタンスはインターネットにアクセスすることができません。
インターネットゲートウェイの役割の1つ目は、インターネットのトラフィックの送信先をVPC内のルートテーブルに追加することです。要するに外部からの通信VPC内のインスタンス等にルーティングする役割があります。
インターネットゲートウェイとの役割の2つ目は、VPC内のEC2インスタンスがインターネットに通信を行う際にNAT変換を行うことです。この際、EC2インスタンスにはPublic IPアドレスが付与されている必要があります。
解決方法
AWSのコンソールにてインターネットがVPCにアタッチされているかどうか、またルートテーブルの設定が正しいかを確認する必要があります。確認事項は以下のとおりです。
・Amazon VPC コンソールにて、該当のVPCにインターネットゲートウェイがアタッチされているかどうかを確認します。
・VPCのルートテーブルでルートエントリを確認します。ターゲットとしてインターネットゲートウェイのIDが指定されている、かつ送信先が 0.0.0.0/0と指定されているエントリが存在するかを確認します。
AWSの学習を効率良く進めて問題をひとつずつ解決していこう!
本記事ではEC2のインスタンスがHTTP接続できない原因について解説しました。AWSではネットワークに関して様々な設定ができる関係上、問題が発生した際に複数の原因をひとつずつ確認していく作業が必要です。
EC2のインスタンスがHTTP接続できないという問題はAWS初心者がはまりやすいポイントですので、本記事を参考にして、AWSの学習を効率良く進めていただければと思います。
この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞