ServBayにおけるcloudflaredを使用したCloudflare Tunnelリバースプロキシ設定ガイド
Cloudflare Tunnel(旧Argo Tunnel)は、Cloudflareが提供するゼロトラストリバースプロキシサービスで、公開ポートを開放することなく、ローカルサービスを安全に公開できます。本ガイドでは、ServBay環境においてcloudflaredを使用して安全なトンネルを構築し、ローカルサービスへのインターネットアクセスを実現する方法を説明します。
技術原理
Cloudflare Tunnelは、暗号化されたアウトバウンド接続(QUICプロトコルに基づく)を作成することで、ローカルサービスをCloudflareのエッジノードに安全に接続します。この仕組みは、NATトラバーサルを完全に回避し、ファイアウォールルールの設定を必要とせず、CloudflareのDDoS対策やWebアプリケーションファイアウォール(WAF)機能を統合しています。
環境準備
1. cloudflaredクライアントのインストール
macOSシステム(ARMアーキテクチャ):
bash
# バイナリファイルをダウンロード
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-amd64.tgz | tar xz
sudo mv cloudflared /usr/local/bin/
1
2
3
2
3
インストールの確認:
bash
cloudflared --version
# cloudflared version 2024.5.0 (built 2024-05-01)
1
2
2
2. Cloudflareアカウントへのログイン
bash
cloudflared tunnel login
1
実行すると、ブラウザが自動的に開き、管理するドメイン名を選択して認証を完了します。
トンネル設定実践
コア設定フロー
- トンネルの作成
bash
cloudflared tunnel create servbay-tunnel
# 出力の例:Created tunnel servbay-tunnel with id xxxx-xxxx-xxxx
1
2
2
- DNSレコードの設定
bash
cloudflared tunnel route dns servbay-tunnel servbay-tunnel.yourdomain.com
1
- 設定ファイルの作成
~/.cloudflared/config.yml
を作成します:
yaml
tunnel: <TUNNEL_ID>
credentials-file: /path/to/credentials.json
ingress:
- hostname: servbay-tunnel.yourdomain.com
service: https://servbay.local
originRequest:
noTLSVerify: true # ローカル証明書の検証をスキップする場合は有効にする
- service: http_status:404 # デフォルトのフォールバックルール
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
トンネルサービスの起動
bash
cloudflared tunnel run servbay-tunnel
1
サービスの確認
- 設定したドメイン名にアクセス:
https://servbay-tunnel.yourdomain.com
1
- 確認ポイント:
- ローカルサービスと一致するコンテンツが表示されること
- ブラウザのアドレスバーにCloudflare発行の有効なSSL証明書が表示されること
- レスポンスヘッダーに
CF-RAY
識別子が含まれること
高度な設定テクニック
マルチサービスルーティング
yaml
ingress:
- hostname: api.yourdomain.com
service: https://api.local
- hostname: app.yourdomain.com
service: https://app.local
1
2
3
4
5
2
3
4
5
トラフィック監視
bash
# リアルタイム指標を表示
cloudflared tunnel info servbay-tunnel
# 詳細なログを取得
cloudflared tunnel logs servbay-tunnel
1
2
3
4
5
2
3
4
5
トラブルシューティング
現象 | 解決策 |
---|---|
502 Bad Gateway | ローカルサービスが稼働しているか、トンネル設定内のserviceアドレスが正しいか確認する |
DNS解析エラー | DNSレコードのCNAMEが正しく指向しているか確認(<UUID>.cfargotunnel.com であるべき) |
証明書検証失敗 | config.yml内のhostnameと証明書ドメイン名が一致していることを確認し、ローカル証明書チェーンが完全であるか確認する |
提案の利点
Cloudflare Tunnelソリューションを使用することで、ServBayユーザーは以下を享受できます:
- エンタープライズレベルのセキュリティ保護:内蔵のDDoS緩和とWAF保護
- ポート公開ゼロ:ファイアウォールやNATルールの設定不要
- インテリジェントルーティング:CloudflareのグローバルAnycastネットワークによるアクセス速度最適化
- 無料枠:無料プランには毎月50のアクティブトンネルが含まれています
本番環境では、Accessポリシーと連携して細粒度のアクセス制御を実施し、サービスの安全性を確保することをお勧めします。