【入門編】 パブリックサブネット上のEC2インスタンスへのトラフィック到達性エラー原因 – クラウドインフラと仮想化ネットワーク実践ガイド

AWSのパブリックサブネットで「繋がらない!」と焦ったときに見るべき、ネットワークの「迷子」探しガイド

クラウドのインフラに触れ始めたばかりの頃、誰もが一度はぶつかる壁があります。それは、「パブリックサブネットにEC2を立てたのに、なぜかブラウザからアクセスできない!」という事態です。

画面には「接続を待機しています…」のまま、くるくると回るロードアイコン。焦りますよね。でも安心してください。クラウドのネットワークは、実は私たちが普段生活している「郵便システム」と全く同じ仕組みで動いています。

今日は、パケットがあなたのEC2に届くまでの冒険を追いかけながら、なぜ接続エラーが起きるのか、その「迷子ポイント」を一つずつ紐解いていきましょう。

—

1. パケットは「郵便物」、ネットワークは「街」

まず、皆さんのEC2インスタンスを「自宅」、パケットを「あなた宛の郵便物」だと想像してみてください。郵便物が届かないとき、原因はどこにあるでしょうか?

1. 宛先が間違っている(IPアドレスの勘違い)
2. 道順が書かれていない(ルートテーブルの欠落)
3. そもそも門が開いていない(セキュリティグループやNACLの遮断)
4. 家まで辿り着くための道路がない(IGWの設定漏れ)

これらを一つずつ確認していきましょう。

—

2. チェックリスト:パケットが迷子になる「4つの関所」

① インターネットゲートウェイ(IGW)は繋がっていますか?

パブリックサブネットと言えど、魔法のようにインターネットと繋がるわけではありません。VPCには「インターネットという巨大な外部の世界」へ繋がるための唯一の門、それがインターネットゲートウェイ(IGW)です。

  • 確認ポイント: VPCにIGWがアタッチされていますか?
  • 現場の感覚: 「家を建てたのに、公道に繋がる私道を作っていない」状態です。まずはVPCの設定画面で、IGWが正しくアタッチされているか確認しましょう。

② ルートテーブルで「外の世界」を指し示していますか?

郵便物が家のポストに届くためには、配達員が「この先の外の世界へ行くには、あの門(IGW)を通りなさい」という地図(ルートテーブル)を持っている必要があります。

  • 設定の確認:

サブネットに関連付けられたルートテーブルに、以下のルールがあるか確認してください。

  • 宛先(Destination): 0.0.0.0/0
  • ターゲット(Target): igw-xxxxxxxx(あなたのIGW)

これが抜けていると、パケットは「外に出たいのに、どこに行けばいいか分からない」と迷子になってしまいます。

③ EIP(弾力IP)は割り当てられていますか?

インターネットから特定のインスタンスに届くには、世界中で唯一無二の「住所」が必要です。EC2には起動時にパブリックIPが振られますが、再起動すると変わってしまうことがあります。

  • 解決策: 本番環境や安定した検証環境では、Elastic IP (EIP) を取得して固定しましょう。これが「番地」の役割を果たします。

④ セキュリティグループとNACLの「門番」は誰ですか?

ここが一番のハマりポイントです。AWSには「2種類の門番」がいます。

  • セキュリティグループ(SG): インスタンスの「玄関のドア」。
  • インバウンドルールに、許可したいポート(HTTPの80やHTTPSの443など)が含まれているか確認してください。
  • ネットワークACL(NACL): VPCという「街の入り口にある検問所」。
  • こちらは少し厳格で、許可だけでなく「拒否」ルールも設定できます。基本はデフォルト(すべて許可)でOKですが、誤って拒否設定をしていないか確認しましょう。

—

3. 実践!AWS CLIで接続確認してみる

トラブルシューティングの際、GUIのコンソールをポチポチするのも良いですが、CLIを使うと「どこで止まっているか」がより明確になります。

例えば、セキュリティグループが正しく設定されているか、以下のコマンドで確認できます。

# 特定のインスタンスのセキュリティグループIDを確認する
aws ec2 describe-instances --instance-ids i-0123456789abcdef0 --query "Reservations[*].Instances[*].SecurityGroups"

# 指定したセキュリティグループのルールを詳しく見る
aws ec2 describe-security-group-rules --filters Name=group-id,Values=sg-0a1b2c3d4e5f6g7h8

もしセキュリティグループの設定が漏れていれば、以下のようにルールを追加しましょう(例:HTTPポートの開放)。

# ポート80(HTTP)を全開放する設定
aws ec2 authorize-security-group-ingress \
    --group-id sg-0a1b2c3d4e5f6g7h8 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/0 # 誰からのアクセスも許可する

—

最後に:ネットワークは「繋がって当たり前」ではない

トラブルが起きると焦ってしまいがちですが、ネットワークは「デフォルトでは何一つ繋がらない」という前提で作られています。何も設定されていない状態は、鉄壁の要塞です。

「どこでパケットが遮断されているのか?」を想像する力は、経験を積めば必ず身につきます。今回紹介した4つの関所を一つずつチェックすれば、必ずパケットはあなたのEC2へ辿り着きます。

焦らず、一つずつ門を開いていきましょう。あなたのインフラ構築ライフが、よりスムーズで楽しいものになりますように!

コメント

タイトルとURLをコピーしました