プライベートサブネットの「匿名配送」?NATゲートウェイとSNATの仕組みを徹底解説!
こんにちは!クラウドの海を日々泳ぎ回っているSREです。
皆さんはAWSやGCPでインフラを触り始めたとき、「パブリックサブネット」と「プライベートサブネット」という境界線に頭を悩ませたことはありませんか?
「プライベートサブネットに置いたサーバーは、インターネットに直接出られないのになぜアップデートはできるの?」
「NATゲートウェイって何者?ただの通過点じゃないの?」
そんな疑問をお持ちの方へ。今回は、ネットワークの縁の下の力持ち「NATゲートウェイ」と、その裏で行われている「SNAT(Source NAT)」の秘密を、身近な例えを交えて紐解いていきましょう。一歩ずつ、丁寧に解説しますね。
—
1. 郵便配達で例える「SNAT」の世界
まず、なぜプライベートサブネットのサーバーが直接インターネットに出られないのかを考えてみましょう。
プライベートIPアドレス(10.0.x.x など)は、世界中で重複して使われている「内線番号」のようなものです。もし、この内線番号のままインターネットという広大な外の世界に手紙(パケット)を送ろうとするとどうなるでしょう?
返信が届こうとしても、世界中に同じ番号の建物がたくさんあるため、郵便屋さんは「どの10.0.0.5さんに届ければいいの?」と迷子になってしまいますよね。これでは通信が成立しません。
そこで登場するのがNATゲートウェイです。これは、いわば「会社専用の発送代行センター」です。
発送代行センター(NATゲートウェイ)の仕事
1. 中身を確認: プライベートな内線番号を持つサーバーから手紙が届きます。
2. 送り主を偽装(書き換え): 送り主の住所を「内線番号」から「会社の代表番号(パブリックIPアドレス)」に書き換えます。
3. リストを記録: 「さっきのパケットは内線5番のサーバーから預かったものだな」と、手元のメモ帳に書き留めます。
4. 発送: インターネットに向けて手紙を送り出します。
返信が届いたときも、代行センターがメモ帳を照らし合わせ、「これは内線5番宛てだ!」と正しく転送してくれます。これが SNAT(Source NAT:送信元アドレス変換)の正体です。
—
2. クラウドインフラにおけるSNATの挙動
クラウドの世界では、この仕組みがどのように動いているのか、具体的な設定の視点で見てみましょう。
なぜNATゲートウェイが必要なのか?
プライベートサブネットのインスタンスに 0.0.0.0/0(すべてのインターネット宛)のルートを向けても、ゲートウェイがなければパケットは捨てられます。そこで、ルートテーブルに「インターネットに出る用事があるならNATゲートウェイを通ってね」という道標を作ります。
# AWSのルーティングテーブル設定のイメージ
# 0.0.0.0/0 宛ての通信を NATゲートウェイ (nat-xxxxxxxx) に流す
ip route add default via 10.0.1.1 dev eth0
# 設定後、外の世界に届くか確認してみましょう
curl -v https://checkip.amazonaws.com
# 返ってくるIPアドレスは、サーバーのプライベートIPではなく
# NATゲートウェイに割り当てられたパブリックIPアドレスになります!
注意:SNATは「同時通話」の限界がある
NATゲートウェイを通る際、実は送信元ポート番号も変換されています。これを NAPT(IPマスカレード)と呼びます。一つのパブリックIPアドレスで同時にさばける通信量には限界(ポート番号の枯渇など)があるため、大規模なシステムでは複数のNATゲートウェイを配置したり、アーキテクチャを見直す必要があるのです。
—
3. トラブルシューティングの現場から
現場でよくあるのが、「NATゲートウェイを通しているのに通信できない!」というトラブルです。そんな時は、以下のポイントをチェックしてみてください。
- ルートテーブルは正しいか?
プライベートサブネットのルートテーブルに、宛先 0.0.0.0/0 がNATゲートウェイを向いているか確認しましょう。
- セキュリティグループとNACL:
NATゲートウェイを通過するパケットに対しても、セキュリティグループのルールは適用されます。特に「戻りのパケット(エフェメラルポート)」を許可する設定が漏れていないか注意が必要です。
- パブリックIPは枯渇していないか?
非常に高頻度で外部APIを叩くようなサーバー群の場合、NATゲートウェイが処理できる接続数を超えてしまうことがあります。
—
最後に:ネットワークは「見えない流れ」を想像すること
ネットワークのトラブルを解決するコツは、「パケットの気持ちになって、今どこを通って、誰に住所を書き換えられているか?」を想像することです。
NATゲートウェイは、プライベートな空間を守りつつ、世界と繋がるための大切な架け橋です。今日の解説で、少しでも「SNAT」という言葉が親しみやすく感じられたなら嬉しいです。
これからも、クラウドのインフラ技術を一緒に楽しく深掘りしていきましょう!次回の記事では、NATゲートウェイのコスト最適化術について触れる予定です。お楽しみに!
コメント