【ITニュース解説】Part-60: Google Cloud Networking – Cloud NAT Gateway with Internal-Only VM
2025年09月16日に「Dev.to」が公開したITニュース「Part-60: Google Cloud Networking – Cloud NAT Gateway with Internal-Only VM」について初心者にもわかりやすく解説しています。
ITニュース概要
Google Cloudで、外部IPを持たないVMがインターネットに安全にアクセスする方法を紹介する。Cloud NAT Gatewayを使えば、VMのプライベート性を保ちながら、パッケージ更新やAPI接続など必要な外部通信が可能になる。
ITニュース解説
この記事は、Google Cloud Platform(GCP)において、外部IPアドレスを持たない仮想マシン(VM)が、セキュリティを維持しつつインターネットへアクセスできるようにする「Cloud NAT Gateway」の設定方法を解説している。システムエンジニアを目指す上で、このようなネットワーク設定の知識は、クラウド環境で安全かつ効率的なシステムを構築するために非常に重要となる。
まず、この設定が必要な理由を説明する。企業やアプリケーションによっては、VMがインターネットから直接アクセスされることを避けたい場合が多い。例えば、データベースサーバーや内部処理を行うアプリケーションサーバーなど、外部からの直接的な通信を遮断することでセキュリティリスクを低減できる。しかし、これらのVMも、ソフトウェアのアップデートや必要なパッケージのインストール、外部APIとの連携のためにインターネットへのアクセスが必要となる場合がある。VMに外部IPアドレスを直接割り当てると、セキュリティリスクが増す一方で、インターネットにアクセスできないと機能が制限されるというジレンマが生じる。この問題を解決するのが、Cloud NAT Gatewayだ。Cloud NAT Gatewayを利用することで、VM自体は外部IPアドレスを持たずにプライベートなネットワーク内に留まりながら、必要なときにだけインターネットへ安全に通信できるようになる。
この記事では、以下のステップで設定を進めていく。 最初に、外部IPアドレスを持たないVMインスタンスを作成し、そのVMがインターネットにアクセスできないことを確認する。次に、Cloud RouterとCloud NAT GatewayというGCPのネットワークサービスを設定する。そして、Cloud NAT Gatewayを経由してVMがインターネットへアクセスできるようになったことを検証する。最後に、作成したリソースを適切にクリーンアップする方法も紹介されている。
具体的な手順を見ていこう。
最初のステップは、外部IPアドレスを持たないVMインスタンスの作成だ。これはgcloudコマンドというGoogle Cloudのコマンドラインツールを使って行う。gcloud compute instances createコマンドでVMの名前、存在するゾーン(地域内のデータセンター)、使用するマシンの種類を指定する。特に重要なのは--network-interface=subnet=mysubnet1,no-addressというオプションで、このno-addressがVMに外部IPアドレスを割り当てないことを明確に指示している。これにより、VMはプライベートなネットワークアドレスのみを持ち、インターネットから直接到達できない状態となる。VMの作成後、gcloud compute sshコマンドを使ってVMに接続する。外部IPがないVMへのSSH接続は、GCPが提供するIAP(Identity-Aware Proxy)というセキュアな経路を通じて行われる。VMに接続したら、ping stacksimplify.comやping google.com、sudo apt install -y telnetといったコマンドを実行して、インターネットへのアクセスができないことを確認する。これらのコマンドが失敗することは、外部IPがないためにVMがインターネットと通信できない現在の状態を示している。
次に、Cloud Routerの作成に移る。Cloud Routerは、Cloud NAT Gatewayがネットワーク内で適切にルーティング(通信経路の決定)を行うために必要な基盤となるコンポーネントだ。GCPの管理コンソールから「ネットワーク接続」内の「Cloud Routers」を選択し、「ルーターを作成」をクリックする。ここでルーターに名前を付け、関連付けるVPCネットワーク、そしてVMが存在するリージョンを指定する。ルーティングに関するその他の設定は、通常デフォルトのままで問題ない。このCloud Routerは、NATゲートウェイが外部へ通信する際の出口の役割を担うことになる。
そして、本題であるCloud NAT Gatewayの作成だ。「ネットワークサービス」内の「Cloud NAT」から設定を開始する。ゲートウェイに分かりやすい名前を付け、「NATタイプ」を「Public」に設定する。これは、VMからの通信がインターネットに出ていく際に、公開されたIPアドレスを使用するという意味だ。先ほど作成したCloud Routerを選択し、VMと同じリージョンを指定する。 さらに、「Cloud NATマッピング」というセクションで、「送信元エンドポイントのタイプ」を「VMインスタンス」、「ソース」を「すべてのサブネットのプライマリおよびセカンダリ範囲」と設定する。これは、指定したVPCネットワーク内の、特に外部IPを持たないすべてのVMがこのNATゲートウェイを利用できるようにするための設定だ。「Cloud NAT IPアドレス」は「自動」を選択する。これにより、GCPが自動的に外部IPアドレスをNATゲートウェイに割り当て、VMからの通信をそのIPアドレスに変換してインターネットへ送出するようになる。このプロセスは「ネットワークアドレス変換(NAT)」と呼ばれ、VMのプライベートIPアドレスをNATゲートウェイのパブリックIPアドレスに「変換(マッピング)」することで、VMはインターネットと通信できるようになる。同時に、インターネットからの直接的な接続はNATゲートウェイで遮断されるため、VMのセキュリティは保たれる。
Cloud NAT Gatewayの作成が完了したら、再びVMに接続し、インターネットへのアクセスが実際に可能になったかを確認する。Cloud NATの設定が反映されるまでに数分程度の時間がかかる場合があるため、少し待ってから確認すると良いだろう。ping google.comやsudo apt install -y apache2などのコマンドを再び実行する。今度はこれらのコマンドが成功するはずだ。これにより、VMがインターネットから必要なパッケージをダウンロードしたり、外部のウェブサイトにアクセスしたりできるようになったことが確認できる。この時点で重要なのは、VM自体に外部IPアドレスが割り当てられたわけではなく、Cloud NAT GatewayがVMの代理としてインターネットと通信しているという点だ。NATゲートウェイが使用している具体的な外部IPアドレスは、GCPの「VPCネットワーク」→「IPアドレス」のセクションで確認できる。
最後に、不要になったリソースを削除する「クリーンアップ」の手順も示されている。gcloud compute instances deleteコマンドでVMを削除し、Cloud NAT GatewayとCloud RouterもGCPコンソールから削除する。クラウドのリソースは利用している間はコストが発生するため、学習目的で作成したリソースは、作業が完了したら忘れずに削除することが推奨される。
この一連の作業を通じて、外部IPアドレスを持たないVMがCloud NAT Gatewayを利用してインターネットと安全に通信できる仕組みを具体的に学ぶことができる。これは、VMのセキュリティを確保しつつ、必要なインターネットアクセスを提供するための基本的ながら非常に効果的な手法であり、クラウド環境でシステムを設計・運用する上で不可欠な重要な知識となる。VMをプライベートに保ちながらも機能性を確保できるこのアプローチは、セキュリティと利便性のバランスを取る上で極めて重要だ。