Cloudflare

CDN サービス Cloudflare(クラウドフレア)についてまとめています。

2020年3月中旬より、ログイン後の表示が日本語表示になりました。
このページで反映していますが、後に表示が変更される可能性があります。
右上「日本語 」「English 」より言語の変更が可能です。


公式・関連サイト

Cloudflare


特徴

Cloudflare は次の特徴があります。

  • サイト登録数・転送量無制限で無料使用できます。
    個人でも安心して導入できます。
    有料プランでは、更に高速化や攻撃対策として使用できる機能があります。
  • 表示した内容をキャッシュする CDN 機能を提供します。
    これにより高速表示を実現します。
  • 表示高速化の最適化ができます。
    HTTP/2・TLS 1.3 の新技術で更に高速化を実現させています。
    更に設定で HTTP/3 や Minify も可能です。
  • SSL 証明書を自動適用し、SSL 化を実現します。
    Cloudflare 発行の証明書を採用します。
    また配信元のサーバには Origin 証明書(最長 15 年)を適用する事ができます。
    有料プランでは Cloudflare に他社提供の証明書を適用する事もできます。
  • ネームサーバを提供します。 新しい種類にも対応しています。
    このネームサーバから Cloudflare を適用する対象のサブドメインを選択します。
    有料プランではサブドメインで導入も可能です。
  • ファイヤウォールがあります。
    特定の攻撃をブロックしたり、ログとして残しておく事ができます。
  • 301・302 転送を Cloudflare 側で実現できます。
    配信サーバが非対応でも Cloudflare 側で行えます。
  • API が提供されています。
    例えば DNS の A を変更する事でダイナミック DNS を実現できます。

次の場合は Cloudflare の機能を Off にして使用して下さい。
(ドメインを追加してネームサーバ管理は可能です)

  • IoT 機器(組み込み電子機器)から参照する場合
    Cloudflare 経由は HTTP/2・TLS 1.3 や Brotil・gzip 圧縮を適用するため、
    これらに対応していない機器では参照できなくなります。
  • 適用するドメイン・サブドメインで Web・メール 以外にも使用している場合
    直接参照する IP アドレスが Cloudflare サーバになるため、
    他のサービスを使用している場合は Cloudflare を有効にすると参照できなくなります。
    メール(SMTP)は MX で設定するため、対象外となります。
    FTP の接続先は割り当てドメイン外のホスト名・IP アドレスで接続するか、
    ftp.ドメイン名 で Cloudflare を無効した IP アドレスを設定し、これで接続します。

ここでは無料プランを使用する前提で説明を行っています。


サイトの登録

  1. 右上の サイトを追加 / Add Site を選択します。

  2. 独自ドメインを登録します。
    厳密には Public Suffix List 登録のドメイン・サブドメインとなります。
    そのため、一般向けに公開されているサブドメインでも登録できる場合があります。
    該当のドメインは、ネームサーバ(レンタルサーバなど)へ登録されている状態にする必要があります。

  3. プランの選択になります。Free $0/月 / FREE $0/month を選択して下さい。

  4. 現在登録されているネームサーバからゾーンを得ます。
    確認の上、異なっているゾーンは変更して下さい。
    もちろんここで配信サーバを変更する場合は変更できます。

  5. ドメインのネームサーバを変更するよう表示されます。
    ドメイン登録サービスへログインし、ネームサーバを変更して下さい。

  6. 数分~数時間で Cloudflare が変更を確認し、有効化します。
    有効になった場合はメールが届きます。

Public Suffix List については次を参照して下さい。

Public Suffix List
publicsuffix/list | GitHub
🎈 Public Suffix List | ふうせん🎈 Fu-sen.

WordPress を使用している場合

Cloudflare プラグイン をインストールし、
プラグインの設定画面から Apply Default Settings を選びます。
これだけで Cloudflare の設定が WordPress 向けに最適化されます。


ここから下はログイン後にドメインを選択した時のメニュー別です。

無料プランで完全無料な項目だけ触れています。有料プラン・課金対象は外しています。


概要 / Overview

初期状態では 24 時間の参照とキャッシュ状況が表示されています。


Analytics(アクセス情報とキャッシュ状況)

概要 / Overvirew より詳細な状況が参照できます。


DNS(ネームサーバのゾーン設定)

Cloudflare 登録後はこの DNS 画面からネームサーバのゾーン設定を行います。\

Page Rules で完全に他のドメインへ転送する場合でも、
対象のサブドメイン・サブドメインのないドメインには
何だかのサーバは仮に設定しておく必要があります。
よく使っているサーバの仮設定などで大丈夫です。 (サーバ側はドメインを追加する必要ありません)

  • タイプ / Type - A・AAAA・CNAME など。
  • 名前 / Name - サブドメインを入れます。
    サブドメインなしは @ にします。一覧ではドメイン名がフル表示になります。
  • コンテンツ / Content - 値。参照先の IP アドレスやホスト・ドメイン名などです。
  • TTL - DNS only の場合に設定できます。Proxied は Auto になります。
    DNS Only にした時に設定できる TTL の最小は 2 分です。通常は Auto にします。
  • プロキシ ステータス / Proxy status A・AAAA・CNAME の時に が表示されます。
    をオレンジにした Proxied で Cloudflare の各機能が有効になります。
    がグレーの DNS only だとネームサーバ機能だけです。

他のネームサーバと異なる Cloudflare 独特の設定として、
@(サブドメインなし)に対して CNAME を指定する事ができます。
他のネームサーバでは ANAME や ALIAS で提供されている事があります。

Type に SPF が存在しますが、対応しているネームサーバが少ないため、
TXT にも同じ内容を入れて下さい。


SSL/TLS

SSL 関連の設定です。TLS は SSL の実質的な後継となっているプロトコルの名称です。

概要 / Overview

配信サーバの SSL サーバ証明書適用状況に応じて選択します。

  • オフ / Off - サーバ-Cloudflare 間は SSL なし、Cloudflare-ネット間は SSL なし
    SSL なしで参照する必要がある場合に選択します。通常選択しないでしょう。
  • フレキシブル / Flexible - サーバ-Cloudflare 間は SSL なし、Cloudflare-ネット間は SSL あり
  • フル / Full - サーバ-Cloudflare 間は SSL あり、Cloudflare-ネット間は SSL あり
    この場合、サーバの SSL サーバ証明書は該当ドメインの証明書でなくても有効です。
  • フル (厳密) / Full (strict) - サーバ-Cloudflare 間・Cloudflare-ネット間共に SSL あり
    サーバ側にも対象ドメインの SSL サーバ証明書が導入されている必要があります。

フル (厳密) ・ Full (strict) が最も理想的な選択肢ですが、
正しい証明書が適用されていない場合は参照できなくなります。
多くのサービスで Full を選択して運用できる事が多いです。

エッジ証明書 / Edge Cerficates

  • 常に HTTPS を使用 / Always Use HTTPS - http: で参照された場合、 https: へ転送します。
  • HTTPS の自動リライト / Automatic HTTPS Rewrites - http: の記載を https: へ置き換えます。

配信元サーバ / Origin Server

  • 配信元証明書 / Origin Certificates サーバ-Cloudflare 間の証明書を発行します。
    2020年3月現在、配信元証明書 / Origin Certificatesの最長は 15 年です。

ファイアウォール / Firewall

明らかに特定から攻撃を受けている場合に拒否したり、それを確認できたりします。
通常は特に設定不要です。明らかな攻撃がある場合にこの設定を追加してみて下さい。

概要 / Overview

  • アクティビティ ログ / Activity log - 怪しい参照・ブロックした参照を表示します。

ファイアウォール ルール / Firewall Rules

無料では 5 つまで生成できます。

ツール / Tools

  • IP アクセス ルール / IP Access Rules - IP アドレスや国別にブロックなどができます。
  • ユーザー エージェントのブロック / User Agent Blocking -
    User Agent の特定条件でブロックできます。

Speed(表示速度関連)

通常は変更する必要ありません。

概要 / Overview

Cloudflare 適用時・非適用時の予測速度が表示されます。

最適化 / Optimization

  • Auto Minify - 余計な空白を削除し高速化します。
    通常 Minify は改行も削除するのですが、Cloudflare では改行の削除は空白行のみです。
  • Brotli - Brotli 圧縮を適用します。Brotli 圧縮非対応の場合は gzip 圧縮を適用します。
  • Mobile Redirect - モバイル機器の参照があった場合に転送します。
    現在はレスポンシブデザインになってきているため、これは使わないでしょう。

Caching(キャッシュ関連)

通常はデフォルト状態でもキャッシュが適用されているのが分からない位に表示されます。
何か問題がある場合は、この設定を調整してみて下さい。

  • キャッシュをパージ / Purge Cache - キャッシュの消去を行います。
  • キャッシュ レベル / Caching Level -
    Query string(URL の ? 以降につくパラメータ)での区別です。
  • ブラウザ キャッシュ / TTL Browser Cache TTL - ブラウザ側で残すキャッシュ時間を設定します。
  • Always Online - サーバダウン時に Cloudflare キャッシュから表示させます。
  • 開発モード / Development Mode - 一時的にキャッシュを無効化します。
    アクセスがとても多い場合、配信サーバへアクセスが集中するのでご注意下さい。

なお、Cloudflare のキャッシュ対象は拡張子で選定され、静的ファイルが対象です。
更新で可変が発生する .html・.htm はキャッシュに含まれていません。
.php なども対象外となっています。一方で robots.txt は対象です。

Understand file extensions cached by default | Cloudflare Support - Understanding Cloudflare’s CDN

必要な場合は Page Rules で個別に設定を行います。


ページ ルール / Page Rules

特定の参照に対して、設定を変更する事あできます。無料では 3 つまで指定できます。

この Page Rules を用いて 301・302 転送が実現できます。
https://example.net/ から https://example.org/ へ転送する場合…

  • example.net/* ※ ここでは http:// または https:// 不要です。
  • URL の転送 / Forwarding URL
    • 301 - 永久リダイレクト / 301 - Permanent Redirect
  • https://example.org/$1

と設定します。$1 を省略すると必ずトップページへの転送になります。

また、Cloudflare を有効にした状態で
Let’s Encrypt を発行する場合(HTTP-01 チャレンジ)、
Let’s Encrypt が生成・確認するディレクトリだけ SSL を無効にします。

  • example.net/.well-known/acme-challenge/*
  • SSL
    • オフ Off
  • HTTPS の自動リライト / Automatic HTTPS Rewrites
    • Off

同様に www.example.net/.well-known/acme-challenge/* も必要でしょう。

🎈 Let’s Encrypt | ふうせん🎈 Fu-sen.

サーバ-Cloudflare 間の SSL サーバ証明書を適用する場合は
Let’s Encrypt の代わりに Origin Server を使う事もご検討下さい。


ネットワーク / Network

  • HTTP/3 (QUIC 使用) / HTTP/3 (with QUIC) - HTTP/3・QUIC を適用します。
    高速化と暗号化が期待できますが、非対応環境もあるため、デフォルトは Off です。
  • WebSockets - WebSocket 接続を無効にする場合は Off にします。通常は On で構いません。
  • Pseudo IPv4 - IPv6 接続に対し仮想の IPv4 アドレスを付加します。
  • IP ジオロケーション / IP Geolocation - 参照してきた IP アドレスに国コードを付加させます。
  • 最大アップロード サイズ / Maximum Upload Size -
    ファイルアップロードの最大サイズを設定します。

Scrape Shield

  • メール アドレス暗号化 / Email Address Obfuscation -
    メールアドレスを bot が収集しにくい表記に変換します。
  • サーバー側の除外 / Server-side Excludes - 悪評価の参照から参照を見えなくします。
  • Hotlink の保護 / Hotlink Protection - 外部からの意図しない画像の参照をなくします。

Q&A

Cloudflare CDN はどこにあるのですか?

2020年2月現在、世界 200 ヶ所の CDN サーバが存在します。
日本では東京・大阪に設置されています。

Cloudflareのグローバルなエニーキャストネットワーク

そのため、コンテンツサーバが海外にある場合でも、
Cloudflare 経由にする事で高速表示を期待できます。

本当に無料で使用できるのですか?

サイト運営者は多くの Web サイト・ブログを Cloudflare 経由で運営していますが、
1 円も Cloudflare に支払った事がありません。

Cloudflare へ登録するとどの位効果があるのですか?

運営者が仕事で実体験したものとして、
1 日 70GB~200GB の WordPress で Cloudflare を導入したところ、
サーバ側への参照が 1 日 3GB~4GB と大幅に減ったのを経験しています。

攻撃を受けているため、Cloudflare に登録しましたが、効いていません。

ネームサーバにはキャッシュがあります。
Cloudflare へ登録しても 2~3 日位までは旧設定のままになっているため、
Cloudflare 経由にならない場合が存在します。反映を待つしかありません。

API を用いてダイナミック DNS を実現させようとしていますが、API が失敗します。

該当の A ゾーンがすでに設定されている状態にして API を実行して下さい。
CNAME など他のゾーンしかない場合は更新できません。(ゾーン追加しません)

現在 API のバージョンは v4 です。古いバージョンでは動作しません。
また Cloudflare の仕様変更により、動作しないスクリプトが存在します。

日本語ドメインはサイト登録できますか?

登録できる事をサイト運営者が確認できています。
Cloudflare は Punycode 変換もシステム対応していて、正しいドメイン名を表示します。