📑

はじめての Cloudflare One (2) Agent を用いたDNSフィルタリング

2024/01/31に公開

https://zenn.dev/kameoncloud/articles/032ec7d8572d9f
今日はこちらの記事の続きです。前回はAgentlessでブラウザが名前解決に用いるDNSサーバをCloudflareのGatewayに切り替えることで特定のサイト (例ではgoogle.com) へのアクセスを遮断しました。

この記事ではその続きとしてAgentをインストールしてOS全体でDNSクエリの投げ先を制御します。
CloudflareのAgentはMac、Linux、Windows、Android、iPhoneに対応していますが、残念ながらWindows Serverに対応していないため、以下の手順はiPhoneを用いています。
対応プラットフォームはこちらにまとまっています。
https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/download-warp/

Agent for iOS

iOS用Agentはバイナリは共通なのですが、そのモードによって名前が変わります。ややこしいので以下に簡単にまとめます。

1.1.1.1

Cloudflareは1.1.1.1というDNSリゾルバを運営しており、外部第三者機関の調査によると、世界最速DNSリゾルバとなっています。このモードでCloudflare Agentを動作させると、単純DNS名前解決が高速化するため、WEBへのアクセス全体が高速化します。これはCloudflareのアカウントとは全く無関係に、ユーザーがインストールすることで利用が可能です。

1.1.1.1 with WARP

上記のモードに加えて、インターネットへの通信において、なるべくCloudflareのエッジネットワークを利用するモードです。すべての通信は暗号化されプライベートで保護されます。アクセス先がWEBサイトがCloudflareを用いている場合、すべての通信はCloudflare内部ネットワークで完結させることが出来ますが、アクセス先がCloudflare以外のCDNを用いているかCDNを用いていない場合、最後の通信はインターネットを経由します。

WARP via Local Proxy

iOS / Android では利用できないモードでデスクトップのみで動作します。企業がHTTPSSOCKS5のプロキシーを使っている場合、クライアントからの通信は指定されたプロキシーを経由させます。

WARP+ / WARP+ Unlimited

上記のAgent利用は、無料であり、Cloudflareアカウントの有無関係なくすべてのユーザーがメリットを享受できるものです。一方このWARP+ モードはすべての通信をCloudflare のエッジネットワークを経由し、なおかつCloudflareが提供する輻輳遅延回避アルゴリズムであるArgoスマートルーティングと連携することで、安定した通信を実現させ、1.1.1.1 with WARPに比べてさらに通信を高速化させることが可能です。
(参考)VPNでも400Mbps超! iPhone 11のWi-Fi 6でWireGuardベースのVPNサービス、Cloudflare「WARP」を試す
https://internet.watch.impress.co.jp/docs/column/shimizu/1213143.html

1.1.1.1 with WARPの有償高機能版という位置づけです。WARP+ Unlimitedは技術的違いはなく、月額サブスクリプションで無制限の利用が可能になります。WARP+ の通信料制限は少し特殊で、1人友達を勧誘しWARPをActivateするたびに1G通信が可能となります。友達を勧誘しない場合利用できません。

Cloudflare ZeroTrust 系サービスと WARP

Cloudflare ZeroTrustのクライアントはこのWARPを使います。デバイスにインストールした直後は以下のようにWARPと表示されます。

その後ZeroTrustの設定を投入すると名前がWARPからZeroTrustに変更となります。

(202402/05 追記)
現在は後継のCloudflare Oneというアプリを使うことが推奨されていますが、
ドキュメントがまだ旧バージョンの1.1.1.1を用いているのでそれに従い作業します。
https://apps.apple.com/us/app/cloudflare-one-agent/id6443476492

さっそくやってみる

ではいつも通りやっていきます。まずクライアントWARPがZeroTrust基盤と連携させるための認証の設定です。通常はOkta等とのIDaaSと連携することが多いですが、ここではCloudflareが提供する簡易なEmailによるOneTimePINを設定します。
マネージメントコンソール左ペインから、Zero TrustSettingsをクリックし、Authenticationをクリックします。

Login methodsAdd newをクリックします。

One-time PINをクリックします。

ADDEDになったらBack to Authenticationをクリックします。


以下の通りセットされていれば完了です。

次にWARP Clientをクリックし、Device enrollment permissionsManageをクリックします。

RulesタブでAdd a ruleをクリックします。

適当な名前をRule nameに入力し、以下のように入力しSaveします。

この例は、@cloudflare.comのメールアドレスを持っている人間のみが、認証を通過することができ、クライアントのWARPをZeroTrustの管理配下にセットすることが可能、ということを意味します。
次にWARP Clientをクリックし、Device SettingsDefaultをクリックします。

Configureをクリックします。

Service modeGateway with DOHを選択します。このモードではDNSクエリのみを保護します。すべての通信を保護するいわゆるゼロトラストではGateway with WARPモードを選択することになりますが、この場合設定項目がさらに複雑になるので、後日の記事で触れたいと思います。
それ以外の設定はデフォルトのままSave profileをクリックします。

WARPの設定

以上でCloudflare側の設定が完了しました。まとめると
@cloudflare.comドメインのメールアドレスを持っているユーザーのみが参加できる。
google.comへのアクセスを遮断する。(DNSクエリのみを制御するモード)
・初期設定はメールアドレスによるワンタイムパスワード
になっています。

次にクライアントでWARPをインストールします。App Storeだとcloudflareの名前で検索します。

ダウンロード後初回起動を行うと初期設定が出てきます。

ここからZeroTrustの接続です。

手順1で設定したチーム名を入力します。わからない場合、マネージメントコンソールの以下から確認できます。(Settingscustome page)




ワンタイムパスワードを受け取るためのメールアドレスを入力します。

メールで送られてきたワンタイムパスワードを入力します。

無事設定が完了すれば表示がWARPからZero Trustに代わります。

その後VPNプロファイルのインストール画面が出てきますので画面の指示に従い設定していきます。


以上で設定が完了です。

google.comへのアクセスはブロックされています。

また画面左上を見るとVPN経由でのインターネットアクセスになっていることがわかります。

Discussion