3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudflare Zero Trustを利用して外部ネットワークから自宅サーバにSSHする

Last updated at Posted at 2024-12-09

Cloudflare Zero Trustを利用して、自宅サーバに対して、外部のネットワークからSSHする手順です。

事前準備

あらかじめCloudflareのアカウント作成とZero Trustの有効化を行っておく。

実装

1. Cloudflareでトンネルの作成

はじめにCloudflareでVPNのトンネルを作成する

「Zero Trust」のダッシュボードに移動し、「Network > Tunnulens」に遷移する

「Tnunnel name」は自分が分かるように任意の名称を入力する。

create-tunnel-1.png

Cloudflareと接続するクライアントのをサーバにインストールするためのコマンドが表示される。
このコマンドは後の手順で利用するので控えておく。

install-client.png

画面右下部の「Next」を選択すると最後にルーティング方法を選択する画面に遷移する。

今回は、自宅サーバーのネットワークに接続するため「Private Network」を選択する。
CIDRは接続する自宅サーバーが所属するのネットワークのCIDRを記載する。

スクリーンショット 2024-11-24 18.17.41.png

CIDRは、接続したい自宅サーバ上でipコマンドを利用することで確認ができる

ip addr
~~省略~~
1: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 68:1d:ef:25:72:ad brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.150/24 brd 192.168.2.255 scope global noprefixroute eno1 # ここで確認
       valid_lft forever preferred_lft forever
    inet6 fd44:28ec:e1e8:4a97:6a1d:efff:fe25:72ad/64 scope global dynamic noprefixroute
       valid_lft 1664sec preferred_lft 1664sec
    inet6 fe80::6a1d:efff:fe25:72ad/64 scope link noprefixroute

2. 自宅サーバにCloudflareのクライアントをインストール

自宅サーバーにCloudflareのクライアントをインストールする。

以降の手順はCentOS7にインストールする手順となる。

sudo yum install yum-utils
sudo yum-config-manager --add-repo https://pkg.cloudflare.com/cloudflared-ascii.repo
sudo yum install cloudflared

自宅サーバが他のOSの場合は、以下の公式ドキュメントの該当のOSの章を参照

インストールが完了したら、インストールした端末をCloudflareのトンネルに接続する。

Cloudflareの画面の「Network > Tnunnels」の「Install and run a connector」よりインストールコマンドを取得し、実行する

sudo cloudflared service install ${トークン}

Systemdを確認しプロセスが正常な状態であることを確認する。

systemctl status cloudflared

● cloudflared.service - cloudflared
   Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2024-11-24 17:24:58 JST; 45min ago
 Main PID: 741192 (cloudflared)
    Tasks: 8 (limit: 48452)
   Memory: 16.2M
   CGroup: /system.slice/cloudflared.service
   ~~~省略~~~

Cloduflaredの自動起動設定も同時に設定されているため、サーバが再起動してた場合も自動でTunnelが再接続される。

「Network > Tnunnels」から詳細を確認し「Hostname」の欄に、インストールした端末の自宅サーバーのホスト名が表示されていれば疎通は完了となる。

スクリーンショット 2024-11-24 18.48.12.png

WARP Clientの設定

デバイスポリシーの登録

はじめにVPNに接続可能なデバイスポリシーの登録を行う。

「Settings > WARP Client」を選択する。

スクリーンショット 2024-11-24 18.23.26.png

「Device enrollment > Device enrollement permissions」より「Manage」を選択する。

スクリーンショット 2024-11-24 18.23.34.png

「Add a role」を選択する。

スクリーンショット 2024-11-24 18.23.46.png

ロールを作成する。今回は日本からのアクセスに限定するため、以下のように設定した

  • Selector: Coutnry
  • Value: Japan

スクリーンショット 2024-11-24 18.24.05.png

設定が完了したら「Save」をクリックする。こちらでロールの作成は完了となる。

Split Tunnelsの設定

デフォルトではZero Trustトンネルの接続の設定で、192.168.0.0/1610.0.0.0/8にルーティングがされないように設定されている。

その設定を解除しないとトンネルに接続しても自宅サーバに接続できない。指定した自宅サーバのCIDRだけを除外するように設定する。

「WARP Client > Device settings」より「Default」の設定を選択、3点リーダーより「Configure」をクリックする。

スクリーンショット 2024-11-24 18.39.09.png

「Split Tunnels」の「Manage」を選択

スクリーンショット 2024-11-24 18.33.17.png

除外されているIPアドレスの一覧が出てくるので、この中からおうちサーバが属するCIDRを選択し削除する。(添付した画像は192.168.0.0/16を削除済み)

スクリーンショット 2024-11-24 18.33.33.png

ダッシュボード上で実施する作業は完了となる

3. WARP Clientの設定

接続元の端末に、自宅サーバに接続するために必要なWARP Client(WARP)をインストールする。

Macの場合、WARPはbrewからもインストールが可能なので以下のコマンドでインストールする。

brew install --cask cloudflare-warp

インストールが完了したら「Preferences > Account」に移動する。
画面赤枠の「Login to Cloudflare Zero Trust」をクリックする。

login-cloduflare-1.png

チーム名の入力が求められる。「Team Name」はZero Trustsを作成したときのチーム名を入力する。
例えば、XYZ.cloudflare.comの名前でチームを作成した場合はXYZと入力する

login-cloduflare-2.png

ブラウザが起動し、Cloudflareのログインが実行される。無事ログインができている場合「Zero Trust」が起動し「Connected」と表示される。

login-cloduflare-3.png

4. SSHログイン

WARP Clientを「Connected」にした状態で、外部のネットワークからSSHをすれば自宅サーバに接続が可能となる。

% ssh ${ユーザ名}@${自宅サーバのIP Address}
Last login: Sun Nov 24 21:50:07 2024 from ${自宅サーバのIP Address}
[${ユーザ名}@${自宅サーバのIP Address} ~]$

参考

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?