このガイドでは、軽量コネクター cloudflared を使って、Google Cloud Project(GCP)の仮想マシンを Cloudflare に接続する方法を説明します。
次をデプロイします。
- 基本的な HTTP サーバーを実行する Google Cloud Project(GCP)の仮想マシン。
- 公開ホスト名またはプライベート IP アドレスでサービスに接続できるようにする Cloudflare Tunnel。
次の手順を完了するには、次が必要です。
- Cloudflare にウェブサイトを追加する
- エンドユーザーデバイスに Cloudflare One Client をデプロイする
-
Compute Engine > VM instances を開きます。
-
Create instance を選択します。
-
VM インスタンスに名前を付けます。この例では
http-test-serverとします。 -
希望するオペレーティングシステムとスペックを選びます。この例では、次の設定を使えます。
- Machine family: General Purpose
- Series: E2
- Machine type: e2-micro
- Boot disk image: Debian GNU/Linux 12
- Firewalls: Allow HTTP and HTTPS traffic
-
Advanced options > Management > Automation で、次のスタートアップスクリプトを追加します。この例では、ポート
80に基本的な Apache Web サーバーをデプロイします。#!/bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello Cloudflare!</h1> <p>This page was created for a Cloudflare demo.</p> </body></html> EOF -
Create を選択します。
-
オペレーティングシステムは Apache HTTP サーバーを自動で起動します。サーバーが動作していることを確認するには:
- VM インスタンスの External IP をコピーします。
- ブラウザーを開き、
http://<EXTERNAL IP>にアクセスします。Hello Cloudflare! のテストページが表示されます。
-
VM インスタンスにログインするには、SSH の横のドロップダウンを開き、Open in browser window を選びます。
Cloudflare Tunnel を作成し、GCP VM 上で実行します。
-
Cloudflare ダッシュボードにログインし、Networking > Tunnels を開きます。
Tunnels を開く ↗ -
Create a tunnel を選択します。
-
トンネル名を入力します(例:
gcp-tunnel)。 -
Create Tunnel を選択します。
-
OS を選びます(GCP VM では Debian を選択)。インストールコマンドをコピーし、GCP VM 上で実行します。
-
トンネルの接続を待ちます。接続できたら Continue を選択します。
公開アプリケーション を使うと、インターネット上の誰でも、仮想プライベートクラウド (VPC) 上でホストしている HTTP リソースに接続できます。Cloudflare Tunnel に公開アプリケーションを追加する手順は次のとおりです。
- Routes タブで Add route を選び、Published application を選択します。
- アプリケーションのホスト名を入力します(例:
hellocloudflare.<your-domain>.com)。 - Service に
http://localhost:80を入力します。 - Add route を選択します。
- 動作確認として、ブラウザーで
http://hellocloudflare.<your-domain>.comを開きます。Hello Cloudflare! のテストページが表示されます。
必要に応じて Access アプリケーションを作成 し、サービスへアクセスできるユーザーを制御できます。
プライベートネットワークルート を使うと、ユーザーは Cloudflare One Client 経由で VPC network に接続できます。Cloudflare Tunnel にプライベートネットワークルートを追加する手順です。
-
Cloudflare ダッシュボードで Networking > Routes を開きます。
Routes を開く ↗ -
Create route > Tunnel CIDR を選びます。作成したトンネルを選び、GCP VM の Private IP address を入力して(例:
10.0.0.4)、Create route を選びます。必要に応じて、あとから IP 範囲を広げられます。 -
Split Tunnel の設定 で、プライベート IP が Cloudflare One Client 経由でルーティングされていることを確認します。たとえば、Split Tunnels が Exclude モードの場合は、
10.0.0.0/8を削除します。GCP VM が明示的に使っていない IP は、リストへ戻すことを推奨します。戻す IP アドレスを決めるには、
10.0.0.0/8から GCP VM の IP を差し引きます。結果を Split Tunnel の Exclude モードのリストに戻します。
-
ユーザーデバイスでテストする手順です。
- Cloudflare One Client にログイン します。
- ターミナルを開き、プライベート IP でサービスに接続します。
curl 10.0.0.4<html><body><h1>Hello Cloudflare!</h1> <p>This page was created for a Cloudflare demo.</p> </body></html>
任意で Gateway のネットワークポリシーを作成 し、プライベート IP 経由で GCP VM にアクセスできるユーザーを制御できます。
VM インスタンスを保護するには、VPC ファイアウォールルールを設定 ↗ して、すべての受信トラフィックを拒否し、Cloudflare Tunnel の IP アドレス への送信トラフィックだけを許可できます。GCP は デフォルト ↗ で受信トラフィックを拒否するため、受信ルールをすべて削除し、必要な送信ルールだけを残すことができます。
VPC ファイアウォールルールを設定したあと、Cloudflare Tunnel 経由で 公開ホスト名 または プライベート IP からサービスにアクセスできることを確認します。Cloudflare Tunnel の外からはサービスにアクセスできなくなります。たとえば http://<EXTERNAL IP> を開いても、テストページは読み込まれなくなります。