コンテンツにスキップ

サイト間接続

ベータ

機能の可用性

WARPモードゼロトラストプラン
WARPを使用したゲートウェイすべてのプラン
システム可用性
Windows
macOS
Linux
iOS
Android
ChromeOS

Cloudflare WARPコネクタは、基盤となるネットワークルーティングインフラストラクチャに変更を加えることなく、サイト間、双方向、メッシュネットワーキング接続を可能にするソフトウェアです。WARPコネクタは、プライベートネットワークとCloudflareの間に安全なレイヤー3接続を確立し、次のことを可能にします:

  • 2つ以上のプライベートネットワークを相互接続する。
  • プリンタやIP電話など、外部ソフトウェアを実行できないIoTデバイスを接続する。
  • VoIPやSIPトラフィックなど、サーバーから開始されたトラフィックをフィルタリングおよびログ記録する。
  • リクエストの送信元IPに基づいてゼロトラストセキュリティポリシーを適用する。

WARPコネクタで接続された2つのサブネット

図に示すように、WARPコネクタはプライベートネットワーク内のサブネットのルーターとして機能し、Cloudflareを通じてトラフィックをオンランプおよびオフランプします。サブネット内のすべてのデバイスはCloudflareに接続された任意のサービスにアクセスでき、Cloudflareに接続されたすべてのデバイスはサブネット内の任意のサービスにアクセスできます。各サブネットは指定されたLinuxマシン(通常はデフォルトゲートウェイルーター)でWARPコネクタを実行しますが、ネットワーク上の他のデバイスはソフトウェアをインストールする必要はありません。

このガイドでは、例えば10.0.0.0/24192.168.1.0/24の2つの独立したサブネットを接続する方法を説明します。

前提条件

1. サービストークンを作成する

新しいサービストークンを作成し、そのクライアントIDクライアントシークレットをコピーします。WARPコネクタは、このサービストークンを使用してゼロトラスト組織に認証します。

2. デバイス登録ルールを追加する

次に、WARPコネクタが認証できるようにデバイス登録ルールを作成します:

  1. ゼロトラストに移動し、設定 > WARPクライアントを選択します。

  2. デバイス登録カードで、管理を選択します。

  3. ルールを追加を選択します。

  4. ルールに名前を付けます。

  5. ルールアクションとして、_サービス認証_を選択します。

  6. 次のフィールドを設定します:

    セレクタ
    サービストークン<SERVICE-TOKEN-NAME>
  7. 保存を選択します。

3. CGNATルーティングを有効にする

ゼロトラスト組織内のすべてのWARPコネクタおよびWARPクライアントデバイスは、デフォルトで同じローカルIPアドレスを持ちます。さまざまなWARPデバイス間でトラフィックをルーティングするには、Cloudflareに各デバイスに一意のCGNAT IPを割り当てることを許可する必要があります。

  1. ゼロトラストに移動し、設定 > ネットワークを選択します。

  2. プロキシを有効にします。

  3. WARPからWARPへを有効にします。これにより、CloudflareがCGNAT IPスペースへのトラフィックをルーティングできるようになります。

  4. 次に、設定 > WARPクライアントに移動します。

  5. ローカルインターフェイスIPをオーバーライドを有効にします。

  6. スプリットトンネルの設定を確認し、CGNAT IPスペース(100.96.0.0/12)がWARPを介してルーティングされていることを確認します。

    例えば、除外モードを使用している場合は、リストから100.64.0.0/10を削除し、100.64.0.0/11100.112.0.0/12を再追加します。

4. WARPコネクタをインストールする

各サブネットは、Linuxホスト上で独自のWARPコネクタを実行する必要があります。ルーターにインストールするのが最も簡単な設定ですが、ルーターにアクセスできない場合は、サブネット内の他の任意のマシンを選択できます。

この例では、サブネット10.0.0.0/24のWARPコネクタを作成し、10.0.0.1にインストールします。次に、サブネット192.168.1.0/24のために2番目のWARPコネクタを作成し、192.168.1.97にインストールします。

  1. ゼロトラストに移動し、ネットワーク > トンネルを選択します。

  2. トンネルを作成を選択します。

  3. コネクタタイプとしてWARPを選択します。次へを選択します。

  4. 前提条件のリストが表示されます。確認を選択して続行します。

  5. トンネルに任意の名前を付けます(例えば、Subnet-10.0.0.0/24)と選択し、トンネルを保存します。

  6. ホストマシンのオペレーティングシステムを選択します。

  7. コマンドをターミナルウィンドウにコピー&ペーストし、コマンドを実行します。WARPコネクタソフトウェアがインストールされましたが、まだCloudflareに接続されていません。

  8. WARPコネクタをゼロトラスト組織に認証するには:

    1. 任意のテキストエディタを使用して、/var/lib/cloudflare-warpmdm.xmlファイルを作成します:
    Terminal window
    cd /var/lib/cloudflare-warp
    sudo vim mdm.xml
    1. ファイルに次のテキストを追加します。チーム名サービストークンのクライアントIDとクライアントシークレット、ダッシュボードに表示されるWARPコネクタトークン値を入力してください。このファイルを保存すると、WARPは自動的に提供された資格情報で登録されます。
    <dict>
    <key>organization</key>
    <string>myteam</string>
    <key>auth_client_id</key>
    <string>b33d5a65a6e801cd875scefff5908457f29.access</string>
    <key>auth_client_secret</key>
    <string>cdb5fa2721018c39cfaf8ec7fca9b5f62860ff5c584a89121241c6d0c83878124591cce23</string>
    <key>warp_connector_token</key>
    <string>fVTLilTWgMiF3TMxTIMM3nMU2NsixOYTTDHW1IamOMyORL0Y0jUcMWAoZDZhVhLVdn2pTDhy0VFRWZdE22rQCFNN6jQUoOx0eIV0ehcj5RyTZl5PYRwU25wMMi0kDGUS2XZn5W0eJS3mZXS9DkUTJatMNiMZDtNb1TmtmMptENJ20WY0NmdYmIBLoVhtToFichIjtiMnTZIMMOYOGZmpATzzEm2MjhnC6tWMHwNwFGhoIN==</string>
    </dict>
    1. 登録を確認します:
    Terminal window
    warp-cli account
    アカウントタイプ: チーム
    デバイスID: f174e90a-fafe-4643-bbbc-4a0ed4fc8415
    公開鍵: 4w5uugfh0q03nrmcn95ltfzeghfzuhl75o7pruyd0h7z9ar9x6doxwq50aszar5kd
    アカウントID: 699d98642c564d2e855e9661899b7252
    組織: myteam

登録が行われない場合のトラブルシューティング

登録が行われなかった場合は、次のトラブルシューティング戦略を試してください:

  • mdm.xmlが正しくフォーマットされ、/var/lib/cloudflare-warpに保存されていることを確認します。
  • _サービス認証_アクション(_許可_ではない)を持つデバイス登録ルールがあることを確認します。
  • WARP systemdサービスを再起動します:
    Terminal window
    sudo systemctl restart warp-svc.service
  • 古い登録をクリアし、WARPに再登録をトリガーします:
    Terminal window
    sudo warp-cli delete
  • 登録が失敗している理由についての情報を得るために、WARPデーモンログを確認します。
  1. WARPがCloudflareに接続されていることを確認します:
Terminal window
warp-cli status
ステータス更新: 接続済み
成功

接続のトラブルシューティング

WARPが切断されている場合は、次のトラブルシューティング戦略を試してください:

  • warp-cli connectを実行します。

  • プライベートネットワークがインターネットトラフィックを制限するファイアウォールを使用している場合は、WARPポートとIPを許可していることを確認します。

  • 接続が失敗している理由についての情報を得るために、WARPデーモンログを確認します。

  1. 次へを選択します。
  2. CIDRに、このWARPコネクタを介してルーティングしたいプライベートIPv4アドレス範囲(例えば、10.0.0.0/24)を入力します。WARPコネクタは現在、IPv6ルートをサポートしていません。
  1. トンネルを保存を選択します。

  2. スプリットトンネルの設定で、CIDRがWARPトンネルを介してルーティングされていることを確認します。これを行う方法については、WARPを介してプライベートネットワークIPをルーティングするを参照してください。

    10.0.0.0/24のWARPコネクタは、Cloudflareに接続されました。

        flowchart LR
          subgraph subnet1[サブネット 10.0.0.0/24]
          router1["WARPコネクタを実行しているデバイス
            10.0.0.1"]
          end
          router1<-->C((Cloudflare))
    
  3. サブネット192.168.1.0/24に追加のWARPコネクタをインストールするために、これらの手順を繰り返します。サービストークンを再利用できますが、新しいトンネルとMDMファイルを作成する必要があります。

        flowchart LR
          subgraph subnet1[サブネット 10.0.0.0/24]
          router1["WARPコネクタ #1を実行しているデバイス
            10.0.0.1"]
          end
          subgraph subnet2[サブネット 192.168.1.0/24]
            router2["WARPコネクタ #2を実行しているデバイス
            192.168.1.97"]
          end
          router1<-->C((Cloudflare))<-->router2
    

5. ホストを構成する

WARPコネクタをインストールしたマシンで次のコマンドを実行します。各サブネットのホストマシンを構成する必要があります。

  1. IP転送を有効にします:

    Terminal window
    sudo sysctl -w net.ipv4.ip_forward=1

    再起動後に設定を保存する

    Terminal window
    echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-warp-svc.conf
    sudo sysctl -p /etc/sysctl.d/99-warp-svc.conf
  1. WARPの仮想インターフェイスは、最大転送単位(MTU)が1280バイトであり、標準のイーサネットMTUは1500バイトです。1280バイトを超えるパケットがドロップされないように、ホストマシンの最大セグメントサイズ(MSS)を制限して、受信ペイロードがWARPのMTU未満になるようにします:

    Terminal window
    sudo iptables -t mangle -A FORWARD -i CloudflareWARP -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    sudo iptables -t mangle -A FORWARD -o CloudflareWARP -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    再起動後に設定を保存する

    1. iptableルールをファイルに書き込むbashスクリプトを作成します:
    Terminal window
    echo '#!/bin/bash
    # ルールを定義します
    RULES=(
    "-A FORWARD -i CloudflareWARP -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu"
    "-A FORWARD -o CloudflareWARP -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu"
    )
    # ルールを適用します
    for rule in "${RULES[@]}"; do
    iptables -t mangle $rule
    done
    # ルールを保存します
    iptables-save > /etc/iptables/rules.v4
    ' | sudo tee /usr/local/bin/apply_iptables_rules.sh
    1. スクリプトを実行します:
    Terminal window
    sudo chmod +x /usr/local/bin/apply_iptables_rules.sh
    sudo /usr/local/bin/apply_iptables_rules.sh
    1. 起動時にルールを復元するsystemdサービスを作成します:
    Terminal window
    echo '[Unit]
    Description=起動時にiptablesルールをロード
    [Service]
    Type=oneshot
    ExecStart=/sbin/iptables-restore < /etc/iptables/rules.v4
    [Install]
    WantedBy=multi-user.target
    ' | sudo tee /etc/systemd/system/iptables-persistent.service

6. WARPコネクタを介してトラフィックをルーティングする

WARP Connectorをどこにインストールしたかによって、サブネット上の他のデバイスを構成してトラフィックをWARP Connector経由でルーティングする必要がある場合があります。

オプション 1: デフォルトゲートウェイ

WARP Connectorをルーターにインストールした場合、追加の構成は必要ありません。すべてのトラフィックはルーターをデフォルトゲートウェイとして使用します。

デフォルトゲートウェイのルーティング構成

オプション 2: 代替ゲートウェイ

ルーターにアクセスできるが、WARP Connectorを別のマシンにインストールした場合、ルーターを構成してトラフィックをWARP Connectorに転送できます。これは通常、Cloudflareを通じて接続したい宛先IPのために静的ルートを追加することを含みます。IPルートを追加する方法については、ルーターのドキュメントを参照してください。

たとえば、サブネット 10.0.0.0/24 にいて、サブネット 192.168.1.0/24 の背後にあるアプリケーションに到達したい場合、192.168.1.0/24 をWARP ConnectorのIP(以下の図では 10.0.0.100)にルーティングするルールを追加します。デバイスが 192.168.1.0/24 にリクエストを送信すると、ルーターは最初にトラフィックをWARP Connectorマシンにリダイレクトします。WARP Connectorはトラフィックを暗号化し、宛先IPをWARPイングレスIPに変更し、ルーターに戻します。ルーターはこの暗号化されたトラフィックをCloudflareに転送します。

代替ゲートウェイのルーティング構成

オプション 3: 中間ゲートウェイ

ルーターにアクセスできない場合、サブネット上の各デバイスをデフォルトゲートウェイの代わりにWARP Connectorマシンを通じてエグレスするように構成する必要があります。

中間ゲートウェイのルーティング構成

すべてのトラフィックをルーティング

デバイス上のすべてのトラフィックをWARP Connectorを通じてローカルソースIPでエグレスするように構成できます。すべてのトラフィックは、ゲートウェイネットワークポリシーによってフィルタリングされます。

Terminal window
sudo ip route add default via <WARP-CONNECTOR-IP> dev eth0 metric 101

metricの値が他のデフォルトゲートウェイよりも低いことを確認してください。WARP Connectorが現在の優先デフォルトゲートウェイであることを確認するには、ip route get <DESTINATION-IP>を実行します。

特定のIPをルーティング

特定のルートのみをWARP Connectorを通じてエグレスするように構成できます。たとえば、内部アプリケーションやデバイスに向けられたトラフィックのみをフィルタリングし、公共のインターネットトラフィックはCloudflareをバイパスさせることができます。

Terminal window
sudo ip route add <DESTINATION-IP> via <WARP-CONNECTOR-IP> dev eth0

ルートの確認

サブネットルーティングを検証するには、ルーティングテーブルを確認し、トラフィックがCloudflareWARP 仮想インターフェースを通じてルーティングされていることを確認してください。

7. WARP Connectorのテスト

これで、2つのサブネット間の接続をテストできます。たとえば、10.0.0.2デバイスでping 192.168.1.100を実行します。

    flowchart LR
      subgraph subnet1[サブネット 10.0.0.0/24]
        device1["デバイス
        10.0.0.2"]--"ping
        192.168.1.100"-->router1["WARP Connectorを実行しているデバイス
        10.0.0.1"]
      end
      subgraph subnet2[サブネット 192.168.1.0/24]
        router2["WARP Connectorを実行しているデバイス
        192.168.1.97"]-->device2["デバイス
        192.168.1.100"]
      end
      router1-->C((Cloudflare))-->router2

Footnotes

  1. システム要件を確認してください。パッケージ依存関係は次のとおりです: curl, gpg, iptables, iptables-persistent, lsb-core, および sudo