Cloudflare Zero Trust で VPN

前回は Cloudflare Tunnel でWebサイトを公開する方法を紹介しましたが、今回は閉域網につないでみたいと思います。

Cloudflare WARP を用いてVPN的に接続する方法と、Cloudflaredを用いて特定のポートに接続する方法を紹介します。

VMをVPNサーバー的に利用し、外部からVPCサブネットへの接続と、VPC内のSQLServerへの接続をやってみたいと思います。VMをPCに置き換えれば社内や宅内でも使えます!

Cloudflare Tunnel を作成してVMにインストールする

前回と同様に Tunnel を作成してVMに Cloudflared をインストールします。詳細は前回の記事を参照してください。

プライベートネットワーク接続

前回は Public Hostname でしたが今回は Private Network を設定します。

CIDR入力欄にアクセスを許可するサブネットかIPを入力します。複数の登録ができます。

接続できるネットワークを設定する

デフォルトではプライベートネットワークへのアクセスは無効になってるので、先程設定したサブネットへのアクセスを解除します。

SettingsNetwork を開きます。

Split TunnelsManage を開きます。

ついでに ProxyEnabled にしておいてください。後々 Gateway で制御が可能です。

デフォルトでは Exclude mode となっているため、アクセスを許可するサブネットを削除します。

この他にもローカルドメインフォールバックなども利用可能です。

WARPからのトラフィックを除外する

接続できるデバイスを設定する

接続認証を行うための設定を行います。

SettingsDevices を開きます。

Device enrollment permissionsManage を開きます。

Add a rule をクリックしてWARPからの接続を許可する条件を入力します。Saveボタンで保存します。

今回は、hayu.io のドメインのメールアドレスを所有している人のみアクセスできるようにします。

Authentication のタブで何かしらの認証方法が設定されていることを確認してください。今回は One-time PIN で認証します。

WARP をインストールする

接続するクライアント側でWARPを下記URLからダウンロードしてインストールします。

https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/download-warp/

証明書をインストールする

HTTPSでの通信を行う場合は、クライアント側で下記URLの証明書をダウンロードしてインストールします。

https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/install-cloudflare-cert/

WARPでログインする

設定を開く

Login to Cloudflare Zero Trust をクリックしてチーム名を入力する。(🈁.cloudflareaccess.com)

プライバシー条項などに同意をして Device enrollment permissions の条件に含まれるメールアドレスでログインを行います。

WARPをクリックして以下のように Zero Trust と表示されていれば設定完了です。

トグルスイッチを Connected にして、VPCネットワークに接続できれば成功です!

WARP経由のアクセスを判別する

サービス側でWARP経由のアクセスを判別したい事があるかもしれません。そんなときは👇

GatewayPoliciesHTTPCreate an HTTP policy をクリックします。

以下のようにすると、test.hayu.io に WARP経由でアクセスした場合に、X-CF-TEST ヘッダーが追加されます。

この他にも様々なポリシーでルーティングなども利用可能です。

SQL Server に接続してみる

今度はWARPを使用せず特定のサービスと接続をしてみたいと思います。

前回と同様に Public Hostname を設定します。今回はTCPを設定します。

下記URLの cloudflared を接続クライアントにインストールします。

https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/

接続クライアントで以下のコマンドを叩くと、認証画面が開くので認証を行います。

cloudflared access tcp --hostname sqlserver.hayu.io --url localhost:1433

疎通確認するとこれだけで SQLServer に繋がります。

固定IPから接続する場合などで認証をすっ飛ばす(Bypass)場合は、Access → Applications で設定可能です。

まとめ

Cloudflare Zero Trust を使うと外部公開からVPN的な利用まで様々なことができます。厳密にはVPNとは異なりますが、VPNサーバーやトンネルの運用費用を考えるととても手軽に利用できます。

ざっくり紹介してみましたがこれ以外にも様々な機能があります。これだけの機能を無料で使えるのは Cloudflare 様様ですね。