Cloudflare Zero TrustでリモートアクセスVPNのようなことをする

この記事はQiitaからの移行記事です。

CloudflareのCloudflare Zero Trustというサービスを使って自宅サーバーを管理できるようにしてみました。 なお、ここで説明することはすべてCloudflare Docsに書いてあります。ぜひそちらもお読みください。
Connect private networks - Cloudflare Zero Trust docs

概要

以下の図のようにCloudflaredとCloudflare WARPを使用して自宅のネットワークにアクセスできるようにします。 スクリーンショット 2022-06-27 152728.png

前提

Cloudflareのアカウントを持っていること ドメインを持っており、ネームサーバーをCloudflareに向けてあること Cloudflare Zero Trustの初期設定が済んでいること

ここではこれらの説明は割愛します。 Cloudflare Zero Trustの初期設定に関しては以下を参照してください。
Get started - Cloudflare Zero Trust docs

環境

Proxmox VE上のVM, Oracle Linux 8.6

Cloudflaredのインストール

自宅サーバーにCloudflaredをインストールします。 他のOSやCPUを使用している場合は適宜読み替えてください。 ここから先はsu -sudo su -などでrootで作業することをお勧めします。(後でデーモン化するときに楽なので)

Downloads - Cloudflare Zero Trust docs

任意のフォルダーにwgetでダウンロードし、インストールします。

1
2
3
4
5
6
7
#Debian
$ wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
$ apt install ./cloudflared-linux-amd64.deb

#RHEL
$ wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
$ dnf install ./cloudflared-linux-x86_64.rpm

これでインストールは完了です。

Cloudflareにログイン

1
$ cloudflared tunnel login

ログイン用のURLが表示されるので任意の端末のブラウザでアクセスし、認証を行います。

Cloudflare Edgeとトンネルを張る

トンネルを作成します

toyohashi-networkの部分は好きな名称で構いません。

1
$ cloudflared tunnel create toyohashi-network

最下段に表示されるUUIDをコピーします。後程使います。

自宅サーバーのネットワーク登録

IP/CIDRはご自身の環境に合わせて変更してください。

1
$ cloudflared tunnel route ip add 192.168.1.0/24 toyohashi-network

ルートが正常に登録されているか確認します。

1
$ cloudflared tunnel route ip show

トンネルの設定

任意のテキストエディタを使用して/root/.cloudflared/config.ymlを編集します。

1
$ vim /root/.cloudflared/config.yml

新しくファイルが作成されます。次のように書き込みます。

1
2
3
4
tunnel: <コピーしておいたUUID>
credentials-file: /root/.cloudflared/<コピーしておいたUUID>.json
warp-routing:
    enabled: true

iで編集モードに移行し、Escで編集モードを終了します。 :wqで保存して終了します。

実行

1
$ cloudflared tunnel run toyohashi-network

これでCloudflare Edgeとトンネルを張れるはずです。 Ctrl+Cで終了できます。

デーモン化

先ほどの方法ではSSH接続を終了してしまうと、Cloudflareとの接続が切断されてしまいます。 デーモン化をして再起動時に自動で実行したり、バックグラウンドで動作してもらうようにします。

1
$ cloudflared service install

自動起動の設定と起動

1
2
$ systemctl enable cloudflared
$ systemctl start cloudflared

念のためちゃんと動作しているのか確認してみましょう。

1
$ systemctl status cloudflared

これでサーバー側の設定は完了です。 次にクライアント側の設定を行います。

環境

Windows 11 その他のOSである場合は適宜読み替えてください。

Cloudflare WARPの導入

Cloudflare WARPを使って最寄りのCloudflare Edgeに接続し、Cloudflare経由で自宅サーバーのネットワークにアクセスできるようにします。 まずは以下からCloudflare WARPクライアントを導入します。 1.1.1.1 — The free app that makes your Internet faster.

Cloudflare Zero Trustの設定

ここ からCloudflare Zero Trustダッシュボードにアクセスします。 My Team > Devicesから諸々の設定を行います。

Settings > Network > Firewall のProxyをEnableにします。

Cloudflare WARPの設定

証明書のインストールを行います。 以下から証明書をダウンロードしてインストールしてください。 Install the Cloudflare certificate - Cloudflare Zero Trust docs

タスクバーのWARPクライアントをクリックし、設定を開きます。 環境設定 > アカウントからCloudflare Zero Trustの初期設定時に設定したチーム名を入力してCloudflare Zero Trustにログインします。

これでWARPクライアントの設定は完了です。

スプリットトンネルの設定

Cloudflare WARPでは初期設定で192.168.x.xなどのプライベートIPアドレスへの通信は除外されるようになっています。 今回はCloudflare経由で通信を行いたいのでこの除外の設定を削除する必要があります。

Cloudflare Zero Trustダッシュボード を開きます。 Settings > Network > Firewall > Split Tunnels > Manage で(1)で設定したIP/CIDRを削除します。

これで設定は完了です。

動作確認

スマートフォンのテザリングなどで自宅のネットワークとは別の環境を作ってWARPクライアントのトグルをオンにします。 ルーターのIPアドレスなど適当なIPアドレスを叩いてみましょう。 表示されれば成功です。

↓ 外出先から自宅のルーターの設定画面を開けた スクリーンショット 2022-06-27 132124.png

もちろん外出先でProxmoxの管理画面も表示できます。 スクリーンショット 2022-06-27 132556.png

Built with Hugo
テーマ StackJimmy によって設計されています。