パブリックサブネットに配置された 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 を使用してインターネットに接続できない原因を教えてください