合法的でプライバシー重視の公開

Cloudflare TunnelとVPNで自宅から匿名ウェブサイトをホストする

本ガイドはCloudflare Tunnel経由でローカルサイトを公開し、必要に応じてcloudflaredをVPN経由にして自宅IPを隠す方法を解説します。

プライバシーの境界が重要です。訪問者は住宅用IPを知る必要はありませんが、Cloudflareはアカウントを把握し、VPNプロバイダーはCloudflareへの接続を知っています。

本記事は合法的なプライバシー保護のみを対象としています。

これは正当なセルフホスティング、テスト、公開、研究向けで、不正行為やマルウェア、フィッシング、嫌がらせなど違法行為はサポートしません。

この設定が実際に守るもの

実際の目的はすべてのプロバイダーから消えることではなく、一般の訪問者やスキャナー、通常のDNS検索から住宅用IPやルーターへの直接アクセスを防ぐことです。

訪問者から住宅用IPを隠す

DNSは自宅のIPではなくCloudflareを指すため、簡単な検索でホスティング場所が分かりません。

ルーターは閉じたままにする

名前付きトンネルはアウトバウンドのみのため、ウェブサイト自体に対するポート開放は不要です。

直接オリジンの露出を制限する

サイトはlocalhostや他のプライベートインターフェースに置いたまま、Cloudflareが公開アクセスを処理します。

現実的な脅威モデルを維持する

これは訪問者からのプライバシーであり、CloudflareやVPNプロバイダー、自身のアカウント履歴からの匿名性ではありません。

誰がまだあなたを特定できるか

匿名ホームホスティングを考える最も明確な方法は、閲覧者を分けてそれぞれに異なる情報を伝えることです。

訪問者

  • 公開ホスト名、TLS情報、意図的に公開したコンテンツ、ヘッダー、解析情報、クッキーを確認できます。
  • DNSがトンネルのみを指す場合、通常はCloudflareのエッジIPが見え、自宅IPは見えません。
  • 同じ端末やブラウザプロファイルで管理画面にログインすると、管理者ブラウザの指紋が特定される可能性があります。

Cloudflare

  • Cloudflareはアカウント、ゾーン、トンネルUUID、設定されたホスト名、トンネルの状態を把握しています。
  • Cloudflareはcloudflaredが接続に使う送信元IPも見ており、それは自宅のIPかVPNの出口IPです。
  • VPNはCloudflareから住宅用IPを隠せますが、Cloudflareアカウントとの関連は消せません。

VPNプロバイダー

  • VPNプロバイダーはあなたの端末がCloudflareへの暗号化通信を維持していることを知っています。
  • VPNが通常のメールや支払い情報に紐づく場合、その関係はトンネル外でも残ります。
  • VPNはCloudflareに見える送信元IPを変えますが、VPNプロバイダーへの信頼は消えません。

あなたの広範な身元の痕跡

  • ドメイン登録情報、回復用メール、支払い情報、使い回しのユーザー名であなたに結びつく可能性があります。
  • 個人のブラウザプロファイルで管理画面にログインすると、サイトと日常の身元が結びつく可能性があります。
  • 実際の匿名性はトンネルだけでなく運用の厳格さにも依存します。

通信経路の仕組み

シンプルな経路:公開側はCloudflareで終了し、プライベート側はcloudflaredだけがアクセスできるローカルサービスです。

01 訪問者

ホスト名をリクエストし、Cloudflareのエッジネットワークに到達します。

02 Cloudflare

HTTPSを終了し、ルールを適用してリクエストを名前付きトンネルに転送

03 cloudflared.exe

WindowsマシンからCloudflareへのアウトバウンドのみのトンネル接続を維持します。

04 ローカルウェブサイト

localhostや他のプライベートオリジンで応答し、直接インターネットに公開されません。

VPNの配置場所

cloudflaredがVPNを先に使うと、Cloudflareは住宅IPではなくVPN出口IPを接続元として認識します。キルスイッチなしでVPNが切れると、cloudflaredは通常のISP経路で再接続します。

Windowsでのcloudflared.exeの役割

cloudflared.exeはVPNや匿名ネットワークではなく、トンネルを認証し長時間のアウトバウンド接続を維持し、公開ホスト名をローカルサービスにマッピングするCloudflareのコネクタです。

名前付きトンネルを作成し認証します

一度ログインして名前付きトンネルを作成し、使い捨てリンクではなく安定したホスト名を再利用できます。

冗長なアウトバウンド接続を維持

Cloudflareは各トンネルが複数の長時間接続を維持し、経路の冗長性を確保すると説明しています。

ホスト名をプライベートサービスにマッピング

設定ファイルで app.example.com を http://localhost:3000 に送信し、localhost を公開オリジンにしない方法。

対話モードまたはWindowsサービスとして実行

まずターミナルでトンネルをテストし、後で常時稼働のWindowsサービスに変換できます。

ウェブサイト以外も対応

Cloudflare TunnelはHTTP、HTTPS、TCP、SSH、RDPなどのプライベートサービスを公開可能ですが、本ガイドはウェブサイトに限定しています。

Windows設定:cloudflared.exeの手順

この手順はローカルでサイトが動作し、ドメインがCloudflare DNSを使っていることを前提としています。例はapp.example.comとポート3000のローカルサービスです。

以下のすべてのコマンドはPowerShell 7で実行し、コピー前にサンプルのホスト名、トンネル名、ローカルサービスを置き換えてください。

01

ステップ1:再利用する値を定義

PowerShell 7で開始し、サンプルのホスト名、トンネル名、ローカルサービスを自分の値に置き換えてから続行してください。

CLIPowerShell 7
$TunnelName = "ghostly-home-site"
$PublicHostname = "app.example.com"
$LocalService = "http://localhost:3000"
$CloudflaredHome = "C:\Cloudflared\bin"
$ConfigPath = "$env:USERPROFILE\.cloudflared\config.yml"
02

ステップ2:cloudflared.exeを準備

ダウンロードしたバイナリの名前を変更し、専用フォルダを作成して実行ファイルをコピーします。

CLIPowerShell 7
Rename-Item "$env:USERPROFILE\Downloads\cloudflared-windows-amd64.exe" "cloudflared.exe"
New-Item -ItemType Directory -Force $CloudflaredHome
Copy-Item "$env:USERPROFILE\Downloads\cloudflared.exe" "$CloudflaredHome\cloudflared.exe"
03

ステップ3:作業フォルダに移動しバイナリを確認

フォルダに移動し、認証前にcloudflared.exeが正常に起動するか確認してください。

CLIPowerShell 7
Set-Location $CloudflaredHome
.\cloudflared.exe --version
04

ステップ4:ログインしてCloudflareゾーンを認可

ブラウザが開きゾーンの承認を行います。アカウント証明書はデフォルトの.cloudflaredディレクトリに書き込まれます。

CLIPowerShell 7
.\cloudflared.exe tunnel login
05

ステップ5:名前付きトンネルを作成しUUIDを保存

トンネルを作成し、コマンド出力のUUIDを下の変数に貼り付けて次のコマンドで再利用します。

CLIPowerShell 7
.\cloudflared.exe tunnel create $TunnelName
$TunnelId = "<paste-the-tunnel-uuid-from-the-create-output>"
06

ステップ6:config.ymlを一行ずつ記述

これらのコマンドはWindowsプロファイル内にローカルのconfig.ymlを作成し、トンネルがどの公開ホスト名をどのローカルサービスに転送するかを指定します。

CLIPowerShell 7
Set-Content $ConfigPath "tunnel: $TunnelId"
Add-Content $ConfigPath "credentials-file: $env:USERPROFILE\.cloudflared\$TunnelId.json"
Add-Content $ConfigPath ""
Add-Content $ConfigPath "ingress:"
Add-Content $ConfigPath "  - hostname: $PublicHostname"
Add-Content $ConfigPath "    service: $LocalService"
Add-Content $ConfigPath "  - service: http_status:404"
07

ステップ7:設定を確認し検証

ファイルを一度印刷して確認し、DNS公開前にcloudflaredでingressルールを検証します。

CLIPowerShell 7
Get-Content $ConfigPath
.\cloudflared.exe tunnel ingress validate
08

ステップ8:DNSルートを作成しトンネルを確認

ライブトラフィックを開始する前に、どのホスト名が名前付きトンネルを指すかをCloudflareに伝えます。

CLIPowerShell 7
.\cloudflared.exe tunnel route dns $TunnelName $PublicHostname
.\cloudflared.exe tunnel info $TunnelName
09

ステップ9:トンネルをフォアグラウンドで実行

別ネットワークからサイトをテストする間、このPowerShell 7ウィンドウを開いたままにしてください。終了時はCtrl+Cで停止します。

CLIPowerShell 7
.\cloudflared.exe tunnel run $TunnelName
任意:トンネルをWindowsサービスに変換

対話型トンネルが動作した後にのみ実行してください。サービスはシステムプロファイルとレジストリを使うため、管理者権限のPowerShell 7で以下のコマンドを実行します。

01

サービス手順1:Windowsサービスシェルをインストール

この任意の手順には管理者権限のPowerShell 7を開き、まずCloudflaredサービスをインストールします。

CLIPowerShell 7 (Admin)
Set-Location $CloudflaredHome
.\cloudflared.exe service install
02

サービス手順2:cert.pem、認証情報、設定をシステムプロファイルにコピー

Windowsサービスはシステムプロファイルで動作するため、証明書、トンネル認証情報、config.ymlを含む専用の.cloudflaredフォルダが必要です。

CLIPowerShell 7 (Admin)
$SystemCloudflaredHome = "C:\Windows\System32\config\systemprofile\.cloudflared"
New-Item -ItemType Directory -Force $SystemCloudflaredHome
Copy-Item "$env:USERPROFILE\.cloudflared\cert.pem" "$SystemCloudflaredHome\cert.pem"
Copy-Item "$env:USERPROFILE\.cloudflared\$TunnelId.json" "$SystemCloudflaredHome\$TunnelId.json"
Set-Content "$SystemCloudflaredHome\config.yml" "tunnel: $TunnelId"
Add-Content "$SystemCloudflaredHome\config.yml" "credentials-file: $SystemCloudflaredHome\$TunnelId.json"
Add-Content "$SystemCloudflaredHome\config.yml" ""
Add-Content "$SystemCloudflaredHome\config.yml" "ingress:"
Add-Content "$SystemCloudflaredHome\config.yml" "  - hostname: $PublicHostname"
Add-Content "$SystemCloudflaredHome\config.yml" "    service: $LocalService"
Add-Content "$SystemCloudflaredHome\config.yml" "  - service: http_status:404"
03

サービス手順3:ImagePathをシステム設定に向けてサービスを開始

CloudflareのWindowsサービスドキュメントでは、CloudflaredのImagePathがシステムプロファイルの設定ファイルを参照する必要があります。

CLIPowerShell 7 (Admin)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Cloudflared" -Name ImagePath -Value "C:\Cloudflared\bin\cloudflared.exe --config=C:\Windows\System32\config\systemprofile\.cloudflared\config.yml tunnel run"
sc.exe start cloudflared

これはCloudflareのWindowsサービスの流れを反映しており、cert.pemとトンネル認証情報をシステムプロファイルにコピーし、システムプロファイル用のconfig.ymlを書き、CloudflaredサービスのImagePathをその設定に向けます。

VPNの配置と強化ルール

トンネルの匿名性は下層の経路次第です。Cloudflareに住宅IPではなくVPN出口IPを見せたいなら、VPNはcloudflared起動前に接続経路に組み込む必要があります。

cloudflared起動前にVPNを開始

まずホストの公開IPを確認してください。マシンがISPのIPを表示していれば、トンネル接続時にCloudflareも同じIPを認識します。

本物のキルスイッチを使う

VPNが切れてファイアウォールがない場合、cloudflaredは通常の住宅回線で再接続します。

オリジンはローカルに保つ

可能な限りウェブサービスをlocalhostやプライベートインターフェースにバインドし、トンネルだけが公開経路となるようにします。

ログは機密情報として扱う

Cloudflareのドキュメントでは、デバッグログにリクエストURLやメソッド、プロトコル、コンテンツ長、ヘッダーが記録される可能性があるため、通常は通常ログを使うよう注意しています。

VPNの選択肢と比較(任意)

手軽なVPNショートカットか詳細比較が欲しいですか?

簡単に始めたいなら下のVPNボタンで現在のおすすめを開けます。多くの選択肢を比較したい場合はプロバイダ一覧を使いましょう。

現在のおすすめ: Proton VPN

トンネルが停止してもDNSレコードが有効なら、訪問者はCloudflareのエラーを見ます。これは目立ちますが、自宅IPの漏洩より安全です。

信頼前の検証チェックリスト

サイトが一度表示されたからといって設定が安全とは限りません。運用者の視点で経路を確認しましょう。

DNSは自宅IPではなくCloudflareに解決されます

外部からの簡単な確認では、住宅用IPではなくCloudflareのレコードが表示されます。

トンネル開始前にホストはVPN出口IPを表示

まずマシンの公開IPを確認し、Cloudflareが接続元として何を認識するか把握しましょう。

別ネットワークからポート開放なしでサイトが動作

モバイル回線や別の外部ネットワークからテストし、ローカル経路の影響を避ける

VPNが切断されると住宅用IPへの切り替えはできません

失敗ケースを一度シミュレートします。cloudflaredがISP経路で再接続するとプライバシーモデルは破綻します。

GhostlyShareが簡単な選択肢のとき

GhostlyShare

一時的な公開プレビューやクライアントデモ、Webhookコールバックが必要な場合は、GhostlyShareが簡単でCloudflareの設定作業を省けます。

トンネルやDNS、サービスアカウントパスを完全に制御し長時間のホームホスティングをしたい場合は手動のcloudflaredを使い、速度重視ならGhostlyShareを使います。

GhostlyShareを見る

匿名ホームホスティングのよくある質問

Cloudflareは私の身元を把握していますか?

はい。Cloudflareはアカウント、ゾーン、トンネル、エッジに届く送信元IPを把握しています。VPNは住宅用IPを置き換えますが、Cloudflareアカウントとの関連は消せません。

訪問者に自宅のIPアドレスは見えますか?

通常、DNSがCloudflareのみを指し、他にオリジンを公開していなければ、訪問者はCloudflareのエッジと公開ホスト名に到達し、住宅用IPは見えません。

ルーターのポート開放は必要ですか?

いいえ。Cloudflare Tunnelはアウトバウンドのみで、コネクタはインターネットからの着信を待たずCloudflareに接続します。

cloudflared.exeは必要な時だけ起動できますか?

はい。一時的にサイトが必要な場合はPowerShellで対話的にトンネルを実行し、ログオフや再起動後も経路を維持したい場合にWindowsサービスに変換します。

VPNが切れたらどうなる?

キルスイッチがなければ、cloudflaredは通常の住宅回線で再接続し、Cloudflareは自宅ISPのIPを認識します。失敗ケースも成功ケースと同じくらい重要です。

これでプロジェクト全体が匿名になりますか?

いいえ。ドメイン登録、支払い、回復用メール、ブラウザの指紋、管理者の行動で特定される可能性があります。トンネルは露出問題の一部のみ解決します。

関連ガイド