合法的でプライバシー重視の公開
Cloudflare TunnelとVPNで自宅から匿名ウェブサイトをホストする
本ガイドはCloudflare Tunnel経由でローカルサイトを公開し、必要に応じてcloudflaredをVPN経由にして自宅IPを隠す方法を解説します。
プライバシーの境界が重要です。訪問者は住宅用IPを知る必要はありませんが、Cloudflareはアカウントを把握し、VPNプロバイダーはCloudflareへの接続を知っています。
これは正当なセルフホスティング、テスト、公開、研究向けで、不正行為やマルウェア、フィッシング、嫌がらせなど違法行為はサポートしません。
目次
この設定が実際に守るもの
実際の目的はすべてのプロバイダーから消えることではなく、一般の訪問者やスキャナー、通常のDNS検索から住宅用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だけがアクセスできるローカルサービスです。
ホスト名をリクエストし、Cloudflareのエッジネットワークに到達します。
HTTPSを終了し、ルールを適用してリクエストを名前付きトンネルに転送
WindowsマシンからCloudflareへのアウトバウンドのみのトンネル接続を維持します。
localhostや他のプライベートオリジンで応答し、直接インターネットに公開されません。
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サービスに変換できます。
Cloudflare TunnelはHTTP、HTTPS、TCP、SSH、RDPなどのプライベートサービスを公開可能ですが、本ガイドはウェブサイトに限定しています。
正確なベンダーワークフローは、設定と比較してください Cloudflareローカルトンネルガイド および Windowsサービスガイド.
Windows設定:cloudflared.exeの手順
この手順はローカルでサイトが動作し、ドメインがCloudflare DNSを使っていることを前提としています。例はapp.example.comとポート3000のローカルサービスです。
以下のすべてのコマンドはPowerShell 7で実行し、コピー前にサンプルのホスト名、トンネル名、ローカルサービスを置き換えてください。
ステップ1:再利用する値を定義
PowerShell 7で開始し、サンプルのホスト名、トンネル名、ローカルサービスを自分の値に置き換えてから続行してください。
$TunnelName = "ghostly-home-site"
$PublicHostname = "app.example.com"
$LocalService = "http://localhost:3000"
$CloudflaredHome = "C:\Cloudflared\bin"
$ConfigPath = "$env:USERPROFILE\.cloudflared\config.yml"ステップ2:cloudflared.exeを準備
ダウンロードしたバイナリの名前を変更し、専用フォルダを作成して実行ファイルをコピーします。
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"ステップ3:作業フォルダに移動しバイナリを確認
フォルダに移動し、認証前にcloudflared.exeが正常に起動するか確認してください。
Set-Location $CloudflaredHome
.\cloudflared.exe --versionステップ4:ログインしてCloudflareゾーンを認可
ブラウザが開きゾーンの承認を行います。アカウント証明書はデフォルトの.cloudflaredディレクトリに書き込まれます。
.\cloudflared.exe tunnel loginステップ5:名前付きトンネルを作成しUUIDを保存
トンネルを作成し、コマンド出力のUUIDを下の変数に貼り付けて次のコマンドで再利用します。
.\cloudflared.exe tunnel create $TunnelName
$TunnelId = "<paste-the-tunnel-uuid-from-the-create-output>"ステップ6:config.ymlを一行ずつ記述
これらのコマンドはWindowsプロファイル内にローカルのconfig.ymlを作成し、トンネルがどの公開ホスト名をどのローカルサービスに転送するかを指定します。
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"ステップ7:設定を確認し検証
ファイルを一度印刷して確認し、DNS公開前にcloudflaredでingressルールを検証します。
Get-Content $ConfigPath
.\cloudflared.exe tunnel ingress validateステップ8:DNSルートを作成しトンネルを確認
ライブトラフィックを開始する前に、どのホスト名が名前付きトンネルを指すかをCloudflareに伝えます。
.\cloudflared.exe tunnel route dns $TunnelName $PublicHostname
.\cloudflared.exe tunnel info $TunnelNameステップ9:トンネルをフォアグラウンドで実行
別ネットワークからサイトをテストする間、このPowerShell 7ウィンドウを開いたままにしてください。終了時はCtrl+Cで停止します。
.\cloudflared.exe tunnel run $TunnelName対話型トンネルが動作した後にのみ実行してください。サービスはシステムプロファイルとレジストリを使うため、管理者権限のPowerShell 7で以下のコマンドを実行します。
サービス手順1:Windowsサービスシェルをインストール
この任意の手順には管理者権限のPowerShell 7を開き、まずCloudflaredサービスをインストールします。
Set-Location $CloudflaredHome
.\cloudflared.exe service installサービス手順2:cert.pem、認証情報、設定をシステムプロファイルにコピー
Windowsサービスはシステムプロファイルで動作するため、証明書、トンネル認証情報、config.ymlを含む専用の.cloudflaredフォルダが必要です。
$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"サービス手順3:ImagePathをシステム設定に向けてサービスを開始
CloudflareのWindowsサービスドキュメントでは、CloudflaredのImagePathがシステムプロファイルの設定ファイルを参照する必要があります。
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起動前に接続経路に組み込む必要があります。
まずホストの公開IPを確認してください。マシンがISPのIPを表示していれば、トンネル接続時にCloudflareも同じIPを認識します。
VPNが切れてファイアウォールがない場合、cloudflaredは通常の住宅回線で再接続します。
可能な限りウェブサービスをlocalhostやプライベートインターフェースにバインドし、トンネルだけが公開経路となるようにします。
Cloudflareのドキュメントでは、デバッグログにリクエストURLやメソッド、プロトコル、コンテンツ長、ヘッダーが記録される可能性があるため、通常は通常ログを使うよう注意しています。
VPNの選択肢と比較(任意)
手軽なVPNショートカットか詳細比較が欲しいですか?
簡単に始めたいなら下のVPNボタンで現在のおすすめを開けます。多くの選択肢を比較したい場合はプロバイダ一覧を使いましょう。
現在のおすすめ: Proton VPN
トンネルが停止してもDNSレコードが有効なら、訪問者はCloudflareのエラーを見ます。これは目立ちますが、自宅IPの漏洩より安全です。
信頼前の検証チェックリスト
サイトが一度表示されたからといって設定が安全とは限りません。運用者の視点で経路を確認しましょう。
外部からの簡単な確認では、住宅用IPではなくCloudflareのレコードが表示されます。
まずマシンの公開IPを確認し、Cloudflareが接続元として何を認識するか把握しましょう。
モバイル回線や別の外部ネットワークからテストし、ローカル経路の影響を避ける
失敗ケースを一度シミュレートします。cloudflaredがISP経路で再接続するとプライバシーモデルは破綻します。
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を認識します。失敗ケースも成功ケースと同じくらい重要です。
これでプロジェクト全体が匿名になりますか?
いいえ。ドメイン登録、支払い、回復用メール、ブラウザの指紋、管理者の行動で特定される可能性があります。トンネルは露出問題の一部のみ解決します。
関連ガイド
Cloudflareが見る送信元IPをVPNで隠す前に、ネットワーク層の基本を理解してください。
ガイド オンラインのフィンガープリントと追跡状況を確認管理セッションを特定される手がかりを減らすため、指紋ページを利用してください。
ツール GhostlyShare:WindowsとLinuxでlocalhostを共有Cloudflareの全設定を手動で行わずに公開プレビューリンクが欲しい場合は、より簡単なデスクトップルートを使います。
ディレクトリ 世界のVPNプロバイダー:監査、プライバシー、適合性を比較トンネル経路用のVPNを選ぶ前に多くのプロバイダーを比較したい場合は、VPNディレクトリ全体を利用してください。