「プライベートVMからインターネット接続できない?」を解決!Google Cloud NAT設定ガイド


この記事では、Google Cloudのネットワーク構築に不可欠なVPCやサブネットといった基本要素を解説します。クラウドインフラの基礎概念から、コマンドを使った実践的な構築・確認方法までを網羅し、ネットワーク設計の第一歩をサポートします。

はじめに

前回の記事では、VPC内にプライベートIPアドレスのみを持つVMインスタンスを構築し、外部から隔離されたセキュアなネットワーク環境を作成しました。しかし、実際の運用では、OSのアップデートや外部APIへのアクセスなど、これらのプライベートなVMがインターネットへ接続する必要がある場面が出てきます。

「VM一台一台に外部IPアドレスを付与すると、セキュリティ管理が煩雑になる…」
「コストを抑えつつ、必要な時だけ安全に外部へ通信させたい…」

このような課題を解決するのが、今回ご紹介する Cloud NAT (Network Address Translation) です。この記事では、Cloud NATの基本的な仕組みから、実際の構築手順、そして動作確認までを分かりやすく解説していきます。

Google Cloud NAT 徹底解説

2.1 Cloud NATとは?

Cloud NATは、パブリックIPアドレスを持たないVMインスタンスなどのリソースに、安全なアウトバウンド(内から外への)インターネット接続を提供する、フルマネージドのGoogle Cloud Platform サービスです。VMインスタンス自体はプライベートな状態を保ったまま、外部への通信が可能になります。

2.1.1 主なユースケース

  • プライベートVMのインターネットアクセス:ソフトウェアの更新パッケージ取得や、外部サービスのAPI利用など、外部に公開されていないVMがインターネットにアクセスする必要がある場合に利用します。
  • セキュリティの向上:VMへの直接のインバウンド(外から内への)アクセス経路をなくし、攻撃対象領域を削減することで、よりセキュアなネットワーク環境を構築します。
  • IPアドレスリソースの最適化: 限りあるパブリックIPアドレスを節約し、コストの削減に貢献します。

2.1.2 Cloud NATの利点

  • フルマネージドで高い可用性: Cloud NATはGoogle Cloud Platform によって管理されるため、冗長性やスケーラビリティをユーザーが意識する必要はありません。トラフィックの増減に応じて自動的にスケールします。
  • シンプルな管理:一度設定すれば、VPC内の対象インスタンスからの通信は自動的にNAT処理されます。インスタンスごとのIPアドレス管理が不要になり、運用が大幅に簡素化されます。

2.2 Cloud NATの仕組み

Cloud NATは、Cloud Router と連携して動作します。プライベートVMからのアウトバウンドトラフィックは、まずVPCのルーティングに従いCloud Routerに向けられます。その後、Cloud NATゲートウェイがトラフィックの送信元IPアドレスを、プライベートIPアドレスからパブリックIPアドレスに変換(変換)し、インターネットへ送り出します。

重要な点として、Cloud NATはアウトバウンド通信とその戻りの通信のみを許可します。インターネット側から新規に開始されるインバウンド通信はデフォルトでブロックされるため、意図しない外部からのアクセスを防ぐことができます

2.3 設計・運用のベストプラクティス

ファイアウォールルールとの併用: Cloud NATはインバウンド通信をブロックしますが、よりきめ細やかな制御のために、VPCファイアウォールルールと組み合わせてアウトバウンド通信を必要最小限に制限することを推奨します。

十分なIPアドレスの確保: Cloud NATが使用するパブリックIPアドレスは、手動で静的に割り当てるか、自動割り当てを選択できます。多くのVMが同時に多数の宛先へ接続する場合、ポート不足を避けるために十分な数のIPアドレスを確保することが重要です。

トラフィックの監視: Cloud Monitoring を活用して、NATゲートウェイを通過するトラフィック量やポートの使用状況を監視し、パフォーマンスのボトルネックや異常がないかを定期的にチェックします。

実践!Cloud NATの設定手順

3.1 ネットワーク構成

前回の記事で作成したVPC環境の東京リージョン (asia-northeast1) に、Cloud NATと、その前提となるCloud Routerを追加で作成します。これにより、東京リージョンのサブネットに属するVMインスタンスがインターネットへ接続できるようになります。

3.2 Cloud RouterとCloud NATの作成

gcloudコマンドを使い、Cloud RouterとCloud NATを東京リージョンに作成します。

  1. Cloud Routerの作成 (Cloud NATの前提コンポーネント)
  2. gcloud compute routers create nat-router-asia-northeast1
  3. --network=labvpc
  4. --region=asia-northeast1
  5. Cloud NATゲートウェイの作成
  6. gcloud compute routers nats create nat-config-asia-northeast1
  7. --router=nat-router-asia-northeast1
  8. --auto-allocate-nat-external-ips
  9. --nat-all-subnet-ip-ranges
  10. --region=asia-northeast1

--auto-allocate-nat-external-ips: NATに使用するパブリックIPアドレスを自動で割り当てます。

--nat-all-subnet-ip-ranges: このリージョン内のすべてのサブネットからのトラフィックをNATの対象とします。

3.3 動作確認

設定が完了したら、東京リージョンに配置したプライベートVM vm-tokyo-02 にSSHで接続し、インターネットへの疎通を確認します。pingコマンドで外部のドメインにアクセスしてみましょう。

  1. [hisato@vm-tokyo-02 ~]$ ping -c 3 www.yahoo.co.jp
  2. PING edge12.g.yimg.jp (183.79.250.251) 56(84) bytes of data.
  3. 64 bytes from 183.79.250.251 (183.79.250.251): icmp_seq=1 ttl=62 time=14.1 ms
  4. 64 bytes from 183.79.250.251 (183.79.250.251): icmp_seq=2 ttl=62 time=8.32 ms
  5. 64 bytes from 183.79.250.251 (183.79.250.251): icmp_seq=3 ttl=62 time=8.50 ms
  6. --- edge12.g.yimg.jp ping statistics ---
  7. 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
  8. rtt min/avg/max/mdev = 8.317/10.312/14.120/2.693 ms
  9. [hisato@vm-tokyo-02 ~]$

上記のように、パブリックIPアドレスを持たないVMからでも、正常に応答が返ってくることが確認できました。これにより、セキュアな状態を維持したまま外部への通信が可能になったことが分かります。

まとめ

本記事では、Cloud NATを利用して、プライベートなVPC環境から安全にインターネットへ接続する方法を解説しました。Cloud NATは、VMインスタンスに直接パブリックIPアドレスを割り当てることなく、必要なアウトバウンド通信のみを許可するための、シンプルかつ強力なソリューションです。

フルマネージドでスケーラブルなため、インフラの運用負荷を軽減しつつ、ネットワーク全体のセキュリティを向上させることができます。

富士ソフトでは、お客様のセキュリティ要件やユースケースに応じた、最適なGoogle Cloud Platform ネットワークの設計・構築をご支援しています。クラウドのネットワークセキュリティに関するご相談や、既存環境からの移行など、お困りの際はぜひお気軽にご相談ください。