こんにちは!SREとして日夜クラウドと向き合っている、あなたの技術の伴走者です。
インフラの世界へようこそ!AWS(Amazon Web Services)を触り始めると、VPC(Virtual Private Cloud)という自分だけの仮想空間を作ることから冒険が始まります。この仮想空間、実は最初は「外の世界と一切繋がっていない孤島」のような状態なんですね。セキュリティの観点からは最高ですが、これではインターネットからアクセスできるWebサーバーを置くことも、アップデートファイルをダウンロードすることもできません。
そこで必要になるのが、島と外の世界を結ぶ「海の玄関口」と、そこへ向かうための「地図」です。今回は、AWSのネットワークにおいて最も基本的で、かつ絶対に避けて通れない「インターネットゲートウェイ(IGW)」と「ルートテーブル」の切っても切れない関係について、身近な例えを交えながら一歩ずつ紐解いていきましょう!
—
1. 郵便配達員に例えるAWSのネットワークの仕組み
まずは、難しいネットワークの言葉をいったん横に置いて、私たちが普段暮らしている現実世界に置き換えて考えてみましょう。
あなたが「パケット(データの小包)」という手紙を出すときを想像してください。
VPCというあなたの家(プライベートな空間)から、インターネットという広大な世界へ手紙を送りたいとします。
- パケット(データ) = あなたが書いた手紙
- VPC(仮想プライベートクラウド) = あなたの家や街
- インターネットゲートウェイ(IGW) = 街の「中央郵便局(外の世界へ通じる唯一の出口)」
- ルートテーブル = 家の玄関に置いてある「宛先ごとの行き先案内地図」
家の中で手紙を書いたはいいものの、「この手紙をどこに出せば外の世界へ届くのか?」を知らないと、手紙はリビングの机の上に置きっぱなしになってしまいますよね。
AWSの世界でも全く同じです。サブネット(部屋)で作られたサーバーが「外のWebサイトを見に行きたい!」と言ったとき、「とりあえず外の世界へ行きたかったら、あの玄関口(IGW)へ向かいなさい!」と指示する地図(ルートテーブル)がどうしても必要なのです。
—
2. パブリックサブネットはどうやって「パブリック」になるのか?
AWSのコンソール画面でサブネットを作るとき、「パブリックサブネット」と「プライベートサブネット」という選択肢に出会います。ここで初学者の多くが、「えっ、チェックを入れたら勝手にパブリックになるの?」と疑問に思いますよね。
実は、AWSのサブネット自体は、生まれた瞬間から「パブリック」や「プライベート」という生まれ持った属性を持っているわけではありません。「どんなルートテーブルが結び付けられているか(アソシエーション)」によって、その性格が決まるのです。
パブリックサブネットと呼ばれる場所を作るには、以下の「3つのステップ」をクリアする必要があります。
1. IGW(インターネットゲートウェイ)の作成とVPCへのアタッチ
まずは、あなたのVPCに「外の世界へのドア」であるIGWを取り付けます。これがないと始まりません。
2. ルートテーブルの作成とデフォルトルートの登録
「宛先がどこであろうと(0.0.0.0/0)、とりあえずIGWへ投げる」というルールを書いた地図を作ります。
3. サブネットとルートテーブルの関連付け(アソシエーション)
作った地図を、特定のサブネットの部屋の壁にペタッと貼り付けます。
この3つが揃った瞬間、そのサブネットは晴れて「パブリックサブネット」として動き出すのです!
—
3. 呪文のような「0.0.0.0/0」とIGWの正体
ルートテーブルの設定画面を見ると、必ずと言っていいほど見慣れない文字列が登場します。それが 0.0.0.0/0 です。
一見すると暗号のようですが、怖がる必要はありません。これはネットワークの世界で「その他すべての宛先(要するに、どこへ行くにしても!)」を意味する便利な言葉です。
ルートテーブルの中身は、だいたい次のような表になっています。
| 送信先 (Destination) | ターゲット (Target) | 意味 |
| :— | :— | :— |
| 10.0.0.0/16 | local | VPC内の通信なら、そのままVPCの中でやり取りしてね |
| 0.0.0.0/16 | igw-xxxxxxxx | 上記以外のすべての行き先(インターネット)は、あのIGWへ送り出してね! |
この「上記以外のすべて(0.0.0.0/0)」の案内先として、IGWを指定してあげること。これが、パブリックサブネットを作るための心臓部となる設定なのです。
—
4. 実務で役立つ!AWS CLIを使った構築・設定イメージ
「理屈は分かったけれど、実際の現場ではどうやって設定するの?」という方のために、AWS CLI(コマンドラインインターフェース)を使った具体的な構築の流れを覗いてみましょう。
実務の現場では、手動でポチポチ画面を操作するだけでなく、TerraformやCloudFormation、あるいはこうしたスクリプトを使ってインフラを構築することがよくあります。
# 1. インターネットゲートウェイ(IGW)を作成する
# これがVPCの外へ通じる「中央郵便局」の建設です
IGW_ID=$(aws ec2 create-internet-gateway --query 'InternetGateway.InternetGatewayId' --output text)
echo "作成されたIGWのID: ${IGW_ID}"
# 2. 作成したIGWを、あなたのVPCにアタッチ(結び付け)する
aws ec2 attach-internet-gateway --internet-gateway-id ${IGW_ID} --vpc-id ${VPC_ID}
echo "VPCにIGWをアタッチしました。"
# 3. パブリックサブネット用の新しいルートテーブルを作成する
ROUTE_TABLE_ID=$(aws ec2 create-route-table --vpc-id ${VPC_ID} --query 'RouteTable.RouteTableId' --output text)
echo "新しいルートテーブルを作成しました: ${ROUTE_TABLE_ID}"
# 4. 【最重要】ルートテーブルに「すべての通信(0.0.0.0/0)はIGWへ向かえ」というルールを追加する
aws ec2 create-route \
--route-table-id ${ROUTE_TABLE_ID} \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id ${IGW_ID}
echo "ルートテーブルにインターネットへのデフォルトルートを追加しました。"
# 5. サブネットとルートテーブルを関連付け(アソシエーション)する
# これにより、このサブネットにいるサーバーたちは外の世界へ行けるようになります
aws ec2 associate-route-table \
--subnet-id ${SUBNET_ID} \
--route-table-id ${ROUTE_TABLE_ID}
echo "サブネットとルートテーブルを関連付けました!"
このように、コードで見ると「IGWを作る」「VPCにつなぐ」「地図(ルート)を書く」「部屋(サブネット)に地図を貼る」というステップが非常にシンプルに整理されていることが分かりますよね。
—
5. よくあるトラブルシューティング:なぜか外に繋がらない!?
現場でSREとして働いていると、「パブリックサブネットに置いたはずのEC2インスタンスから、外部のAPIにアクセスできない!」という相談をよく受けます。
そんなときは、以下のポイントを上から順にチェックしてみてください。大体このあたりの「うっかり」が原因です。
1. ルートテーブルのアソシエーション漏れ
「ルートテーブルを作ってデフォルトルートを書いたのに、肝心のサブネットと結び付ける(アソシエーションする)のを忘れていた」というパターンです。地図はあるのに、部屋に貼っていない状態ですね。
2. セキュリティグループやNACLのブロック
ルートテーブルはバッチリ設定されているのに、インスタンスについている「セキュリティグループ」や、サブネットの「ネットワークACL」が外向きの通信(アウトバウンド)を禁止しているケースです。AWSはデフォルトで外向き通信を許可していますが、後からカスタムルールを追加して塞いでしまうミスがよく起こります。
3. Elastic IP(EIP)の付与忘れ
もしそのインスタンスからインターネットへ出ていくだけでなく、外からアクセスを受け入れたい(Webサーバーなど)場合は、インスタンスにパブリックIPアドレスやElastic IPが正しく割り当てられているか確認が必要です。
—
まとめ
いかがでしたでしょうか?
AWS VPCにおけるインターネットゲートウェイ(IGW)とルートテーブルの関連付けは、一見すると専門用語が多くて難しく感じられますが、「外の世界へ通じる郵便局を作り、部屋の地図にその行き先を書き込む作業」だと捉えれば、ぐっと親しみやすくなったのではないでしょうか。
インフラやネットワークの技術は、私たちが普段使っている現実世界の仕組みをデジタルな世界に置き換えたものに過ぎません。一つひとつの要素が「何のために存在しているのか」のストーリーをイメージできれば、トラブルが起きても慌てず冷静に対処できるようになります。
あなたのクラウドの旅が、安全でワクワクするものになりますように。それではまた次回の技術解説でお会いしましょう!
コメント