我が家では、写真やドキュメントの管理・保管に Synology NAS を利用しています。 これまでインターネットから自宅内のSynologyNASにアクセスするために、DDNS(Dynamic DNS)と呼ばれる仕組みを利用していましたが、セキュリティの向上を目的にCloudflare Tunnelを利用した仕組みに変更しました。

この記事ではCloudflare Tunnelを利用してインターネットから自宅内のSynologyNASにアクセスする方法を紹介します。

はじめに

Synology NASへのインターネットからのアクセス方法として、公式にはQuickConnectとDDNSを利用した方法が紹介されています( ドキュメント)。

ざっくりと、QuickConnectは設定は簡単だが低速、DDNSは設定が多少複雑だが高速という特徴があります。

我が家ではこれまでDDNSを利用していましたが、DDNSでは設定したドメイン名に自宅のIPアドレスが直接紐づくため、外部に自宅のIPアドレスが公開されている状況でした。 複数のサーバーを自宅内に持っていることもあり、IPアドレスが公開されていることにセキュリティ面で気になったので、自宅のIPアドレスを隠ぺいできるCloudflareTunnelを利用してみました。

Cloudflare Tunnelについて

Cloudflare Tunnelは、Cloudflare社のネットワークとcloudflaredデーモンを利用することで、自宅のIPアドレスを公開しない&インバウンドのポート開けをせずに、インターネットから自宅内のサーバーにセキュアに接続できる仕組みです。(下画像、公式サイトの概要図

Cloudflare Tunnelの仕組み

上画像のように、外部からのリクエストはまずCloudflare社のサーバーに届きます。そして、次にPrivateNetwork内のcloudflaredデーモンを起動しているサーバーに届き、最後に目的のサーバーにリクエストが届きます。

今回のSynology NASの例では、下記によってこの仕組みを実現します。

  • Synology NASのDockerコンテナ上でcloudflaredデーモンを起動
  • 目的のサーバーをSynology NASのDSMに設定

Synology NAS + Cloudflare Tunnelの設定方法

まず、前提としてCloudflareのアカウント登録と、独自ドメインの取得が必要です。

Cloudflareの公式サイトを参考に、アカウントの作成と独自ドメインの登録/移管を行います。

Cloudflare Tunnelの作成

まず、Cloudflareのポータルサイトから、Tunnelの設定を行います。

Zero Trust > ネットワーク > Tunnelsに移動して、「トンネルを作成する」ボタンを押下します。

トンネルの種類で「Cloudflared」を選択し、トンネルに任意の名前を付けて「トンネルを保存」を押下します。

コネクタをインストールして実行する、という画面でDockerを選択し、コマンドをコピーします。

Dockerを選択して、コマンドをコピーする
1
2
# コピーしたコマンド例
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <token>

このTokenをSynology NASのDockerコンテナで起動するcloudflaredデーモンに引数として渡します。

※この画面を消さずに、次の「Synology NASでCloudflaredデーモンを起動」を実施してください。下記を実施すると、画面下部に認識されたデーモンが表示されます

Synology NASでCloudflaredデーモンを起動

Synology NASに移動して、Container Managerを起動してcloudflare/cloudflared:latestイメージをダウンロードしましょう。(詳細は割愛)

コンテナを作成していきます。任意の名前を入力し、「自動再起動を有効にする」にチェックを入れます。(自動起動を有効にすると、NASの再起動時に自動で起動されます。)

コンテナの作成

次に、ネットワークを「ホスト」にして、実行コマンドに下記のコマンドを挿入します。

  • 接続先のサーバーが、cloudflaredデーモンを起動しているサーバーからアクセスできる必要があるので、ネットワークは「ホスト」を指定する
  • コマンドはCloudflareのサイトで保存したコマンドから取得すること
1
tunnel run --token <token>
コンテナの作成

これでコンテナを起動します。

Cloudflare側でフォワーディングの設定

ここまでで、Cloudflare側の画面にSynology NASが認識されているはずです。 cloudflaredから、DSMにアクセスできるように設定していきます。

任意のホスト名(例えばsynology-nas.your-domain.com)を入力し、宛先にSynology NASのプライベートIPを指定(例: https://192.168.1.10:5001)します。

  • cloudflaredデーモンが起動しているサーバーからアクセスするので、プライベートIPで問題なし
  • プライベートIPアドレスは事前に固定化しておくこと
  • DSMのポート番号を変更している場合は要修正

これで、Tunnelの設定は完了です。先ほど指定したホスト名(https://synology-nas.your-domain.com)でアクセスできるか確認してください。

まとめ

Synology NAS + Cloudflare Tunnelの設定方法を紹介しました。Cloudflare Tunnelを利用することで、Synologyの推奨するDDNSに比べて以下の利点があると考えています。

  • 自宅のネットワークのグローバルIPを公開する必要がない
  • インバウンドの通信の穴あけが不要
  • Cloudflare側でセキュリティ対策が実施済み

自分でドメイン登録する必要があるのが最大のデメリット(とはいえNASを立てる人ならドメインぐらい持っている?)と言えますが、ドメインさえ持っていればセキュリティの強化が可能かと思います。

参考にした動画