【入門編】 エグレスオンリーインターネットゲートウェイ(Egress-Only IGW)のパケット転送制御とステートフル動作 – クラウドインフラと仮想化ネットワーク実践ガイド

IPv6時代の「片道切符」:エグレスオンリーインターネットゲートウェイの仕組みを解き明かす

こんにちは!クラウドインフラの深淵を日々探求しているSREです。

AWSのネットワークを触っていると、「パブリックサブネット」や「プライベートサブネット」という言葉は日常茶飯事ですよね。特にIPv4の世界では、プライベートサブネットから外に出るために「NATゲートウェイ」という、ちょっとした“通訳兼ボディーガード”のような存在が必要でした。

しかし、IPv6が主流になりつつある今、AWSには「エグレスオンリーインターネットゲートウェイ(Egress-Only Internet Gateway:以下、EIGW)」という、非常にスマートで「粋」な仕組みが用意されています。

今回は、このEIGWが裏側で一体どんな魔法を使っているのか、郵便配達のストーリーになぞらえて紐解いていきましょう。一歩ずつ、丁寧に解説していきますね!

—

そもそも「エグレス」って何?

ネットワークの世界で「エグレス(Egress)」とは「出口」を指します。反対に「入口」は「イングレス(Ingress)」です。

つまり、EIGWとは「外に出る(Egress)ことだけを許可するゲートウェイ」という意味。IPv6アドレスを持つあなたのサーバーが、外の世界(インターネット)へ手紙を出すのはOKだけど、外の世界から勝手にあなたのサーバーへ手紙を投函させるのはNG!という、強力な門番のような存在なんです。

郵便配達で例えるなら:返信のみを許可する「私書箱」

想像してみてください。あなたは、機密情報の詰まった「プライベートオフィス(プライベートサブネット)」にいます。

1. IPv4のNATゲートウェイの場合:あなたが外に手紙を出すとき、ゲートウェイという「秘書」があなたの名前を隠して、自分の名前で送ってくれます。外から返事が来たら、秘書が「あ、これはさっきの返事だな」と中身を確認してあなたに渡します。
2. IPv6のEIGWの場合:あなたは自分の住所を隠す必要はありません(IPv6はアドレスが無限にあるので!)。でも、外からの訪問者はあなたのオフィスの場所を知っていても、入り口の扉が「内側からしか開かない」ようになっています。

EIGWは、あなたが外へ出した「手紙(パケット)」の記録を一時的にメモしておき、「さっき私が出した手紙の返事」だけを特別に許可して通してくれるのです。これが「ステートフルな動作」の正体です。

—

ステートフル(状態保持)な動作のすごさ

ネットワークにおいて「ステートフル」という言葉は、「会話の内容(状態)を覚えている」という意味で使われます。

EIGWは、あなたが外へパケットを投げた瞬間、そのパケットの宛先や種類をこっそり手帳にメモします。

  • 「あ、サーバーAくんがGoogleのサーバーに話しかけたな」
  • 「じゃあ、Googleからの返事が来たら、特別に中へ通してあげよう」

このように、「自分から始めた通信の返信だけを通す」ことで、インターネット側から悪意ある攻撃者が勝手にあなたのサーバーのドアをノックすることを完全に遮断しているんです。賢いですよね!

—

AWSで設定する際の手順(Terraform風のイメージ)

では、実際にAWSでどう構築するのか、Terraformの設定を参考に見てみましょう。構築は驚くほどシンプルです。

# 1. EIGWを作成(これが「門番」の正体です)
resource "aws_egress_only_internet_gateway" "main_eigw" {
  vpc_id = aws_vpc.main.id
  
  # 管理用のタグを付けておきましょう
  tags = {
    Name = "my-private-egress-gateway"
  }
}

# 2. ルートテーブルに「外に行くときはここを通れ」と教える
resource "aws_route" "ipv6_egress_route" {
  route_table_id              = aws_route_table.private.id
  destination_ipv6_cidr_block = "::/0" # 全てのIPv6アドレス宛は…
  egress_only_gateway_id      = aws_egress_only_internet_gateway.main_eigw.id # EIGWへ転送!
}

この設定をした瞬間、あなたのプライベートサブネット内のサーバーは、インターネット上のあらゆるIPv6サーバーと通信できるようになります。でも、インターネット側からは、あなたのサーバーへの通信はタイムアウトして届きません。

—

トラブルシューティングのヒント

もし、「外と通信できない!」という事態になったら、以下の3つをチェックしてください。

1. ルートテーブルを確認:::/0 の宛先が正しくEIGWに向いていますか?
2. セキュリティグループ(SG)を確認:IPv6のインバウンドルールで、心当たりのない通信を許可していませんか?(EIGWがあっても、SGで許可していれば通信は届いてしまいます!)
3. ネットワークACLを確認:サブネットの境界線にあるACLで、戻りの通信(エフェメラルポート)がブロックされていないか確認しましょう。

—

まとめ:ネットワークは「見えないルール」の積み重ね

EIGWは、まさに「外への自由」と「内側の安全」を両立させるための現代的な解決策です。パケットが光の速さで駆け巡る裏側で、このゲートウェイがあなたの出したパケットを律儀に記録し、戻ってきた返事を見極めている姿を想像すると、ネットワークが少しだけ身近に感じられませんか?

インフラエンジニアへの道は、こうした「パケットの気持ち」を想像することから始まります。ぜひ、皆さんの環境でもこの「賢い門番」を使いこなしてみてくださいね!

それでは、次回の記事もお楽しみに。Happy Hacking!

コメント

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