6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CloudflareAdvent Calendar 2021

Day 6

Cloudflare を使って WARP する (飛ぶぞ)

Last updated at Posted at 2021-12-05

Cloudflare WARP クライアントをつかった WARP の方法を列記します。
(WARP = Cloudflare 経由で通信のプライバシーを保護する)

#DNS を WARP

端末に設定されたフルリゾルバに DNS クエリ(UDP/TCP 53)を送信する代わりに、Cloudflare との暗号化チャネル上で DNS クエリを送信します。

暗号化チャネルは選択が可能です。

Protocol SNI Port
TLS cloudflare-dns.com TCP 853
HTTPS cloudflare-dns.com TCP 443

WARP クライアントの設定は 1.1.1.1 を選択します。

Screen Shot 2021-12-05 at 17.27.16.png

Preferences > Connection > DNS ProtocolTLS を選択してみます。

Screen Shot 2021-12-05 at 17.33.25.png

DNS クエリを送信し、パケットをキャプチャすると UDP 53 での送信はされず、下記の SNI を使い TLS コネクション (Port 853 TCP) 上でやり取りされていることが確認できます。

Screen Shot 2021-12-05 at 17.29.13.png

HTTPS を選択すると、違うポート (Port 443 TCP) で TLS コネクションが張られます。

Screen Shot 2021-12-05 at 17.41.44.png

#全部を WARP
DNS を含めたすべてのアプリケーション通信を Cloudflare との暗号化チャンネル経由やり取りすることができます。

WARP クライアントの設定は下記の 1.1.1.1 with WARP を選択します。

Screen Shot 2021-12-05 at 17.58.24.png

Preferences > Connection > DNS Protocol では WARP が選択されています。

Screen Shot 2021-12-05 at 17.59.38.png

パケットキャプチャを見てみると、すべての通信が WARP トンネル (WireGuard プロトコル Port 2408 UDP) で Cloudflare 経由でやり取りされています。

Screen Shot 2021-12-05 at 18.04.55.png

##例外
実際にはすべてのプロトコルではなく、宛先に応じて WARP トンネルインタフェースの利用が選択されています。ローカルインターフェスに直接送信される宛先は下記で確認できます。

Preferences > Advanced > Network

Screen Shot 2021-12-05 at 18.06.10.png

設定項目 内容
Split Tunnels 指定する IP やドメインあての通信は WARP せず、ローカルインターフェースに投げる
Local Domain Fallback 指定するドメインはローカルのフルリゾルバで名前解決をする(DNS の WARP をやめる)

###Split Tunnels

Screen Shot 2021-12-05 at 18.06.38.png

Domain を追加してみます。
Screen Shot 2021-12-05 at 20.31.46.png

当該ドメインのホストに HTTP リクエストをすると、WARP トンネルインターフェースでなく、ローカルインターフェースから直接アクセスがされています。
Screen Shot 2021-12-05 at 18.09.04.png

###Local Domain Fallback

Screen Shot 2021-12-05 at 18.14.15.png

デフォルトで登録してある *.intranet のホストに DNS クエリを投げると、ローカルのリゾルバに直接クエリが送信されており、暗号化されていないクエリの内容を確認することができます。
Screen Shot 2021-12-05 at 18.15.46.png

#特定プロトコルを WARP

Proxy Mode を選択することで、特定のプロトコルを Cloudflare 経由で WARP させることができます。
Proxy Protocol は HTTP および SOCKS5 を利用することができます。
Cloudflare との Proxy 接続は WARP トンネル上で行われるため、暗号化されます。

Preferences > Advanced > Network > Configure Proxy Mode で設定を行います。

Screen Shot 2021-12-05 at 18.17.02.png

デフォルトでは Port 40000 (TCP) がリスナーとして指定されています。
Enable proxy mode on this device を有効化します。

Screen Shot 2021-12-05 at 18.18.02.png

有効にすると、下記の WARP via Local Proxy が出現するので、選択します。

Screen Shot 2021-12-05 at 18.22.38.png

転送できるアプリケーションと Proxy プロトコルの関係は以下のとおりです。

Proxy プロトコル 転送することのできるアプリケーション Cloudflare とのやり取り
HTTP HTTPS (HTTP は転送しません、HTTP の場合は SOCKS5 を利用します) WARP トンネルで暗号化
SOCKS5 TCP WARP トンネルで暗号化

##HTTP Proxy
Screen Shot 2021-12-05 at 18.29.52.png

##SOCKS5 Proxy
Screen Shot 2021-12-05 at 21.07.20.png

curl の --socks5 オプションの場合、宛先ホストの DNS 解決をローカルで行うため下記の DNS クエリが確認されました。
Screen Shot 2021-12-05 at 21.09.05.png

#まとめ
以上、Cloudflare WARP クライアントを使って WARP する方法について簡単に紹介しました。
1.1.1.1 for Families でのコンテンツフィルタリングやマウルウェア防御、Cloudflare for Teams をつかったさらなるパーソナライゼーションには触れていませんが、ご興味があればぜひともお試しください。

#リンク
##1.1.1.1
https://1.1.1.1/
https://developers.cloudflare.com/1.1.1.1/
https://www.cloudflare.com/ja-jp/learning/dns/dns-over-tls/
https://blog.cloudflare.com/announcing-warp-for-linux-and-proxy-mode/
https://blog.cloudflare.com/introducing-1-1-1-1-for-families/
##Cloudflare for Teams
https://www.cloudflare.com/ja-jp/teams/
https://developers.cloudflare.com/cloudflare-one/

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?