コンテンツにスキップ

管理されたネットワーク

Cloudflare WARPを使用すると、デバイスがオフィスなどの安全なネットワーク場所に接続されている場合に、WARPクライアント設定を選択的に適用できます。

1. TLSエンドポイントを選択する

TLSエンドポイントは、TLS証明書を提供するネットワーク上のホストです。TLSエンドポイントは、ネットワーク位置のビーコンのように機能します。デバイスがネットワークに接続すると、WARPはTLSエンドポイントを検出し、アップロードされたSHA-256フィンガープリントに対してその証明書を検証します。

TLS証明書は、ネットワーク上の任意のデバイスでホストできます。ただし、エンドポイントはネットワーク場所の外部のユーザーからアクセスできない必要があります。WARPは、ユーザーがCloudflare Tunnelを介してこのエンドポイントに接続できないように、管理されたネットワークエンドポイントをすべてのデバイスプロファイルから自動的に除外します。リモートユーザーがアクセスする必要のない、オフィス内に物理的に存在するホスト(例:プリンター)を選択することをお勧めします。

新しいTLSエンドポイントを作成する

ネットワーク上にTLSエンドポイントがまだない場合は、次の手順で設定できます。

  1. TLS証明書を生成します:
Terminal window
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout example.key -out example.pem -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com"

このコマンドは、PEM形式の証明書とその秘密鍵を出力します。これらのファイルは安全な場所に保管してください。

  1. 次に、この証明書と鍵を使用するHTTPSサーバーをネットワーク上に構成します。以下の例は、リクエストに200ステータスコードで応答する簡素なHTTPSサーバーを実行する方法を示しています:

nginx in Docker

nginxコンテナからTLS証明書を提供するには:

  1. nginx.confという名前のnginx設定ファイルを作成します:

    events {
    worker_connections 1024;
    }
    http {
    server {
    listen 443 ssl;
    ssl_certificate /certs/example.pem;
    ssl_certificate_key /certs/example.key;
    location / {
    return 200;
    }
    }
    }

必要に応じて、/certs/example.pem/certs/example.keyを証明書と鍵の場所に置き換えてください。

  1. Docker composeファイルにnginxイメージを追加します:

    version: "3.3"
    services:
    nginx:
    image: nginx:latest
    ports:
    - 3333:443
    volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
    - ./certs:/certs:ro

    必要に応じて、./nginx.conf./certsをnginx設定ファイルと証明書の場所に置き換えてください。

  2. サーバーを起動します:

    Terminal window
    docker-compose up -d

Python

TLS証明書をPythonを使用して提供するには:

  1. myserver.pyという名前のPython 3スクリプトを作成します:

    import ssl, http.server
    class BasicHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
    self.send_response(200)
    self.send_header('Content-type', 'text/html')
    self.end_headers()
    self.wfile.write(b'OK')
    return
    server = http.server.ThreadingHTTPServer(('0.0.0.0', 3333), BasicHandler)
    sslcontext = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    sslcontext.load_cert_chain(certfile='./example.pem', keyfile='./example.key')
    server.socket = sslcontext.wrap_socket(server.socket, server_side=True)
    server.serve_forever()
  2. スクリプトを実行します:

    Terminal window
    python3 myserver.py
  1. サーバーが動作しているかテストするには、エンドユーザーのデバイスからcurlコマンドを実行します:
Terminal window
curl --verbose --insecure https://<private-server-IP>:3333/

自己署名証明書を使用しているため、insecureオプションを渡す必要があります。デバイスがネットワークに接続されている場合、リクエストは200ステータスコードを返すはずです。

サポートされている暗号スイート

WARPクライアントは、Rustlsを使用してTLS接続を確立します。TLSエンドポイントがRustlsによってサポートされている暗号スイートのいずれかを受け入れることを確認してください。

2. SHA-256フィンガープリントを抽出する

ローカル証明書のSHA-256フィンガープリントを取得するには:

Terminal window
openssl x509 -noout -fingerprint -sha256 -inform pem -in example.pem | tr -d :

出力は次のようになります:

SHA256 Fingerprint=DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662

3. Zero Trustに管理されたネットワークを追加する

  1. Zero Trustに移動し、Settings > WARP Clientを選択します。
  2. Network locationsまでスクロールし、Add newを選択します。
  3. ネットワーク場所に名前を付けます。
  4. Host and Portに、TLSエンドポイントのプライベートIPアドレスとポート番号を入力します(例:192.168.185.198:3333)。
  5. (オプション)TLS Cert SHA-256に、TLS証明書のSHA-256フィンガープリントを入力します。このフィールドは自己署名証明書にのみ必要です。TLSフィンガープリントが提供されない場合、WARPはローカル証明書ストアに対して証明書を検証し、公開証明書機関によって署名されていることを確認します。

WARPは自動的にTLSエンドポイントをすべてのデバイスプロファイルから除外します。これにより、リモートユーザーが任意のポートでWARPトンネルを介してエンドポイントにアクセスすることが防止されます。デバイスプロファイルがIncludeモードのSplit Tunnelsを使用している場合、Split TunnelエントリにTLSエンドポイントのIPアドレスが含まれていないことを確認してください。そうしないと、全IP範囲がWARPトンネルから除外されます。

4. デバイスプロファイルを構成する

  1. Zero Trustに移動し、Settings > WARP Clientを選択します。

  2. Profile settingsの下で、新しい設定プロファイルを作成するか、既存のプロファイルを編集します。

  3. デバイスがネットワークに接続するたびにこのプロファイルを適用するには、次のルールを追加します:

    SelectorOperatorValue
    Managed networkis<NETWORK-NAME>
  4. プロファイルを保存します。

管理されたネットワークが有効になりました。組織内のデバイスがネットワークに接続するたびに(たとえば、デバイスをスリープから復帰させるときやWi-Fiネットワークを変更するとき)、WARPクライアントはそのネットワーク位置を判断し、対応する設定プロファイルを適用します。

5. 管理されたネットワークを確認する

WARPクライアントがネットワーク位置を検出しているか確認するには:

  1. WARPをオンにします。
  2. ネットワークから切断し、再接続します。
  3. ターミナルを開き、warp-cli debug alternate-networkを実行します。

ベストプラクティス

  • WARPクライアントは、オペレーティングシステムからのネットワーク変更イベントを検出するたびにすべての管理されたネットワークをスキャンします。パフォーマンスへの影響を最小限に抑えるため、複数の場所で同じTLSエンドポイントを再利用することをお勧めします。ただし、各場所に異なる設定プロファイルが必要な場合は除きます。
  • デバイスが同時に1つの管理されたネットワークにのみ到達できることを確認してください。複数の管理されたネットワークが構成され、到達可能な場合、デバイスが受け取る設定プロファイルを判断する方法はありません。