このガイドでは、軽量コネクター cloudflared を使って Azure Virtual Machine を Cloudflare に接続する方法を説明します。
デプロイするものは次のとおりです。
- 基本的な HTTP サーバーを動かす Azure VM。
- 公開ホスト名またはプライベート IP アドレス経由でサービスへ接続できる Cloudflare Tunnel。
次の手順を完了するには、次が必要です。
- Web サイトを Cloudflare に追加する
- エンドユーザーデバイスに Cloudflare One Client をデプロイする
-
Azure ポータルで Virtual Machines > Create > Azure virtual machine を開きます。
-
Resource group を選ぶか、新しく作成します。
-
VM の名前を入力し、リージョンを選びます。Image は Ubuntu Server 24.04 LTS を選びます。Size は適切なサイズ(例: Standard_B1s)を選びます。
-
Administrator account で SSH public key を選び、キーペアを入力します。
-
Inbound port rules で SSH(
22)を許可します。テスト目的では、HTTP(80)と HTTPS(443)も許可します。
-
Review + create を選択し、Create を選択します。
-
VM が起動したら、概要ページから Public IP address をコピーします。Private IP address も控えてください。Azure はデフォルトで
10.0.0.0/8サブネットを使います。 -
インスタンスに SSH します。
ssh -i "your-key.pem" azureuser@<PUBLIC_IP> -
sudo suを実行し、VM の管理者権限を取得します。 -
テスト目的では、ポート
80で基本的な Apache Web サーバーをデプロイできます。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 -
Apache サーバーが動いていることを確認するには、ブラウザーで
http://<PUBLIC_IP>を開きます(httpsではなくhttpで接続してください)。Hello Cloudflare! のテストページが表示されます。
Cloudflare Tunnel を作成し、Azure VM 上で実行します。
-
Cloudflare ダッシュボードにログインし、Networking > Tunnels を開きます。
Tunnels を開く ↗ -
Create a tunnel を選択します。
-
トンネル名を入力します(例:
azure-tunnel)。 -
Create Tunnel を選択します。
-
OS を選びます(Azure VM では Debian を選択)。インストールコマンドをコピーし、Azure 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 経由で Azure Virtual Network (VNet) に接続できます。Cloudflare Tunnel にプライベートネットワークルートを追加する手順です。
-
Cloudflare ダッシュボードで Networking > Routes を開きます。
Routes を開く ↗ -
Create route > Tunnel CIDR を選びます。作成したトンネルを選び、Azure 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を削除します。Azure VM が明示的に使っていない IP は、リストへ戻すことを推奨します。戻す IP アドレスを決めるには、
10.0.0.0/8から Azure 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 経由で Azure VM にアクセスできるユーザーを制御できます。
Azure VM を保護するには、Network Security Group (NSG) ↗ ですべての受信トラフィックを拒否し、Cloudflare Tunnel の IP アドレス への送信トラフィックだけを許可できます。NSG ルールは優先度で評価され、許可ルールに一致しないトラフィックはデフォルトの拒否ルールでブロックされます。そのため、カスタムの受信ルールはすべて削除し、必要な送信ルールだけを残せます。
NSG ルールを設定したあと、Cloudflare Tunnel 経由で 公開ホスト名 または プライベート IP からサービスにアクセスできることを確認します。Cloudflare Tunnel の外からはサービスにアクセスできなくなります。たとえば、VM のパブリック IP への直接アクセスは動作しません。