Cloud Service
Spectrum
TCPやUDPの非HTTPアプリをCloudflareのエッジに通し、DDoS保護と暗号化をL4で提供するプロキシ。ゲームやRDP、メール等の保護に使う。
- 1.HTTP以外のTCP/UDPアプリをCloudflareのエッジ経由で保護するL4プロキシ。
- 2.オリジンのIPを隠しつつ、大規模DDoS対策をアプリ層のプロトコルを問わず適用できる。
- 3.ポート単位でアプリケーションを定義し、TLS終端や送信元IP可視化などを設定する。
解決する課題
CloudflareのWAFやCDNはHTTP/HTTPSを前提としたプロキシですが、実際のシステムにはゲームサーバー、RDP、SSH、メール、独自バイナリプロトコルなどHTTP以外のTCP/UDPアプリケーションが数多く存在します。Spectrumはこうした非HTTPアプリケーションをCloudflareのエッジネットワークに通すことで、HTTPアプリと同様のDDoS保護とオリジン隠蔽を実現します。
- ゲームサーバーやRDPなど非HTTPプロトコルをインターネット直露出させたくない
- 大規模なボリューメトリックDDoS攻撃からTCP/UDPサービスを守りたい
- オリジンサーバーの実IPアドレスを隠蔽し、攻撃対象をエッジ側に集約したい
- HTTPアプリと同じCloudflareアカウントで、非HTTPアプリも一元的に保護したい
主要概念と用語
- Spectrum アプリケーション: 保護対象のTCPまたはUDPサービスを定義する単位。リスニングポートとオリジン(宛先)の組を1つのアプリケーションとして設定する
- プロキシプロトコル(Proxy Protocol): オリジン側でクライアントの実接続情報(送信元IPなど)を受け取るための仕組み。エッジがオリジンへ転送する際にヘッダーとして付与できる
- TLS/SSL終端: SpectrumアプリケーションでTLSをCloudflareのエッジ側で終端するか、オリジンまでそのまま通す(パススルー)かを選べる
- オリジンプール(Origin Pool): 転送先オリジンの集合。複数オリジンを束ねて負荷分散やフェイルオーバーに使う
- エニーキャスト(Anycast)ネットワーク: Cloudflareの分散エッジ網。世界中のロケーションで同一IPを受け付け、最寄りのエッジで接続を終端する
- DNSレコードとの連携: Spectrumアプリケーションは特定のホスト名(DNSレコード)に紐づき、そのホスト名宛のTCP/UDP接続がCloudflare経由になる
仕様・制限・クォータ
- 対応するのはTCPまたはUDPベースのアプリケーション。HTTP/HTTPSはSpectrumの対象外で、通常のCDN/プロキシ機能を使う
- アプリケーションごとにリスニングポートとオリジンのポート・アドレスを指定する。ポート番号の対応関係は柔軟に設定できる
- 提供プラン・契約形態によって、作成できるSpectrumアプリケーションの数や利用可能なポート範囲に上限・制約がある
- TLS終端を行う場合、証明書の管理はCloudflareの証明書機能と連携する
- プロキシプロトコルを使う場合、オリジン側のアプリケーションがプロキシプロトコルの解釈に対応している必要がある
Webサイトやアプリのように内容がHTTP/HTTPSであれば、通常のCloudflareプロキシ(オレンジクラウド)を使うのが基本です。Spectrumは、ゲーム、RDP、SSH、独自TCP/UDPプロトコルなどHTTPで表現できない通信を保護したいときに使います。
内部の仕組み
クライアントがSpectrumで保護されたホスト名・ポートに接続すると、通信はまずCloudflareのエニーキャストエッジで受け付けられます。エッジはTCPまたはUDPの接続をそのまま(あるいはTLSを終端した上で)オリジンプールへ転送します。この経路上でCloudflareのネットワーク層のDDoS対策が働き、大規模な攻撃トラフィックはオリジンに到達する前にエッジで吸収・遮断されます。
- TLS終端モード: エッジでTLSを解いてから平文でオリジンへ転送する。証明書管理をCloudflare側に寄せられる
- TLSパススルー(TCPプロキシ)モード: 暗号化されたまま転送し、オリジン側で終端する。エンドツーエンド暗号化を維持したい場合に使う
- 送信元IPの可視化: 直接接続ではエッジのIPがオリジンに見えるため、実クライアントIPが必要な場合はプロキシプロトコルを有効にしてオリジンへ伝達する
Spectrumを導入しても、オリジン側のファイアウォールがCloudflareのIPレンジ以外からの接続を許可したままだと、エッジを迂回した直接攻撃が可能になります。オリジンへの着信をCloudflareのエッジ経由のみに制限することが重要です。
設計パターン / ベストプラクティス
- オリジンの直接露出を避ける: オリジンのファイアウォールでCloudflareのIPレンジからの着信のみを許可し、実IPへの直接攻撃を防ぐ
- プロキシプロトコルを活用: アクセス制御やログ分析で送信元IPが必要なアプリケーションでは、プロキシプロトコル対応を確認した上で有効化する
- オリジンプールで冗長化: 複数オリジンを登録し、単一オリジン障害時にも接続を継続できるようにする
- TLS終端方針を用途で選ぶ: 証明書運用をシンプルにしたいならエッジ終端、エンドツーエンドの機密性を優先するならパススルーを選ぶ
- ポート設計をアプリごとに整理: ゲーム・RDP・独自プロトコルなど用途ごとにSpectrumアプリケーションを分け、変更影響を局所化する
運用・監視
- Cloudflareのダッシュボードやログ連携機能で、Spectrum経由の接続数・転送量・エラー状況を確認する
- DDoS攻撃の検知・緩和状況は、Cloudflareのネットワーク層保護のログ・分析画面で把握できる
- オリジン側でもプロキシプロトコル経由の実IPを使ったログを残し、異常な接続パターンを追跡できるようにする
- アプリケーション定義(ポート、オリジン、TLS設定)の変更は、事前に影響範囲を確認してから適用する
コスト
Spectrumは通常、Cloudflareの上位プランや専用のアドオンとして提供され、保護対象アプリケーション数や転送データ量に応じた契約が一般的です。無料プランの範囲外となることが多いため、必要なアプリケーション数と想定トラフィック量を踏まえて契約形態を確認することが重要です。具体的な料金体系は変動するため、最新の料金ページで確認してください。
Spectrumの価値の中心は、単なるTCP/UDPプロキシではなく大規模DDoS攻撃への耐性込みの保護にあります。コストを検討する際は、自前でDDoS対策を構築・運用するコストとの比較で考えるとよいでしょう。
セキュリティ
- オリジンIPの隠蔽: クライアントから見えるのはCloudflareのエッジIPのみとなり、オリジンの実IPを外部から特定しにくくする
- ネットワーク層DDoS対策: エニーキャストネットワークと大規模な吸収能力により、ボリューメトリック攻撃をエッジで緩和する
- TLS終端時の証明書管理: エッジ終端を選ぶ場合、証明書の発行・更新をCloudflare側の仕組みに委ねられ、オリジン側の証明書運用負荷を下げられる
- アクセス制御の併用: オリジンのファイアウォールをCloudflareのIPレンジに限定し、エッジを迂回した直接アクセスを遮断する
Spectrumを導入した後も、オリジンのファイアウォールを全世界に開放したままにするのは危険です。攻撃者がオリジンの実IPを何らかの経路で把握すると、Spectrumを迂回して直接攻撃できてしまいます。オリジンへの着信は必ずCloudflare経由に限定してください。
関連サービス・比較
同じCloudflareのプロキシ機能でも、対象プロトコルの違いでSpectrumと通常のCDN/プロキシ(HTTP/HTTPS向け)は明確に使い分けます。
| 観点 | Spectrum | 通常のCloudflareプロキシ(CDN) |
|---|---|---|
| 対象プロトコル | TCP/UDP(非HTTP全般) | HTTP/HTTPS |
| 主な用途 | ゲーム、RDP、SSH、独自プロトコル | Webサイト、API |
| キャッシュ機能 | 対象外 | 静的コンテンツのキャッシュが可能 |
| DDoS対策 | L3/L4中心にエッジで緩和 | L7を含め幅広く緩和 |
| TLSの扱い | 終端またはパススルーを選択 | エッジで終端するのが一般的 |
ハンズオン / CLI例
# wrangler でログイン(Cloudflareアカウントに対する操作全般の前提)
wrangler login
# Spectrumアプリケーションの設定は現時点でAPI経由が中心のため、
# curlでCloudflare APIを呼び出してアプリケーションを作成する例
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/spectrum/apps" \
-H "Authorization: Bearer API_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"protocol": "tcp/22",
"dns": { "type": "CNAME", "name": "ssh.example.com" },
"origin_direct": ["tcp://203.0.113.10:22"],
"proxy_protocol": "v1",
"tls": "off"
}'
# 作成済みのSpectrumアプリケーション一覧を確認
curl -X GET "https://api.cloudflare.com/client/v4/zones/ZONE_ID/spectrum/apps" \
-H "Authorization: Bearer API_TOKEN"
Cloudflare Service
Spectrumを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: Cloudflare / カテゴリ: ネットワーキング / 難易度: intermediate
導入後に効く点
オリジンのIPを隠しつつ、大規模DDoS対策をアプリ層のプロトコルを問わず適用できる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Cloudflare
- カテゴリ
- ネットワーキング
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- security / reliability / performance
判断チェックリスト
- 自社の用途が「ネットワーキング / security」に近いか確認する。
- 強みである「HTTP以外のTCP/UDPアプリをCloudflareのエッジ経由で保護するL4プロキシ。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。