Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cloudflare Tunnel で接続する

最終更新 Markdown で表示Agent セットアップ

Cloudflare Tunnel は、ほぼ任意のホストマシンで動作する、送信専用のデーモンサービスです。Cloudflare ネットワークからの検証後に、ローカルトラフィックをプロキシします。Cloudflare One Client から始まったユーザートラフィックは Cloudflare にオンランプし、Cloudflare Tunnel 接続を下り、ローカルネットワークで自動的に終端します。内部アプリケーションやサービスに届くトラフィックの送信元 IP は、cloudflared デーモンを実行しているホストマシンのローカル送信元 IP になります。

トンネルを作成する

プライベートネットワークを接続する手順です。

  1. Cloudflare ダッシュボードにログインし、Networking > Tunnels を開きます。

    Tunnels を開く ↗
  2. Create a tunnel を選択します。

  3. トンネルの名前を入力します。このトンネル経由で接続するリソースの種類がわかる名前(例: enterprise-VPC-01)を推奨します。

  4. Create Tunnel を選択します。

  5. オペレーティングシステムを選び、インストールコマンドをコピーして、オリジンサーバーのターミナルで実行します。

  6. トンネルの接続を待ちます。接続が確立したら Continue を選択します。

  1. CIDR タブで、プライベートネットワークの CIDR(例: 10.0.0.0/8)を入力します。

  2. Save tunnel を選択します。

  1. cloudflare_api_token に次の権限を追加します。

    • Cloudflare Tunnel Write
  2. cloudflare_zero_trust_tunnel_cloudflare リソースでトンネルを作成します。

    resource "cloudflare_zero_trust_tunnel_cloudflared" "example_tunnel" {
    	account_id = var.cloudflare_account_id
    	name       = "Example tunnel"
    	config_src = "cloudflare"
    }
  3. cloudflare_zero_trust_tunnel_cloudflared_route リソースで、プライベートネットワークの CIDR をトンネル経由でルーティングします。

    resource "cloudflare_zero_trust_tunnel_cloudflared_route" "example_tunnel_route" {
    	account_id         = var.cloudflare_account_id
    	tunnel_id          = cloudflare_zero_trust_tunnel_cloudflared.example_tunnel.id
    	network            = "10.0.0.0/8"
    	comment            = "Example tunnel route"
    }
  4. トンネルの実行に使う トークン を取得します。

    data "cloudflare_zero_trust_tunnel_cloudflared_token" "tunnel_token" {
    	account_id = var.cloudflare_account_id
    	tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.example_tunnel.id
    }

    ホストマシンを Terraform で管理していない場合、またはトンネルを手動でインストールする場合は、トークン値を CLI に出力できます。

    例: CLI に出力する

    1. トンネルトークンを Terraform の state ファイルに出力します。
      output "tunnel_token" {
      	value       = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token
      	sensitive   = true
      }
    2. 構成を適用します。
      terraform apply
    3. トンネルトークンを読み取ります。
      terraform output -raw tunnel_token
      eyJhIj...

    または、data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token をホストの Terraform 構成に直接渡すか、シークレット管理ツールにトークンを保存します。

    例: HashiCorp Vault に保存する

    resource "vault_generic_secret" "tunnel_token" {
    	path         = "kv/cloudflare/tunnel_token"
    
    	data_json = jsonencode({
    		"TUNNEL_TOKEN" = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token
    	})
    }
  5. プライベートネットワーク内のホストマシンに cloudflared をインストールし、トンネルを実行します。

    1. cloudflaredダウンロードしてインストール します。

    2. 次のコマンドを実行します。

      sudo cloudflared service install <TUNNEL_TOKEN>
    1. cloudflaredダウンロードしてインストール します。

    2. 管理者としてコマンドプロンプトを開きます。

    3. 次のコマンドを実行します。

      cloudflared.exe service install <TUNNEL_TOKEN>
    1. cloudflaredダウンロードしてインストール します。

    2. ターミナルを開き、次のコマンドを実行します。

      sudo cloudflared service install <TUNNEL_TOKEN>
    1. ターミナルを開きます。

    2. 次のコマンドを実行します。

      docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TUNNEL_TOKEN>

この IP 範囲の内部アプリケーションとサービスはすべて、Cloudflare に接続されます。

ベストプラクティス

  • 本番トラフィックとステージングトラフィックは、別の Cloudflare Tunnel に分けます。
  • 可用性を増やすため、別のホストマシンに cloudflared レプリカ を追加します。
  • プライベート DNS、Active Directory、その他の重要システムなど、重要なサービスへのアクセスは、サーバー側障害時の影響範囲を狭めるため、異なるトンネルに分散します。
  • Cloudflare ダッシュボードで 通知を有効 にし、トンネルの健全性を監視します。
  • パフォーマンス指標を監視 し、ボトルネックの兆候を把握します。
  • cloudflared を定期的に更新 します。

役に立ちましたか?