VNC(Virtual Network Computing)サーバーは、コンピューターのデスクトップ環境へのリモートアクセスを提供します。Cloudflare は、クライアント側のソフトウェアや設定なしで、ブラウザー内に VNC ターミナルを描画できます。
ブラウザー描画の VNC では、VNC サーバーを Cloudflare に接続し、公開ホスト名経由でトラフィックをルーティングします。VNC サーバーへアクセスするには、ユーザーは公開ホスト名の URL を開き、設定したアイデンティティプロバイダーで Cloudflare Access にログインします。Cloudflare は Access ポリシー を適用し、許可されたユーザーのブラウザー内に VNC クライアントを描画します。
- Cloudflare 上の 有効なドメイン。
- ドメインが フルセットアップ または パーシャル(
CNAME)セットアップ であること。
このデモでは、Google Cloud Project(GCP)上の Ubuntu 仮想マシン(VM)に TightVNC サーバーを作成します。リモートアクセス向けの軽量デスクトップ環境である XFCE を、VNC サーバーで起動するように設定します。すでに VNC サーバーがある場合は、この手順をスキップして 手順 2 へ進んでください。
-
Ubuntu VM のターミナルを開きます。
-
次のコマンドを実行し、XFCE と TightVNC をインストールします。
sudo apt update sudo apt install xfce4 xfce4-goodies dbus-x11 tightvncserver -yこのコマンドは、デスクトップ、便利なユーティリティ、VNC サーバーソフトウェアをインストールします。
-
VNC サーバーを初期化します。
-
VNC サーバーのインスタンスを作成します。
vncserver -
パスワードの設定を求められます。このパスワードは VNC サーバーへの接続に使います。8 文字までに制限されています。
TightVNC は設定ファイルを作成し、ディスプレイ
:1(ポート5901を使用)で VNC セッションを開始します。 -
閲覧専用パスワードを作成するか聞かれます。不要な場合は
nを押します。 -
設定を編集できるよう、この初期セッションを終了します。
vncserver -kill :1
-
-
VNC が XFCE デスクトップを起動するように設定します。
- ない場合は、VNC の設定ディレクトリを作成します。
mkdir -p ~/.vnc- テキストエディターで
xstartupファイルを開きます。例:
vim ~/.vnc/xstartup- ファイルを次の内容に更新します。
#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS startxfce4- ファイルに実行権限を付けます。
chmod +x ~/.vnc/xstartup -
VNC サーバーを再度起動します。
vncserver -localhost :1-localhostフラグにより、VNC サーバーは VM 自身からの接続だけを待ち受け、パブリック Internet からは待ち受けません。VNC サーバーはポート5901で稼働していますが、VM 内部のlocalhost(127.0.0.1)からだけアクセスできます。 -
(推奨)既存の VNC クライアントで VNC サーバーをテストし、不足パッケージや設定の変更がないか確認します。たとえば、GCP 上の VNC サーバーをテストするには:
-
クライアントマシンでターミナルを開きます。
-
SSH で VNC サーバーに接続し、ローカルのポート
5901を VNC サーバーの待ち受けポートへ転送します。gcloud compute ssh [YOUR_VM_NAME] --zone=[YOUR_ZONE] -- -L 5901:localhost:5901 -
任意の VNC ビューアーアプリケーションを開きます。
-
VNC ビューアーで
localhost:5901に接続し、VNC サーバーのパスワードを入力します。
Ubuntu VM のデスクトップが表示されます。
-
-
(任意)起動時に VNC サーバーを開始するように設定します。
-
vncserverコマンドのフルパスを調べます。which vncserver/usr/bin/vncserver -
新しいサービス設定ファイルを作成します。
sudo vim /etc/systemd/system/[email protected]-
次の内容をコピーして貼り付けます。
[YOUR_USERNAME]を VNC サーバーのユーザーに置き換えます。必要に応じて、/usr/bin/vncserverを実際のvncserverのパスに更新します。[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=[YOUR_USERNAME] WorkingDirectory=/home/[YOUR_USERNAME] PIDFile=/home/[YOUR_USERNAME]/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target- 新しいサービスファイルを読み込むため、
systemdを再読み込みします。
sudo systemctl daemon-reload- 起動時にサービスが開始されるようにします。
sudo systemctl enable [email protected]変数
1は、VNC サービスがディスプレイ:1(ポート5901で稼働)を使うように設定します。- 既定では、
systemdのユーザーサービスはそのユーザーがログインしているときだけ動きます。ログイン前でも起動時に VNC サービスを開始するには、ユーザーの linger を有効にします。
sudo loginctl enable-linger [YOUR_USERNAME]- サービスを開始します。
sudo systemctl start [email protected]- 状態を確認します。
sudo systemctl status [email protected]これで、VM が起動するたびに VNC サーバーが自動で開始されます。
- 新しいサービスファイルを読み込むため、
-
-
ダッシュボードのセットアップガイド に従い、Cloudflare Tunnel を作成します。
-
Networking > Tunnels を開き、対象のトンネルを選択します。
Tunnels を開く ↗ -
Routes タブで Add route を選択し、Published application を選択します。
-
ドロップダウンからドメインを選び、任意のサブドメインを指定します(例:
vnc.example.com)。 -
Service で TCP を選び、
localhost:<5901>を入力します。トンネルをインストールしたマシンと VNC サーバーが別の場合は、<SERVER_IP>:5901を入力します。5901は、VNC サーバーの待ち受けポートに置き換えます。待ち受けポートを確認するには、sudo ss -lnptを実行し、プロセス一覧からvncを探します。 -
ルートを保存します。
これで VNC サーバーは、Cloudflare からの受信リクエストを受け付けられます。
ユーザーがブラウザーからアクセスできる Cloudflare Access アプリケーションを作成します。
-
Cloudflare ダッシュボード ↗ で Zero Trust > Access controls > Applications を開きます。
-
Create new application を選択します。
-
Self-hosted and private を選択します。
-
Add public hostname を選択し、公開アプリケーションのホスト名(
vnc.example.com)を入力します。 -
Allow access through browser-based RDP, SSH, or VNC sessions をオンにし、VNC を選択します。
-
Access policies で、既存のポリシーを追加するか、新しいポリシーを作成して、アプリケーションに接続できるユーザーを制御します。Access アプリケーションはデフォルトで拒否です。ユーザーは Allow ポリシーに一致してからアクセスが許可されます。
-
Create を選択します。
ユーザーは、VNC クライアントソフトウェアをインストールせずに、Web ブラウザーから直接リモートデスクトップ環境へアクセスできます。
VNC サーバーに接続するには:
- ブラウザーを開き、公開ホスト名の URL(例:
https://vnc.example.com)へアクセスします。 - 設定したアイデンティティプロバイダーで Cloudflare Access にログインします。
- VNC サーバーのパスワードを入力します。
ブラウザー内にリモート VNC サーバーのデスクトップが描画されます。接続はすべて Cloudflare のネットワーク経由で保護され、アクセスは Access ポリシーで制御されます。