【入門編】 GCP InterconnectとCloud NATの統合によるハイブリッドクラウドネットワーキング – クラウド&コンテナネットワーク実践ガイド

ハイブリッドクラウドの「郵便局」:GCP InterconnectとCloud NATの連携を紐解く

みなさん、こんにちは!日夜クラウドの海を泳ぎ回っているSREです。

「ハイブリッドクラウド」という言葉を聞いて、どんなイメージを浮かべますか?オンプレミスのデータセンターと、キラキラしたクラウド(GCP)が専用線で繋がっている様子ですよね。でも、いざネットワークを組もうとすると、「オンプレのサーバーから外部のAPIを叩きたいんだけど、どうやって外に出るの?」「プライベートIPのままでインターネットに出ていいの?」といった疑問が次々と湧いてくるはずです。

今日は、そんな皆さんのために、GCPの「Cloud NAT」がオンプレミス環境の通信をどうやってインターネットまで送り届けているのか、身近な例えを交えてじっくり解説していきます。

—

そもそも、なぜ「NAT」が必要なの?

いきなりですが、インターネットの世界には「プライベートIPアドレス」と「パブリックIPアドレス」という二種類の住所があります。

  • プライベートIP: 社内や自宅の中だけで通じる「あだ名」みたいなもの。
  • パブリックIP: インターネットという広い世界で通用する「正式な郵便番号と住所」。

オンプレミスのサーバーが持つIPアドレスは、基本的にプライベートなもの。このまま「外部のAPIサーバー(郵便局)」に手紙を出しても、宛先不明で戻ってきてしまいます。そこで登場するのが「NAT(Network Address Translation:ネットワークアドレス変換)」という仕組みです。

これを郵便に例えるなら、「海外に荷物を送る際に、個人の名前ではなく、一度『国際配送センター』でまとめてから、センターの代表名義で発送してもらう」という流れです。この国際配送センターの役割をGCP上で担っているのが Cloud NAT なのです。

—

InterconnectとCloud NATが織りなす「魔法のルート」

GCPの Cloud Interconnect を使っていると、オンプレミスとGCPはまるで同じ敷地内にあるかのように通信できます。しかし、オンプレミスから「インターネット上の外部API」へアクセスする場合、パケットは次のような旅をします。

1. 出発: オンプレのサーバーがパケットを出す。
2. 橋渡し: Cloud Interconnect を通り、GCPのネットワーク(VPC)に到着。
3. 変換(ここが肝!): GCP上の Cloud NAT がパケットをキャッチ。「君の住所はプライベートだから、僕のパブリックIPに書き換えてあげるよ」とスタンプを押す。
4. 到着: インターネット上のAPIサーバーへ。
5. 帰宅: 戻ってきたパケットも、Cloud NAT が元の宛先(オンプレのサーバー)を覚えていて、正しく転送する。

この仕組みがあるおかげで、オンプレミスのサーバーにわざわざ高いパブリックIPを割り当てたり、複雑なファイアウォール設定をしたりする必要がなくなるんです。

—

実践:Cloud NATを構築してみよう

では、実際にGCP上でどのように設定するか、Terraformコードを例に見ていきましょう。難しく考えず、「郵便局の窓口を作る」イメージです。

# Cloud Routerの設定(郵便局の支店長のような存在)
resource "google_compute_router" "router" {
  name    = "hybrid-nat-router"
  network = "your-vpc-network" # あなたのVPCネットワーク名
  region  = "asia-northeast1"
}

# Cloud NATの設定(ここで変換ルールを定義します)
resource "google_compute_router_nat" "nat" {
  name                               = "my-cloud-nat"
  router                             = google_compute_router.router.name
  region                             = google_compute_router.router.region
  nat_ip_allocate_option             = "AUTO_ONLY" # 自動でパブリックIPを割り当てる
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES" # 全ての通信を対象にする

  # ログ設定を有効にすると、後でトラブルシューティングが楽になります
  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}

ここがポイント!

  • nat_ip_allocate_option = "AUTO_ONLY": これを設定しておけば、GCP側が勝手にパブリックIPを確保してくれます。
  • source_subnetwork_ip_ranges_to_nat: ここを ALL_SUBNETWORKS_ALL_IP_RANGES にすることで、オンプレミスからの通信もこのNATの恩恵を受けることができます。

—

運用時の落とし穴(トラブルシューティング)

現場でよくあるミスが「オンプレからの通信がNATを通らない」というケースです。

  • ルート情報の確認: オンプレ側から見て、インターネット宛の通信が本当に Interconnect 経由でGCPのVPCに向かっているか確認してください。
  • タグとファイアウォール: NATが正しく動いていても、GCPのファイアウォールルールで「オンプレからの通信を許可する」設定が漏れていると、パケットはそこで門前払いされてしまいます。

困ったときは、gcloud コマンドでNATのステータスを覗いてみるのが一番です。

# NATの動作状況を確認するコマンド
gcloud compute routers get-nat-mapping-info [ROUTER_NAME] \
    --region=asia-northeast1

このコマンドを打つと、どのプライベートIPがどのパブリックIPに変換されているか、リアルタイムの状況が見えてきます。まるで郵便局の仕分け棚を覗き込むような気分になれますよ!

—

最後に:一歩ずつ進めば怖くない

いかがでしたか?「NAT」と聞くと難しく感じますが、要は「プライベートな住所をパブリックな住所に書き換えて橋渡しする郵便局」のこと。

ハイブリッドクラウドは、最初は複雑に見えても、今回のように「パケットの流れ」を追いかけていくと、必ずどこかで「ああ、なるほど!」と繋がる瞬間が来ます。まずは小さな検証環境でNATを構築し、オンプレのPCから curl で外部サイトにアクセスできるか試してみてください。

その「成功した!」という体験が、皆さんのエンジニアとしての大きな自信になるはずです。それでは、良きクラウドライフを!

コメント

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