Gadget 41:Tunnel と Access で安全に公開

ポートを開けずに公開する Zero Trust 指向(Tunnel + Access)

Tunnel と Access で安全に公開

Cloudflare OS を自宅 NAS から公開するなら、ポートを開けない Tunnel + Access が最有力です。

目的

  • ルーターでポートを開けずに(つまり攻撃面を広げずに)公開する
  • アクセスには認証(Access)を挟んで安全にする

前提条件

  • ドメイン(management を Cloudflare に置く)
  • 公式: https://developers.cloudflare.com/cloudflare-one/

手順

1. ドメインを Cloudflare に載せる

  • Cloudflare へドメインを追加(ネームサーバー変更)
  • DNS で利用したいサブドメインを登録(Tunnel 後、CNAME に置き換わる)

2. Tunnel で公開する(cloudflared)

# ローカルで一度起動(ワンライナー)
cloudflared tunnel --url http://localhost:8787
# => https://<ランダム>.trycloudflare.com が払い出される(即時確認用)

恒久公開は「Named Tunnel」で:

cloudflared tunnel login
cloudflared tunnel create cfos
cloudflared tunnel route dns cfos cf.example.com
cloudflared tunnel run cfos --url http://localhost:8787
Tipポート解放と比較して

ルーターで 8787 を解放するより、外部ポートを一切開けずに済むため 攻撃面が減ります。NAS のやり方と合わせて 02 も参照。

3. Access で認証を挟む

  • Cloudflare Zero Trust ダッシュボードで cf.example.com にアクセスポリシーを追加
  • 例: 自分のメールアドレス(EメールワンタイムPIN)のみ許可
  • 既定 admin の除去は必須(11

よくある失敗

症状 原因 対処
trycloudflare.com は動くのにナメドでだめ DNS route 未作成 cloudflared tunnel route dns を実行
アクセスに無限ループ Access 設定のセッション問題 ポリシー対象(ドメイン/パス)を精査
Tunnel が落ちる 常駐化していない 自動起動設定(17
OAuth が回らない Tunnel の URL と OAuth URL が不一致 完全一致の URL を登録(03

確認

次に読む