Closed48

Cloudflareくんとお知り合いになって外部からWindowsマシンへRDPする

NakuReiNakuRei

背景

  • Windows 11 Proのマシンに外出先からリモートデスクトップ接続したい
  • 最初はDDNSとかポート開放とかしようとしたが、回線の契約上グローバルIPアドレスが手に入らなくて詰んだ
  • Cloudflareを使うとグローバルIPアドレス無くてもリモートデスクトップ接続できるらしい

現在のレベル

  • 自宅回線内であればリモートデスクトップ接続できるようになっている
  • Cloudflareくんのことはまったく知らない。他人レベル。
NakuReiNakuRei

Cloudflare Tunnelを使用して、サーバーからCloudflareのエッジへの安全な送信専用接続を作成できます。これには、cloudflaredサーバー上でデーモンを実行する必要があります。ユーザーは、デバイスにCloudflare WARPクライアントをインストールし、ゼロトラスト組織に登録することでサービスを利用できます。リモート デバイスは、あたかもプライベート ネットワーク上にあるかのように接続できるようになります。デフォルトでは、特定のユーザーを許可またはブロックするポリシーを作成しない限り、組織に登録されているすべてのデバイスがサービスにアクセスできます

引用元 : https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/use-cases/rdp/
Google訳

NakuReiNakuRei

今の理解

  • クライアントはCloudflare WARPクライアントをインストールし、Zero Trust組織(?)に登録することでサービスを利用できる
  • サーバーはCloudflaredサーバーを実行する必要があり、Cloudflaredサーバー上でデーモン(?)を実行する必要がある
  • CloudflaredサーバーがCloudflare Tunnelを使っていい感じに通信する。
  • ポリシーをきちんと設定しないと全デバイスに公開されてしまう
NakuReiNakuRei

今の理解

  • サーバーは、Cloudflare TunnelによってCloudflareのグローバルネットワークに接続される
    • これはサーバー上でcloudflaredデーモンを実行することで行われる
    • 簡単に言うと、Cloudflare TunnelはプライベートネットワークをCloudflareに接続するもの
  • クライアント側では、エンドユーザーはCloudflare WARPクライアントを使用して、Cloudflareのグローバルネットワークに接続する
NakuReiNakuRei

つまり、サーバーとクライアントを両方Cloudflareのグローバルネットワークに接続して、いい感じに通信するってことかな?

NakuReiNakuRei

とりあえずCloudflareのアカウントを作ってログイン

NakuReiNakuRei

Zero Trustを選択するとTeam nameを決めるように言われたので適当に決めた。

NakuReiNakuRei

接続したいPC(サーバー)側はWindows11 Proなので、RDPのサーバーはすでに入っている。Windows11の設定からリモートデスクトップを有効化しておく。

NakuReiNakuRei

接続するPC(クライアント)側もWindows11なので、リモートデスクトップ接続のクライアントアプリはデフォルトで入っている。それを使う。

NakuReiNakuRei

つまり、"Connect to RDP server with WARP to Tunnel"からが新しい設定だと思われる

NakuReiNakuRei

Cloudflare Tunnelを使用すると、サーバーからCloudflareのエッジへのセキュアなアウトバウンド専用接続を作成できます。これにはサーバー上でcloudflaredデーモンを実行する必要があります。ユーザーはデバイスにCloudflare WARPクライアントをインストールし、Zero Trust組織に登録することでサービスにアクセスします。リモートデバイスは、あたかもプライベートネットワーク上にあるかのように接続することができます。デフォルトでは、特定のユーザーを許可またはブロックするポリシーを作成しない限り、組織に登録されたすべてのデバイスがサービスにアクセスできます。

引用元 : https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/use-cases/rdp/#connect-to-rdp-server-with-warp-to-tunnel
DeepL訳

NakuReiNakuRei

今の理解

必要な操作は下記かな?

  • サーバー側はcloudflareデーモンを実行する
  • クライアント側にはWARPクライアントをインストールする
  • Zero Trust組織にクライアントデバイスを登録する
  • 特定のユーザーを許可またはブロックするポリシーを作成する
NakuReiNakuRei

まずはサーバーでcloudflareデーモンを実行するようにする。
Cloudflare Zero TrustのAccess -> Tunnelsを見る


NakuReiNakuRei

Cloudflaredのインストールと認証をする。上記のCloudflaredのリンクをクリックするとDownloadsに移動し、それぞれのOSごとのダウンロードができる。
今回はWindows 64bitのcloudflaredインストーラをダウンロードした。

NakuReiNakuRei

インストーラを実行。管理者権限がいる。
何の画面も出ずにインストールが終わった…

NakuReiNakuRei

cloudflaredコマンドを実行してみるときちんと実行されたので、インストールはできていそう。

> cloudflared --version
cloudflared version 2023.10.0 (built 2023-10-31-1231 UTC)
NakuReiNakuRei

Add a tunnelをクリック。トンネル名を決める。わかりやすけば問題なさそう。決めたらSave tunnelボタンをクリック。

NakuReiNakuRei

すると環境の選択画面になる。Windowsの場合は結局cloudflaredをインストールする必要があるようだ。じゃあ問題ないか。

NakuReiNakuRei

cloudflareのインストーラを実行し、管理者権限でコマンドプロンプトを開き、表示されているコマンドを実行する。注意書きにあるようにコマンドに書かれたtokenの情報は流出するとヤバイので割愛。

すでにcloudflareのインストーラは実行済みなので、管理者権限でコマンドプロンプトを開き、表示されているコマンドを実行した。

> cloudflared.exe service install 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2023-12-28T16:18:04Z INF Installing cloudflared Windows service
2023-12-28T16:18:04Z INF cloudflared agent service is installed windowsServiceName=Cloudflared
2023-12-28T16:18:05Z INF Agent service for cloudflared installed successfully windowsServiceName=Cloudflared
NakuReiNakuRei

successfullyとあるし成功してそう。
Cloudflareの方でConnectorsにConnectedなデバイスが出てきた。
ここまでサイト通り

NakuReiNakuRei

Nextをクリックすると、Route tunnelの画面に移行した。このサイトによると接続したいのがアプリケーションなのかネットワークなのかでやり方が異なるようだ。
今回接続したいのはネットワークなので、Private NetworksでCIDRかIPを指定する。

NakuReiNakuRei

Save tunnelボタンをクリックすると、画面がTunnelsに遷移する。
StatusがHEALTHYなTunnelができていれば成功。

NakuReiNakuRei

次に、クライアント側にWARPクライアントをインストールする。
Setting -> Downloadsを開き、WARPクライアントをインストールする。
今回はWindows版のrelease版

NakuReiNakuRei

ダウンロードしたインストーラを実行。管理者権限がいる。
インストールするとWARPが起動する。規約に同意すると次の画面が出る。

NakuReiNakuRei

歯車マークから環境設定を開く。アカウントタブからCloudflare Zero Trustにログインする。

…できない…

NakuReiNakuRei

入力したteam名は合っているので、デバイス登録ポリシーが原因っぽい

NakuReiNakuRei

Settings -> WARP ClientからDevice enrollment permissionsを変更する。

NakuReiNakuRei

ルールを追加した後に再度WARPの環境設定->アカウントタブからCloudflare Zero Trustにログインすると無事ログインできた。

NakuReiNakuRei

このサイトによると、リモートアクセス先のアドレスがWarpのSplitTunnel設定に含まれる場合は削除する必要があるようだ。

NakuReiNakuRei

Settings -> WARP Clientから、Device settingsのProfile settingsを変更する

NakuReiNakuRei

もともとあったDefaultの設定を複製して、Split Tunnelsの設定から192.168.0.0/16の設定を削除した

このスクラップは4ヶ月前にクローズされました