Amazon EC2 インスタンスがインターネットゲートウェイを使用してインターネットに接続できないのはなぜですか?
最終更新日: 2022 年 6 月 8 日
パブリックサブネット内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにパブリック IP アドレスまたはインターネットゲートウェイがありますが、インターネットにアクセスできません。
簡単な説明
Amazon EC2 がインターネットにアクセスできない理由をトラブルシューティングするには、次を実行します。
- EC2 インスタンスが前提条件をすべて満たしていることを確認します。
- インスタンスにパブリック IP アドレスがあることを確認します。
- ファイアウォールがアクセスをブロックしていないことを確認します。
解決方法
インスタンスが前提条件をすべて満たしていることを確認する
インスタンスが次の条件を満たしている必要があります。
- インスタンスのサブネットに関連付けられているルートテーブルに、インターネットゲートウェイへのデフォルトルート (0.0.0.0/0) がある。
- ルートに関連付けられているインターネットゲートウェイが削除されていない。
- インスタンスの Elastic Network Interface にアタッチされているセキュリティグループに、ポートとプロトコルに対してアウトバウンドインターネットトラフィック (0.0.0.0/0) を許可するルールがある。
- インスタンスのサブネットに関連付けられているネットワークアクセスコントロールリスト (ネットワーク ACL) に、アウトバウンドとインバウンドの両方のトラフィックを許可するルールがある。
インスタンスにパブリック IP アドレスがあることを確認する
パブリックサブネットのインスタンスにパブリック IP アドレスがない場合は、そのインスタンスは所属する仮想プライベートクラウド (VPC) の外側にアクセスできません。これは、インスタンスにインターネットゲートウェイがある場合にも当てはまります。
インスタンスにインターネットへのアクセスを許可するには、Elastic IP アドレスを割り当て、この Elastic IP アドレスをインスタンスに関連付けます。
ファイアウォールがアクセスをブロックしていないことを確認する
インスタンスが前述の条件を満たしているのに、インターネット接続の問題が解決しない場合は、オペレーティングシステムでローカルファイアウォールが実行されている可能性があります。オペレーティングシステムにローカルファイアウォールを設ける代わりに、セキュリティグループを使用することがベストプラクティスです。ローカルファイアウォールを無効にすることでワークロードに影響が及ばないようにしてください。
# For Uncomplicated Firewall
sudo ufw disable
# For firewalld
sudo systemctl disable firewalld --now
ファイアウォールを使用する必要がある場合、インターネット接続の問題は通常、OUTPUT チェーンに関連しています。次のコマンドを実行すると、発信トラフィックを許可できます。
sudo iptables -P OUTPUT ACCEPT
sudo iptables -I OUTPUT 1 -j ACCEPT
Windows Server:
Windows Server のデフォルトのファイアウォールで、以下のコマンドを実行します。
netsh advfirewall firewall show rule name=all
上記のコマンドによりトラフィックがブロックされていることが分かったら、古いルールを削除するか、特定のポートのトラフィックを許可する新しいルールを追加します。詳細については、Microsoft のドキュメント「Understanding Windows firewall with advanced security rules」(高度なセキュリティルールを備えた Windows ファイアウォールについて) を参照してください。