Cloudflare Tunnelは外部から、内部のプライベートネットワーク内のリソースに安全にアクセスする方法になります。
DSM、アプリケーション、ルータ等のへのアクセスがこのトンネルを使って可能になります。
接続図は下図の様になります。
■これは[Cloudflare Tunnel]と[仮想クライアント]間のトンネルで、Synologyの場合は[仮想クライアント]は[Docker]になります。
但し[Docker]はDSM7.1までの名称で、DSM7.2からは[Container Manager]に改名されています。
■[Cloudflare Tunnel]は従来の[VPN]と違いルータでのポート開放等の作業は不要です。
1.CloudflareにTunnelを作成する
1.Cloudflareのホーム画面に入ります。
■左ペインの[zero Trust]をクリックします。
2.Team domain名を設定します。
始めて[zero Trust]を起動した時だけチーム名を入力する画面が表示されます。
■任意名称を入力します。この名前は全世界でユニークな名前が求められます。
■[Next]ボタンを挿入して下さい。
3.[zero Trust]のメニュが表示されます
■[Access→Tunnel]をクリックします。
4.トンネルの作成画面が表示されます。
■[Add Tunnel]ボタンを挿入します。
5.トンネル名を入力する画面が表示されます。
■トンネル名を入力して[Save tunnel]ボタンを挿入します。
この中に複数の[Public hostnames]を設定するので、トンネル名はサーバ名で指定する事をお勧めします。
■[Docker]をクリックすると、[Docker]用の接続コマンドが表示されます。
■コピーボタンでクリップボードに取り込み[Emeditor]等に貼り付けて下さい。
コマンドは下記の2つのコマンドから構成されています。
docker run cloudflare/cloudflared:latest
tunnel --no-autoupdate run --token eyJhIjoiMGY1YjIxMGNiOTA1OGMxZWM4M2RlZmZk 以下は省略
■赤字の所は[Docker]の起動コマンドです。
Synologyの場合は[Docker]が既に立ち上がっているのでこの部分は削除して下さい。
■編集したコマンドをSynologyのDockerの実行コマンド欄に貼り付ける事により、CloudflareとSynologyの[Docker]間にトンネルが作成されます。
2.Synology側で[Docker]コンテナを作成する
SynologyのDSM7.1までは[Docker]でしたがDSM7.2からは[Container Manager]に変更になっています。
ここではDSM7.1のDocker環境で説明します。
1.[Docker]をインストールして起動します。
下記画面が表示されます。
■左ペインのメニューで [レジストリ] をクリックします。
2.下記の画面の検索ボックスで[Cloudflare]で検索します。
■レジストリメニュ画面の右上の検索BOXに[Cloudflare]を指定して検索して下さい。
■画面の先頭に[Cloudflare/Cloudflared]が表示されます。Cloudflaredは[cloudflare daemon]の略でこれを使ってCloudflareと接続する事になります。
[参考情報]
画面の右側にリンクマークがあり、これをクリックすると何を行う仮想ホストかの説明文書にジャンプする事ができます。
3.Cloudflare/Cloudflaredをダウンロードします。
■Cloudflare/Cloudflaredを選択し[ダウンロード]ボタンを挿入します。
下記画面が表示されます。
■latest(最新)で[選択]ボタンを挿入して下さい。
イメージに1個の仮想ホストが追加されます。
■[イメージ]メニュをクリックします。
4.Cloudflare/Cloudflaredの設定
①Cloudflare/Cloudflaredの起動
■[Cloudflare/Cloudflared]を選択し[起動]ボタンを挿入します。
②コンテナをどのネットワーク環境で使うかの選択画面が表示されます。
■上記の2つの選択はいずれを使っても問題ありません。どちらかを選択し[次へ]で先に進みます。
③コマンドを登録する画面が表示されます。
■自動再起動に✓を付けます。付けなくても問題ありません。
■[詳細設定]をクリックします。
④実行コマンドを登録する画面が表示されます。
■実行コマンドタブを開きます。
■ここがポイントです。コマンド欄にCloudflareで編集した実行コマンドをコピーしてここに貼り付けます。
■[保存]ボタンを挿入します。
[Container Manager]の場合
Dockerは[実行コマンド]タブの中で指定しますが、[Container Manager]はタブ形式でなくフラットな入力画面になっています。
その中に実行コマンドを登録する所があります。ここに入力します。
⑤全般設定画面に戻ります。
■[次へ]のボタンで先に進みます。
⑥ボリューム設定画面が開きます。
■[次へ]のボタンで先に進みます。
⑦確認画面が表示されます。
■完了ボタンを挿入します。
⑧コンテナ画面を見てください。
■既に、Cloudflareと接続されている事が確認できます。
3.Public hostnamesを設定する
ここでは[Cloudflare]と[Docker]間で作成されたトンネルを使って、どの様な内部リソースに接続するか?の設定を行います。
1.Cloudflareの画面に戻ります。
■[Back to tonnel]をクリックします。
2.下記画面が表示されます。
■StatusがHEALTHY(健康)は、SynologyのDockerが正常に繋がっている事を表します。
繋がってない場合は、赤表示になります。
ここから具体的な内部リソースの設定を行っていきます。
3.トンネルの編集画面に入ります
■編集したいトンネルをクリックするとダイアログが表示されます。
■ダイアログの[configure]をクリックします。
4.下記画面が表示されます。
■[Public hostname]をクリックします。
5.下記画面が表示されます。
①Subdomain:任意の名前を入力します。
トンネルは複数設定されるので何を行うサブドメインかが判る名前にして下さい。
②Domain:▼をクリックして利用するドメインを選択します。
ここで選択されドメインのDNSレコードに①のサブドメイン名がCNAMEで追加されます。
③Path:ここで指定したパス以外はこのURLを使えないように制限します。
④Type:▼をクリックし通信のタイプを選択します。
HTTP,HTTPS等
⑤URL:下記を参照して指定して下さい
下記はHTTPでアクセスする時のアンプルです。
用途 | URLサンプル | 備考 |
DSMアクセス | http://192.168.1.200:5000 | DSMにログインする時に利用します。
ポート番号は[コントロールパネル→ログインポータル→DSMタブ]で確認して下さい。 |
WebDAV接続 | http://192.168.1.200:5005 | WebDAVでアクセスする時に利用します。
ポート番号はWebDAV Serverで確認して下さい。 |
phpmyadmin | http://192.168.1.200:80 | phpmyadminにアクセスする時に利用します。
pathに[phpmyadmin]を指定しておくとそれ以外のパスへのアクセスには利用できなくなります。 |
ルータアクセス | http://192.168.1.1 | ルータにアクセスする時に利用します。 |