スキップしてコンテンツを表示

Amazon EC2 インスタンスがインターネットゲートウェイ経由でインターネットにアクセスできない理由を知りたいです。

所要時間2分
0

パブリックサブネットに配置された Amazon Elastic Compute Cloud (Amazon EC2) インスタンスには、パブリック IP アドレスまたはインターネットゲートウェイが割り当てられていますが、インターネットにアクセスできません。

解決策

前提条件:

  • インターネットゲートウェイへのデフォルトルート (0.0.0.0/0) を持つインスタンスのサブネットに、ルートテーブルを関連付けます。
  • ルートに関連付けたインターネットゲートウェイが削除されていないことを確認してください。
  • インスタンスの Elastic Network Interface にアタッチされているセキュリティグループでルールを構成し、使用するポートとプロトコルでの外向きインターネットトラフィック (0.0.0.0/0) を許可します。
  • インスタンスのサブネットに関連付けられているネットワークアクセスコントロールリスト (ACL) において、インターネットに対するアウトバウンドトラフィックとインバウンドトラフィックの両方を許可するルールが設定されていることを確認します。

パブリックサブネット内のインスタンスにパブリック IP アドレスが割り当てられていない場合、仮想プライベートクラウド (VPC) 外部からは、そのインスタンスにはアクセスできません。この制限は、インスタンスにインターネットゲートウェイがある場合にも当てはまります。

インスタンスがインターネットに接続できるようにするには、Elastic IP アドレスを割り当ててから、その Elastic IP アドレスをインスタンスに関連付けます

インスタンスにパブリック IP アドレスが割り当てられている場合は、インターネットアクセスをブロックするファイアウォールルールがないかを確認し、該当するルールを削除します。または、ファイアウォールを無効にします。

アクセスをブロックするファイアウォールルールを削除する

オペレーティングシステム (OS) で動作するローカルファイアウォールにより、特定のポートまたは IP アドレスへのアウトバウンドアクセスがブロックされる可能性があります。この問題を解決するには、ファイアウォールルールを一覧表示し、アクセスをブロックしているルールを削除します。

注: 何らかのルールを削除する前には、そのルールをファイルにバックアップしてください。

Linux ディストリビューション

ファイアウォールルールを一覧表示するには、インスタンスに構成されたファイアウォールに応じて、次のいずれかのコマンドを実行します。

シンプルなファイアウォール

sudo ufw status numbered

firewalld

sudo firewall-cmd --list-all-zones

iptables

sudo iptables -L --line-numbers

ファイアウォールルールを削除するには、インスタンスに構成されたファイアウォールに応じて、次のいずれかのコマンドを実行します。

シンプルなファイアウォール

sudo ufw delete rule_number

注: rule_number を削除するファイアウォールルールに置き換えてください。

firewalld

sudo firewall-cmd --zone=zone --remove-rich-rule=rule --permanent
sudo firewall-cmd --reload

注: --permanent ルールを削除した後は、変更を実行時構成に即時反映させるために、ファイアウォールをリロードする必要があります。

iptables

sudo iptables-save > iptables_backup.txt
sudo iptables -D chain rule_number

Windows Server

Windows Server の既定ファイアウォールのファイアウォールルールを一覧表示するには、次のコマンドを実行します。

netsh advfirewall firewall show rule name=all

上記のコマンド出力において、いずれかのルールにブロックされたトラフィックが表示される場合は、次のコマンドを実行し、該当するファイアウォールルールを削除します。

netsh advfirewall firewall delete rule name=rule_name

注: rule_name を、トラフィックをブロックしているファイアウォール名に置き換えてください。

詳細については、Microsoft Learn のウェブサイトで「Windows Firewall ツール」を参照してください。

ファイアウォールを無効にする

Linux ディストリビューション

ローカルファイアウォールを無効化し、代わりにセキュリティグループを使用してもかまいません。

注: ファイアウォールを無効化した場合、ワークロードが影響を受ける可能性があります。

ファイアウォールを無効にするには、次のいずれかのコマンドを実行します。

シンプルなファイアウォール

sudo ufw disable

firewalld

sudo systemctl disable firewalld --now

iptables

sudo systemctl disable iptables

ファイアウォールを使用する必要がある場合は、次のいずれかのコマンドを実行し、送信トラフィックを許可します。

シンプルなファイアウォール

sudo ufw default allow outgoing

iptables

sudo iptables P OUTPUT ACCEPT
sudo iptables I OUTPUT j ACCEPT

注: デフォルトでは、firewalld は、リッチルールを指定しない限り、すべてのゾーンのシステムからのすべての送信トラフィックを許可します。

Windows Server

Windows Server の既定ファイアウォールで Windows Firewall を無効にするには、次のコマンドを実行します。

netsh advfirewall set allprofiles state off

詳細については、Microsoft Learn のウェブサイトで「Windows Firewall ツール」を参照してください。

関連情報

インターネットゲートウェイを使用して VPC のインターネットアクセスを有効にする

プライベートサブネット内の EC2 インスタンスが、NAT を使用してインターネットに接続できない原因を教えてください

AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ