CDN 導入について

タグ: #<Tag:0x00007f9e18e81b20>

現在運用中の Mastodon 関連ドメインに CDN ( Cloudflare ) を導入したく悩んでいます。

というのも、メディア用にサブドメインを切っていないため全通信が CDN でのキャッシュ対象となるのではと考えているためです。

また、POST も全て CDN 経由となるため、正常にできるのか、遅延はどの程度なのか、追加料金は青天井にかからないのか、など心配しています。

またエラーのページでも 200 が返るという噂も聞いており、正常に動作するのか不安です。

また同じドメインで複数の Mastodon サーバー、リレーサーバー等を動かしているため、どうなるか分からず踏み切れずいます。

その辺りご教授いただけると幸いです。

遅延は気にしないで良いと思います
POSTリクエストに関してはCloudFlareはキャッシュなどしなかったと思うので結果が変わるといったこともないです
Mastodonに詳しくないですが、エラーのページでも 200 が返る はキャッシュの設定によってはあり得るかもしれないです

1 Like

Cloudflareに従量課金は無く、プランにより使える機能が変わるだけですので、追加料金が青天井になることはありません。
私が運用しているMastodonサーバーは、メディアも含めCloudflareを通しており、特に目立った遅延などは観測していません。
また、CloudflareのCDNを通すか通さないかは、サブドメイン単位で設定できます。

1 Like

注意点としては、Webサーバーの設定を変更しないと、サーバーのアクセスログに残るIPアドレスがCloudflareのものになります。
Nginxの場合は下記のようにすることで回避できます。
https://wiki.sabakan.industries/server/get-client-ip-via-cloudflare

2 Likes

いまからサブドメイン切ってもいいと思いますよ。

新しいメディアは新しいサブドメインのurlでリモートに飛んでいきますし、過去のものはnginxの方で、サブドメイン無しの本体に飛んできたらリダイレクトして対処します。

  location ~ ^/(emoji|packs) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    add_header Strict-Transport-Security "max-age=31536000";
    try_files $uri @proxy;
  }

  location /system {
    rewrite ^/system(.*) https://media.example.com$1 permanent;
  }
1 Like

貴重な意見ありがとうございます。
助かります。

メディア用にサブドメインを切らなかった理由は SSL 証明書を増やしたくなかったからです。
稼働開始当時は Let’s Encrypt ではなく Symantec の証明書を使用していました。

今なら Let’s Encrypt を使用していますしマルチドメイン対応もありますが、テスト用サーバーも複数あるためそのままにしたいと考えています。

やはりサブドメイン単位なんですね。
ありがとうございます、悩ましいです。

ところで、キャッシュしない設定にした部分の場合でも DDoS 等からの保護は効くのでしょうか?

Cloudflareでは、DNSレコード単位で、Cloudflareのネットワークを通す/通さないを設定します。
通さない場合、DNSで名前解決するとサーバーのIPアドレスがそのまま引かれるので、DDoSからの保護も効きません。

Cloudflareを通すと、DNSで引かれるIPアドレスはCloudflareのIPアドレスになります。

1 Like

ありがとうございます。

自身の Mastodon 関連サーバー全体を DDoS 等から保護できる体制にしたいと考えています。
その場合、すべてをキャッシュ対象にすることになりそうですね…

とりあえず DNS を切り替えてテスト用サーバーのサブドメインだけをキャッシュ対象にして試してみようと思います。

ありがとうございます、他にも何か助言いただけることがありましたら教えていただけると幸いです。

サーバー全体を保護されたい場合は、加えてプロキシを利用されることをお勧めします。というのも、プロキシを使用しなかった場合、ActivityPubの配送であったり、OGPのクロールなどでサーバーのIPを調べられるので、攻撃者にCloudflareを経由しないルートを晒してしまうことになるためです。

2 Likes

リバースプロキシはCloudFlare等がありますが、フォワードプロキシは定石あるのかな……。まぁ、今回の目的で言えば、本体と違うIPで動かすことさえできればなんでもOKという感じはありますが、ホスティングサービス業者も隠したいといえば隠したい……。

話はそれますが、昨晩masto.host系(Mastodonホスティング)との大本のホスティングサービスだか経路だかに問題があって、EU圏内にVPNして繋げばなんとかOKという話がありましたが、フォワードプロキシをEU圏に設置すれば、そっちに流して対応もできましたよね、たぶん。

受信もCloudFlareのEU圏のエッジで受けて転送されているならうまくいくのだろうか……。

ありがとうございます。

おっしゃる通り、Mastodon の場合 URL が貼られただけでもサーバー側からアクセスするため、 CDN を導入しただけでは IP アドレスの露見を避けることは困難です。

故意の DDoS から守るにはそこまで対策しなければならないと思いますが、大変そうな印象を持っています。