🐦

Cloudflare Zero Trust で X(Twitter)アプリが遮断される問題への対策

2024/11/25に公開

症状

自分は2年ぐらい前から Cloudflare Zero Trust を使っています。対象はPC、スマートフォン(iPhone)、タブレット(iPad)です。

最初は iOSでTwitterアプリが使えないなどの問題がありましたが、適切に設定して特に問題なく使えていました。

ただ、9月20日ごろからiOSのXアプリで正常に接続できなくなってしまいました。具体的にはタイムラインの取得、検索結果の取得、リプライやイイネされたなどの反応の取得など、ほぼすべての情報が取得できなくなりました。

Cludflare Warp をOFFにすると繋がることから、Cloudflare が原因と思われます。
また、Zero Trust をログアウトして、通常(オレンジ色)のCloudflare Warpとして使うと問題なくXアプリで接続できることから、Zero Trust 固有の問題のようでした。

なお、ここで接続の問題が起こっているのはiOSのXアプリです。Web版のXではPC,スマートフォンともに問題ありません。
また、Androidスマートフォンは持ってないのでわかりません。

対処方法

同じ症状の人のために、対処方法を先に載せておきます。注意点として以下のすべての内容を行う必要があるかどうかははっきりとわかっていません。

同じ設定でiPhoneのXアプリはつながりiPadは繋がらない。あるいはしばらく繋がってたけど、急に繋がらなくなったなど安定しない時期があり、明確にわかっていないのが現状です。

ただ、最終的にはこの設定で安定的にXアプリが使えるようになりました。

ファイアウォールポリシー(DNS)を設定

  1. ZeroTrustのメニューから、GatewayFirewall policiesDNS を選択。
  2. Add a policy ボタンをクリックし、新規でポリシーを作るフォームを開く。
  3. 以下の設定をする。
    • Policy Name: Allow X Domains(任意)
    • Selector: Domain
    • Operator: in
    • Value: x.com twitter.com api.twitter.com api-stream.twitter.com
    • Action: Allow

ファイアウォールポリシー(HTTP)を設定

  1. ZeroTrustのメニューから、GatewayFirewall policiesDNS を選択。
  2. Add a policy ボタンをクリックし、新規でポリシーを作るフォームを開く。
  3. 以下の設定をする(多いので画像で)。

Split Tunnels の設定

  1. ZeroTrustのメニューから、SettingsWARP Client をクリック。
  2. Device Settings から、Default または自分が作った設定をクリック。
  3. Edit ボタンで編集モードへ。
  4. Split Tunnels の Manage ボタンをクリック。
    • 以降の内容は Split Tunnel が Exclude IPs and domains を選択している前提で書きます。
  5. SelectorDomain を選択し、以下のドメインを一つづつ登録していく。
    • top-api.twitter.com
    • api-stream.twitter.com
    • api.twitter.com
    • probe.twitter.com

Local Domain Fallback の設定

  1. ZeroTrustのメニューから、SettingsWARP Client をクリック。
  2. Device Settings から、Default または自分が作った設定をクリック。
  3. Edit ボタンで編集モードへ。
  4. Local Domain Fallback の Manage ボタンをクリック。
  5. 以下を一つづつ登録する(DNS Servers は空欄のまま)
    • api-stream.twitter.com
    • api.twitter.com
    • probe.twitter.com
    • top-api.twitter.com
    • twitter.com
    • x.com

以上で設定は完了です。

確認

  1. 設定が配信されるまで5分程度待ちます。
  2. 5分経ったら、iPhone(iPad)のCloudflare Warp を一旦オフにします。
  3. また、Xのアプリを完全に落とします。
    • 単にアプリを切り替えるのではなく、完全に落としてください。
    • よくわからない場合は iPhone(iPad)を再起動します。再起動した場合は、iPhone起動後に再度手順2の Cloudfalre Warpをオフにする、を実施してください。
  4. この状態でXアプリで一度タイムラインを取得。リプライや検索もしてみて異常がないことを確認。
  5. Cloudflare Warp をオンにして、Zero Trust を有効にする。
  6. 再度Xアプリでタイムラインを取得したり投稿したりして問題ないことを確認する。

不思議なことですが、Cloudflareの設定変更後、一度Cloudflare Warp を無効にして、Xアプリでタイムラインの取得等を行い、再度Cloudflare WarpをオンにするとXアプリが問題なく使える、という事象がありました。

同じ設定でも上記の手順を踏まないと正常に取得できませんでした。

留意事項

正直言って上の設定は一貫性が無いし、関係ない設定もあるような気がします。
ただ、一部設定を削除するとまた繋がらなくなったりしたので、これ以上は変えないようにして使っています。

推測される原因

ここからは原因の推測ですが、

  1. 2024年9月20日ごろというと、ブラジルでのXの接続がニュースになった頃でもあります。これが何か関係しているのかもしれません。
    2. イーロン・マスクがブラジルでのX(旧Twitter)禁止を回避する方法を発見
  2. Cloudflare Zero Trust のコンソールで設定した後で、同じアカウントのiPhoneはXアプリが繋がるのに、iPadは繋がらない、ということがありました。
  3. ただ、そういう時もWarpをオフにして、Xアプリを完全に落として、起動し直し、再びWarpをオンにする、という手順を行うとつながり、以後はしばらくXアプリが使える、という症状がありました。

このような動きから、DNSの名前解決が何か関係しているのでは無いか(Warpオフの時に名前解決し、以後はその解決結果のIPアドレスを使っている?)、と推測しています。

その考察を元に、上に書いた「Local Domain Fallback の設定」を追加で行ったところ、以後は同様の手順を踏まなくても問題なく繋がっています。

いまいちサッパリしない解決策で申し訳ないのですが、またわかったことがあったら追記します。

また Cloudflare関係者のコメントやネットワークに詳しい識者のアドバイスがありましたらよろしくお願いいたします。

Discussion