この記事は ctc Advent Calendar 2025 の記事です 🎄
これまでにも ctc(中部テレコミュニケーション株式会社)のメンバーが技術にまつわる知見を投稿していますので、ぜひご覧ください。
はじめに
自宅に NAS やサーバを置いていると、
- 外出先から 自宅NASの動画・写真を見たい
- 自宅サーバをリモートでメンテしたい
- 自宅で動かしている コンテナWebアプリに外出先からアクセスしたい
といった理由で、外部から自宅ネットワークに接続したい場面は多いと思います。
一昔前であれば、ルータでポート開放してOpenVPN などの VPN サーバを構築するといった方法が
一般的でしたが、近年は外部からの攻撃も活発で、脆弱性を突かれるリスクが高くなっています。
そこで、 Cloudflare ZeroTrust を使い、
- ポート開放なし
- グローバルIP不要
- 外部から直接攻撃されない
安全な自宅リモートアクセス環境を構築していきます。
逸般の誤家庭でも企業並みの安心、安全なネットワークを作っていきましょう!
1. 🔐 CloudFlare Zero Trustとは?
Zero Trustの概念
Zero Trustとは、「信頼しない、常に検証する」というセキュリティモデルです。
従来のVPNとは異なり、ネットワークの内外を問わず、すべてのアクセスを検証する接続方法です。
CloudFlare Zero Trustの特徴
CloudFlare Zero Trustは、Cloudflareが提供するゼロトラストネットワークアクセス(ZTNA)です。
基本法人向けサービスですが、個人で利用する分には無料で使用できます。
アーキテクチャ図
┌───────────────────┐
│ モバイル端末 │
│ (WARPクライアント)│
└────────┬──────────┘
│
↓
┌────────────────────────────┐
│ Cloudflare Edge Network │
│ (Zero Trust Gateway) │
└────────┬───────────────────┘
│
↓
┌────────────────────────────┐
│ Cloudflare Tunnel │
│ (cloudflared) │
└────────┬───────────────────┘
│
↓
┌─────────────────────────────┐
│ 自宅ネットワーク │
│ (サーバー、NAS、IoT機器) │
└─────────────────────────────┘
動作の流れ:
- モバイル端末がWARPクライアントでCloudflare Edgeに接続
- ユーザー認証とアクセスポリシーを検証
- Cloudflare Tunnelを経由して自宅ネットワークにルーティング
- ルータでVPNポート開放不要で安全に自宅ネットワークにアクセス出来る
メリット
- ✅ VPNサーバー不要 自宅にVPNサーバーを立てる必要なし
- ✅ ポート開放不要 ポート開放が不要なので、ルータ設定が出来ない環境やIPoE環境などでも使用可能
- ✅ 低遅延: Cloudflareのエッジネットワーク経由で高速
- ✅ デバイス認証: アクセスポリシーで接続元端末を細かく制御可能
2. 💰 CloudFlare Zero Trustは無料で使える
無料プランで使える機能
CloudFlare Zero TrustのFreeプランでは以下が利用可能です。
✅ 利用可能な機能
| 機能 | 無料プランの制限 |
|---|---|
| ユーザー数 | 最大50ユーザー |
| Cloudflare Tunnel | 無制限(帯域幅制限なし) |
| Access(アプリケーション保護) | 最大50アプリケーション |
| Gateway(DNS/HTTPフィルタリング) | 最初の50ユーザーまで |
| WARP クライアント | 50デバイスまで |
| 認証プロバイダー | Google, GitHub, メールOTPなど |
⚠️ 無料プランの制限事項
- ログ保持期間: 24時間(有料プランは30日以上)
- CASB機能: 利用不可
- 詳細なアナリティクス: 制限あり
個人利用範囲で考えると十分無料範囲で問題無し
外から自宅ネットワークに安全に繋いで、自宅の機器にアクセスするという範囲の用途であれば全く問題なく使用できます。
3. 🛠️ CloudFlare Zero Trustの環境を作ってみる
3.1 CloudFlareのアカウント作成
- Cloudflare公式サイトにアクセス
- 中央の「無料で始める」をクリック
- メールアドレスとパスワードを入力して登録
- 確認メールのリンクをクリックして認証完了
3.2 CloudFlareでZero Trustドメインを作成する
- Cloudflareダッシュボードにログイン
- 左サイドバーから 「Zero Trust」 を選択
- 初回アクセス時にチーム名を設定
-
Team Name: 任意の名前(例:
my-home)
これが Zero Trust のドメイン名になります。(my-home.cloudflareaccess.com)
-
Team Name: 任意の名前(例:
- プランで 「Free」 を選択
- 「Proceed to Dashboard」 をクリック
支払い方法入力が求められた場合は、支払はされませんがPayPalやカード等の情報を入力する必要があります。
3.3 Zero Trustを使う為に必要な設定
認証方法の設定
- Zero Trustダッシュボードで 「インテグレーション」 → 「ID プロバイダー」 に移動
- 「Login methods」 セクションで 「Add new」 をクリック
- 認証プロバイダーを選択(例: Google)
- Name: Google Login
- App ID/Secret: Google Cloud Consoleで取得
- 「Save」 をクリック
デフォルトでメールによるワンタイム認証であるOne-time PINが追加されているので、追加しなくても問題ありません。
デバイス登録の設定
- 「Settings」 → 「WARP Client」 に移動
- 「Device enrollment permissions」 で 「Manage」 をクリック
- ルールを追加:
- Rule name: Allow my email
- Rule action: Allow
-
Selector: Emails ending in →
@yourdomain.com(または個人メール)
- 「Save」 をクリック
3.4 CloudFlare Zero Trustに自宅ネットワークを接続する
ここでは、Zero Trustダッシュボードの 「クライアントベースの VPN を置き換える」 ウィザードを使って、Tunnelを作成します。
ウィザードでTunnelを作成
1. ウィザードを開始:
- Cloudflareダッシュボードから 「Zero Trust」 を開く
- 左サイドバーの 「概要」 をクリック
- 「クライアントベースの VPN を置き換える」メニュー内の「始める」 をクリック
2. Tunnelの名前とIP範囲を設定:
ウィザードの最初の画面で以下を入力します:
- 何を接続しますか?: デバイスからネットワークへ
-
トンネル名:
home-tunnel(任意の名前) -
IP範囲: 自宅ネットワークのCIDRを入力(例:
192.168.1.0/24)- 複数のネットワークセグメントがある場合は追加できます
- 例:
192.168.1.0/24,192.168.10.0/24
入力したら 「次へ」 をクリック
Ubuntu環境にcloudflaredをインストール
3. OSを選択:
次の画面でTunnel展開先のOSを選択します。
今回はUbuntuにインストールする例で進めますが、Cent OS/Rocky Linux等のRed Hat系に入れる場合はRed Hatを選択してください。
- Debian (Debian/Ubuntu) を選択
- アーキテクチャ を選択 (32bit or 64bitを自宅のサーバに合わせて選択)
- インストールコマンドが自動生成されます
4. Ubuntuサーバー/VMにコマンドを実行:
表示されたコマンドをUbuntu環境で実行します。
# 1. GPGキーの追加
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
# 2. Cloudflareリポジトリの追加
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
# 3. cloudflared インストール
sudo apt-get update && sudo apt-get install cloudflared
# 4. Tunnelの登録とサービス化(トークンはウィザードに表示されます)
sudo cloudflared service install eyJXXXXXXXXXXXXXX...
# 5. サービス自動起動設定
sudo systemctl enable cloudflared
5. インストール完了を確認:
コマンド実行後、以下のように表示されればインストール成功です:
INF **** service for cloudflared installed successfully
6. Connectorの接続を確認:
ウィザードの画面に戻ると、「コネクター」 セクションにステータスが表示されます:
- ステータスが 「Healthy」 (緑色)になれば接続成功!
- 接続が確認できたら 「次へ」 をクリック
デバイスの登録
7. デバイス登録をスキップ:
次の 「デバイスを登録する」 画面が表示されますが、ここでは後で設定するため、
「今はスキップ」 をクリック
接続確認
8. サービスのステータスを確認:
Ubuntuサーバーで以下のコマンドを実行して、cloudflaredが正常に動作しているか確認します:
# サービスの状態確認
sudo systemctl status cloudflared
# ログをリアルタイムで確認
sudo journalctl -u cloudflared -f
正常に動作していれば、以下のようなログが表示されます:
INF Connection established connIndex=0 ...
INF Registered tunnel connection ...
これで自宅ネットワークとCloudflare Zero Trustを繋げる設定は完了です。
3.5 リモート接続するモバイル端末にWARPクライアントをインストールして接続する
Windows PCへのインストール手順
1. WARPクライアントのダウンロード:
- Cloudflare WARP公式ページにアクセス
- ダウンロードボタン一覧から 「Windows」 を選択
-
Cloudflare_WARP_*****.msiをダウンロード
2. インストール:
- ダウンロードしたMSIファイルをダブルクリック
- インストールウィザードに従って進める
- 完了後、タスクトレイにWARPアイコンが表示されます
3. Zero Trustへの登録:
- タスクトレイのWARPアイコンをクリック
- 歯車アイコン(設定)をクリック
- 「環境設定」 → 「アカウント」 → 「Cloudflare Zero Trust にログイン」
- チーム名を入力:
my-home-network(手順3.2で設定した名前) - ブラウザで認証画面が開くので、設定した認証方法でログイン
4. 接続確認:
5. 動作テスト:
コマンドプロンプトで自宅ネットワークの機器にpingを実行:
ping 192.168.1.100
応答があればトンネル経由の接続成功です
3.6 自宅ネットワークの機器に接続してみる
接続例
1. SSHで自宅サーバーに接続:
ssh user@192.168.1.100
2. NAS機器などの管理画面へ接続
http://192.168.1.200 など、ローカルIPでアクセス
4. 🚀 応用編
4.1 複数拠点をつなぐ
構成図
┌─────────────────────┐
│ Cloudflare Network │
│ (Zero Trust) │
└──────────┬──────────┘
│
┌─────────┴─────────┐
│ │
↓ ↓
┌──────────────────┐ ┌──────────────────┐
│ 自宅環境 │ │ 実家 │
│ │ │ │
│ cloudflared │ │ cloudflared │
│ (home-tunnel) │ │ (office-tunnel) │
│ │ │ │
│ 192.168.1.0/24 │ │ 192.168.0.0/24 │
└──────────────────┘ └──────────────────┘
↑ ↑
│ │
└───────────┬───────┘
│
┌────────┴────────┐
│ モバイル端末 │
│ (WARP Client) │
└─────────────────┘
設定手順
各拠点でcloudflaredをインストール:
インストール手順は 3.4 の cloudflared インストール まで参照
# 実家/オフィス環境でも同様にインストール
cloudflared tunnel login
cloudflared tunnel create office-tunnel
# 異なるネットワークをルーティング
cloudflared tunnel route ip add 192.168.0.0/24 office-tunnel
WARPクライアントから両方の拠点にアクセス可能に!
-
192.168.1.x→ 自宅の機器 -
192.168.0.x→ 実家/オフィスの機器
4.2 自宅で動かしているWebアプリに登録したドメインのサブドメインで繋ぐ
CloudFlare Zero TrustのPublic Hostname(公開されたアプリケーションルート)機能を使うと、自宅で動作しているWebアプリをインターネット経由で安全に公開できます。
前提条件
- Cloudflareでドメインを管理している(例:
example.com) - 自宅でWebアプリがコンテナで稼働中(例:
http://localhost:3000) - 同一ネットワーク内にcloudflaredをインストールして設定済み
設定手順
1. トンネルの作成
cloudflared tunnel create my-local-app
2. トンネルのルート設定
cloudflared tunnel route dns my-local-app app.example.com
3. Tunnelの設定ファイルを更新:
/etc/cloudflared/config.yml を編集:
tunnel: <YOUR-TUNNEL-ID> # tunnel create実行時に生成されるトンネルID
credentials-file: /root/.cloudflared/<YOUR-TUNNEL-ID>.json
ingress:
# サブドメインでWebアプリを公開
- hostname: app.example.com
service: http://localhost:3000 # 動作しているコンテナのURL
- service: http_status:404
4. cloudflaredを再起動:
sudo systemctl restart cloudflared
5. Cloudflare Zero Trustで公開設定:
Zero Trustダッシュボードで以下を設定する。
- 「ネットワーク」 → 「コネクタ」 に移動
- 作成したトンネル(
home-tunnel)をクリックし、 「設定」 をクリック - 「公開されたアプリケーション ルート」 タブで 「公開されたアプリケーション ルートを追加する」
- 設定:
-
Subdomain:
app -
Domain:
example.com -
Service:
HTTP/localhost:3000
-
Subdomain:
- 「保存」 をクリック
6. アクセス確認:
ブラウザで https://app.example.com にアクセス:
- うまく設定されていたら自宅のWebアプリが表示される
Webアプリケーション側もしくはZeroTrust側でアクセス制限設定を設ける事を推奨
5. 🎉 まとめ
以上、CloudFlare Zero Trustを使って外部から自宅ネットワークへ安全に接続する方法を解説しました。
最近ではフレッツ光やNURO光などMAP-EやDS-LiteによるIPv4アクセス方式が増加しており、VPNサーバ構築がしづらい環境も増えています。
この仕組みを使えばそういった環境でも自宅ネットワークに接続出来る環境が作れます。
旅行先から自宅NASの動画を開いたり、自宅サーバメンテをしたりと色々な事が 安全に 出来る環境を作り、活用してみてください!
