パケットキャプチャは、Cloudflare のネットワークを流れるトラフィックを記録します。トラブルシューティングやセキュリティ調査のために、個々の パケット を分析できます。出力は 1 つ以上の PCAP 形式ファイルに入ります。Wireshark ↗ などのツールで開けます。
キャプチャの種類は次の 2 つです。
- Sample キャプチャは、すでに Cloudflare のネットワークを通過した過去のトラフィックデータを照会します。すぐに完了し、API または Cloudflare ダッシュボードから直接ダウンロードできます。
- Full キャプチャは、フィルターに一致する新しいトラフィックを監視し、完全なパケットデータを、所有するクラウドストレージバケットへ書き込みます。Full キャプチャを始める前に、先に バケットを設定 してください。
現在、パケットキャプチャをリクエストすると、Magic Transit 経由で Cloudflare のグローバルネットワークを流れるパケットが取得されます。リクエストとレスポンスの両方で、API のデフォルトフィールドは "system": "magic-transit" です。
Sample と Full
time_limit: 最小値は1秒、最大値は300秒です。packet_limit: 最小値は1パケット、最大値は10000パケットです。
Full
byte_limit: 最小値は1バイト、最大値は1000000000バイト(1 GB)です。
-
Cloudflare ダッシュボードで Network health ページを開きます。
Network health を開く ↗ -
Diagnostics タブを開きます。
-
Network packet captures で Start a capture を選択します。
-
実行するキャプチャの種類を選び、Next を選択します。
-
キャプチャ開始に必要な項目を入力し、Start を選択します。
Network packet captures ページにキャプチャの一覧が表示されます。
PCAPs API でキャプチャを開始するには、system と type の両方を指定する必要があります。PCAP の system はパケットを取得する製品または論理サブシステムです。PCAP の type は、取得したパケットを PCAP ファイルへ組み立てる方法です。
現在、Sample PCAP は 1 分あたり 1 件の collect リクエストしか送れません。Full PCAP は、実行中または保留中のものを同時に 1 件だけ持てます。
Full PCAP
Full PCAP リクエストの必須パラメーターは Create full PCAP requests を参照してください。Full パケットキャプチャは、Sample より 2 つ多くパラメーターが必要です。
Full PCAP リクエストのエンドポイントには、取得するパケット量を制限する任意フィールドもあります。Full と Sample の両方に任意の filter_v1 パラメーターがあり、たとえば IPv4 送信元アドレスでパケットをフィルターできます。フィルターオプションの一覧は API reference を参照してください。
フィルターなしですべてのパケットを収集するには、filter_v1 を空のままにします。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"filter_v1": {},
"time_limit": 300,
"packet_limit": 10000,
"byte_limit": 100000000,
"type": "full",
"colo": "ORD",
"system": "magic-transit",
"destination_conf": "${BUCKET}"
}'収集中は、レスポンスの status フィールドが pending になります。ファイルをダウンロードする前に、PCAP 収集の完了を待ってください。ダウンロードできる状態になると、status は success に変わります。
{
"result": {
"id": "7d7c88382f0b4d5daa9587aa45a1a877",
"submitted": "2022-06-02T18:38:22.269047Z",
"filter_v1": {},
"time_limit": 300,
"status": "pending",
"type": "full",
"system": "magic-transit",
"packet_limit": 10000,
"byte_limit": 100000000,
"colo": "ORD",
"destination_conf": "gs://<bucket-name>" // Ensure you use a bucket that you created and registered in the Cloudflare dashboard
},
"success": true,
"errors": [],
"messages": []
}Sample PCAP
Sample PCAP リクエストを作成するには、Create sample PCAP request に記載の必須パラメーターを含む JSON 本文を送ります。
フィルターなしですべてのパケットを収集するには、filter_v1 を空のままにします。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"filter_v1": {
"source_address": "1.2.3.4",
"source_port": 123,
"destination_address": "5.6.7.8",
"destination_port": 80,
"protocol": 6
},
"time_limit": 300,
"packet_limit": 10000,
"type": "simple",
"system": "magic-transit"
}'レスポンスは、パケットキャプチャを組み立てるジョブの詳細を含む JSON 本文です。レスポンスには、パケットキャプチャリクエストの一意の識別子と、リクエストで送った詳細が含まれます。
{
"result": {
"id": "6d1f0aac13cd40e3900d29f5dd0e8a2b",
"submitted": "2021-12-20T17:29:20.641845Z",
"filter_v1": {
"source_address": "1.2.3.4",
"source_port": 123,
"destination_address": "5.6.7.8",
"destination_port": 80,
"protocol": 6
},
"time_limit": 60,
"status": "pending",
"packets_remaining": 0,
"type": "simple",
"system": "magic-transit"
},
"success": true,
"errors": [],
"messages": []
}- Cloudflare ダッシュボードで Network health ↗ を開きます。
- Diagnostics タブを開きます。
- Network packet captures で対象のキャプチャを探します。
実行中ジョブの状態を確認するには、エンドポイントへリクエストを送り、PCAP 識別子を指定します。PCAP 識別子は、前の手順で示した collect リクエストのレスポンスで受け取れます。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/{pcap_id} \
--header 'X-Auth-Email: <EMAIL>' \
--header 'X-Auth-Key: <API_KEY>'レスポンスは、PCAP 収集をリクエストしたときと似た内容になります。
{
"result": {
"id": "6d1f0aac13cd40e3900d29f5dd0e8a2b",
"submitted": "2021-12-20T17:29:20.641845Z",
"filter_v1": {
"source_address": "1.2.3.4",
"source_port": 123,
"destination_address": "5.6.7.8",
"destination_port": 80,
"protocol": 6
},
"time_limit": 120,
"status": "success",
"packets_remaining": 0,
"type": "simple",
"system": "magic-transit"
},
"success": true,
"errors": [],
"messages": []
}キャプチャの状態は、次のいずれかを表示します。
- Complete(API:
success): キャプチャは完了し、ダウンロードできます。 - In progress(API:
pending): パケットは取得済みですが、PCAP ファイルの組み立てが続いています。 - Failure: キャプチャに失敗しました。Full キャプチャの場合は、バケット設定と Cloudflare の書き込み権限を確認してください。Sample キャプチャの場合は、フィルター設定を確認してください。
リクエストの処理が終わったら、パケットキャプチャをダウンロードできます。
- Cloudflare One ↗ ダッシュボードで Network visibility > Diagnostics を開きます。
- Packet captures で Start a capture を選択します。
- ダウンロードしたいパケットキャプチャを探し、Download を選択します。
Status が Success のときに、パケットキャプチャをダウンロードできます。
Full キャプチャは、データセンター内の複数マシンで実行できるため、1 回のキャプチャで複数の PCAP ファイルができます。分析用に 1 つのファイルへ結合するには、Wireshark の mergecap ドキュメント ↗ を参照してください。
Full PCAPs
Full PCAP を取得するには、PCAP の status が success になったあと、destination_conf で指定したバケットからファイルをダウンロードします。キャプチャは複数マシンで行われることがあるため、pcap_<pcap_id>.pcap という名前のファイルが複数ある場合があります。
Sample PCAPs
Sample PCAP の収集が完了したら、先に使った PCAP 識別子を指定して PCAP をダウンロードできます。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/{pcap_id}/download \
--header 'X-Auth-Email: <EMAIL>' \
--header 'X-Auth-Key: <API_KEY>' \
--output download.pcap-
Cloudflare ダッシュボードで Network health ページを開きます。
Network health を開く ↗ -
Diagnostics タブを開きます。
アカウントに関連するパケットキャプチャの一覧は、Network packet captures に表示されます。
送ったリクエストの一覧を確認するには、次のコマンドを使います。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"レスポンスは、完了済みと実行中を含む、最大 50 件の送信済みリクエストの配列です。
{
"result": [
{
"id": "43adab5adeca4dab9c51f4b7f70f2ec3",
"submitted": "2021-12-15T03:04:09.277394Z",
"filter_v1": {},
"time_limit": 120,
"status": "success",
"packets_remaining": 0,
"type": "simple",
"system": "magic-transit"
}
],
"success": true,
"errors": [],
"messages": []
}