はじめての Cloudflare One (2) Agent を用いたDNSフィルタリング
今日はこちらの記事の続きです。前回はAgentlessでブラウザが名前解決に用いるDNSサーバをCloudflareのGatewayに切り替えることで特定のサイト (例ではgoogle.com) へのアクセスを遮断しました。
この記事ではその続きとしてAgentをインストールしてOS全体でDNSクエリの投げ先を制御します。
CloudflareのAgentはMac、Linux、Windows、Android、iPhoneに対応していますが、残念ながらWindows Serverに対応していないため、以下の手順はiPhoneを用いています。
対応プラットフォームはこちらにまとまっています。
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 では利用できないモードでデスクトップのみで動作します。企業がHTTPS
やSOCKS5
のプロキシーを使っている場合、クライアントからの通信は指定されたプロキシーを経由させます。
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」を試す
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を用いているのでそれに従い作業します。
さっそくやってみる
ではいつも通りやっていきます。まずクライアントWARPがZeroTrust基盤と連携させるための認証の設定です。通常はOkta等とのIDaaSと連携することが多いですが、ここではCloudflareが提供する簡易なEmailによるOneTimePINを設定します。
マネージメントコンソール左ペインから、Zero Trust
→Settings
をクリックし、Authentication
をクリックします。
Login methods
のAdd new
をクリックします。
One-time PIN
をクリックします。
ADDED
になったらBack to Authentication
をクリックします。
以下の通りセットされていれば完了です。
次にWARP Client
をクリックし、Device enrollment permissions
のManage
をクリックします。
Rules
タブでAdd a rule
をクリックします。
適当な名前をRule name
に入力し、以下のように入力しSave
します。
この例は、@cloudflare.com
のメールアドレスを持っている人間のみが、認証を通過することができ、クライアントのWARPをZeroTrustの管理配下にセットすることが可能、ということを意味します。皆さんが持っているメールアドレス用に書き換えておいてください。
次にSettings
→WARP Client
をクリックし、Device Settings
のDefault
をクリックします。
Edit
をクリックします。
Service mode
でGateway with DOH
を選択します。このモードではDNSクエリのみを保護します。すべての通信を保護するいわゆるゼロトラストではGateway with WARP
モードを選択することになりますが、この場合設定項目がさらに複雑になるので、後日の記事で触れたいと思います。
それ以外の設定はデフォルトのままSave profile
をクリックします。
WARPの設定
以上でCloudflare側の設定が完了しました。まとめると
・@cloudflare.com
ドメインのメールアドレスを持っているユーザーのみが参加できる。
・google.com
へのアクセスを遮断する。(DNSクエリのみを制御するモード)
・初期設定はメールアドレスによるワンタイムパスワード
になっています。
次にクライアントでWARPをインストールします。App Storeだとcloudflare
の名前で検索します。
ダウンロード後初回起動を行うと初期設定が出てきます。
ここからZeroTrustの接続です。
手順1で設定したチーム名を入力します。わからない場合、マネージメントコンソールの以下から確認できます。(Settings
→custome page
)
ワンタイムパスワードを受け取るためのメールアドレスを入力します。
メールで送られてきたワンタイムパスワードを入力します。
無事設定が完了すれば表示がWARPからZero Trustに代わります。
その後VPNプロファイルのインストール画面が出てきますので画面の指示に従い設定していきます。
以上で設定が完了です。
google.com
へのアクセスはブロックされています。
また画面左上を見るとVPN経由でのインターネットアクセスになっていることがわかります。
Discussion