私は EC2 インスタンスでウェブサイトをホストしています。HTTP (80) または HTTPS (443) での接続をユーザーに許可する方法を教えてください。

所要時間3分
0

私は自分のウェブサイトを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでホストしています。ユーザーには、HTTP (ポート 80) または HTTPS (ポート 443) で自分のウェブサイトに接続してもらえるよう希望しています。

解決策

ポート 80 と 443 でトラフィックを許可するには、関連するセキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) を設定する必要があります。

セキュリティグループルール

HTTP トラフィックの場合、ポート 80 で、送信元アドレス 0.0.0.0/0 からのインバウンドルールを追加します。

HTTPS トラフィックの場合、ポート 443 で、送信元アドレス 0.0.0.0/0 からのインバウンドルールを追加します。

これらのインバウンドルールでは、IPv4 アドレスからのトラフィックが許可されます。IPv6 トラフィックを許可するには、同じポートで、送信元アドレス :: /0 からのインバウンドルールを追加します。セキュリティグループの作成または変更の詳細については、「セキュリティグループを使用してリソースへのトラフィックを制御する」を参照してください。

セキュリティグループはステートフルなので、インスタンスからユーザーへのリターントラフィックは自動的に許可されます。セキュリティグループのアウトバウンドルールは変更する必要はありません。

: 次の例は、TCP ポート 80 (HTTP) および 443 (HTTPS) で IPv4 および IPv6 トラフィックを許可するセキュリティグループルールを示しています。インスタンスにログインするための SSH や RDP など、他のトラフィックソースを現在のユースケースで許可する必要があるかどうかを判断してください。次に、必要なトラフィックの許可に関するインバウンドルールが SG に存在することを確認します。

インバウンドルール

タイププロトコルポートの範囲ソース
HTTP(80)TCP(6)800.0.0.0/0
HTTP(80)TCP(6)80:: /0
HTTPS (443)TCP(6)4430.0.0.0/0
HTTPS (443)TCP(6)443:: /0

ネットワーク ACL

デフォルトのネットワーク ACL では、すべてのインバウンドとアウトバウンドの IPv4 トラフィックが許可されます。ユーザーが IPv6 経由で接続していて、Amazon 仮想プライベートクラウド (Amazon VPC) に IPv6 CIDR ブロックが関連付けられている場合、デフォルトのネットワーク ACL では、すべてのインバウンドおよびアウトバウンドの IPv6 トラフィックを許可するルールも自動的に追加されます。ただし、より制限の厳しいルールを記載したカスタムネットワーク ACL を使用する場合は、ポート 80 と 443 のトラフィックを明示的に許可する必要があります。

ネットワーク ACL はステートレスなので、Web サイトへの接続を許可するには、インバウンドルールとアウトバウンドルールの両方を追加する必要があります。ネットワーク ACL ルールの変更の詳細については、「ネットワーク ACLを使用してサブネットへのトラフィックを制御する」を参照してください。

: 次の例は、TCP ポート 80 (HTTP) と 443 (HTTPS) のトラフィックを許可するカスタムネットワーク ACL を示しています。ネットワーク ACL は、単一の EC2 インスタンスだけでなく、サブネット全体のすべてのリソースに適用されます。設定例では、宛先ポート 80 と 443 を除き、同じサブネット内のリソースに出入りするすべてのトラフィックがブロックされます。インスタンスにログインするための SSH や RDP など、他のトラフィックソースを現在のユースケースで許可する必要があるかどうかを判断してください。次に、必要なトラフィックを許可するための適切なインバウンドルールがあることを確認します。

インバウンドルール

ルール#タイププロトコルポートの範囲ソース許可/拒否
100HTTP(80)TCP(6)800.0.0.0/0ALLOW
101HTTPS (443)TCP(6)4430.0.0.0/0ALLOW
102HTTP(80)TCP(6)80:: /0ALLOW
103HTTPS (443)TCP(6)443:: /0ALLOW
\ *すべてのトラフィックすべてすべて:: /0DENY
\ *すべてのトラフィックすべてすべて0.0.0.0/0DENY

アウトバウンドルール

ルール#タイププロトコルポートの範囲宛先許可/拒否
100カスタム TCP ルールTCP(6)1024-655350.0.0.0/0ALLOW
101カスタム TCP ルールTCP(6)1024-65535:: /0ALLOW
\ *すべてのトラフィックすべてすべて:: /0DENY
\ *すべてのトラフィックすべてすべて0.0.0.0/0DENY

接続拒否エラーのトラブルシューティング

接続拒否エラーとは、接続リクエストがインスタンスにルーティングされても、指定したポートのサービスから受信がない状態を表すエラーです。ホスト A がホスト B への TCP 接続を開始し、接続拒否エラーを受け取った場合、以下の状況になっています。

  • まず、ホスト A はホスト B に TCP SYN パケットを送信しました。
  • 次に、ホスト B はホスト A に応答して TCP RST パケットを送信しました。

セキュリティグループとネットワーク ACL で TCP ポート 80 と 443 を許可した後でも、このエラーが発生した場合は、次のトラブルシューティングを行います。

  • httpd (Apache) などのサービスデーモンが実行されていないか、停止状態です。

トラブルシューティングを行うには、サービスが EC2 インスタンスで実行中の状態にあるかどうかを確認します。

  • サービスは間違ったポートでリッスンしています。

トラブルシューティングを行うには、EC2 インスタンスが必要な TCP ポート (80/443) でリッスンしているかどうかを確認します。

  • ポートはファイアウォールによってブロックされています。

トラブルシューティングを行うには、EC2 インスタンスの OS レベルのファイアウォールが、必要なポートで受信する TCP トラフィックをブロックしていないかを確認してください。

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ