View a markdown version of this page

Cattura il traffico di rete su un nodo gestito utilizzando kubectl e S3 - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Cattura il traffico di rete su un nodo gestito utilizzando kubectl e S3

Scopri come acquisire il traffico di rete su un nodo gestito Amazon EKS dotato dell'agente di monitoraggio dei nodi. L'agente esegue tcpdump sul nodo, comprime i file di acquisizione e li carica nel tuo bucket S3.

Prerequisiti

Verifica di disporre di quanto segue:

  • Un cluster Amazon EKS Auto Mode esistente con l'agente di monitoraggio dei nodi. Per ulteriori informazioni, consulta Rileva i problemi di integrità dei nodi e abilita la riparazione automatica dei nodi.

  • Lo strumento di riga di comando kubectl installato e configurato per comunicare con il cluster.

  • La AWS CLI è stata installata e ha effettuato l'accesso con autorizzazioni sufficienti per creare bucket e oggetti S3.

  • È installata una versione recente di Python 3.

  • L' AWS SDK per Python 3, Boto 3, è installato.

  • La libreria PyYAML installata (). pip install pyyaml

Fase 1: Creare di una destinazione bucket S3 (facoltativo)

Se non disponi già di un bucket S3 per archiviare i file di acquisizione, creane uno. Sostituisci bucket-name e region con i tuoi valori.

aws s3api create-bucket --bucket <bucket-name> \ --region <region> \ --create-bucket-configuration LocationConstraint=<region>
Nota

Il --create-bucket-configuration parametro è obbligatorio per tutte le regioni tranneus-east-1.

Fase 2: Avviare l'acquisizione dei pacchetti

Utilizza lo start-capture.py script dal repository dell'agente di monitoraggio del nodo (tools/start-capture.py) per generare credenziali S3 prefirmate, creare la NodeDiagnostic risorsa e applicarla al cluster.

  1. Identifica il nodo da cui desideri acquisire il traffico.

    kubectl get nodes
  2. Salva lo script start-capture.py dal repository dell'agente di monitoraggio del nodo sul tuo computer locale, quindi eseguilo. Sostituisci <bucket-name> e <node-name> con i tuoi valori.

    python3 start-capture.py --bucket <bucket-name> --node <node-name>

    Opzioni comuni:

    # Capture for 5 minutes on eth0 with a filter python3 start-capture.py --bucket <bucket-name> --node <node-name> \ --duration 5m --interface eth0 --filter "tcp port 443" # Preview the YAML without applying python3 start-capture.py --bucket <bucket-name> --node <node-name> --dry-run

    Lo script richiede Python 3 con, pyyaml installato boto3 e kubectl configurato per il cluster.

    Lo script genera una NodeDiagnostic risorsa come la seguente. Questo esempio viene fornito come riferimento; si noti che i upload campi richiedono credenziali S3 POST prefirmate che vengono generate a livello di codice dallo script.

    apiVersion: eks.amazonaws.com/v1alpha1 kind: NodeDiagnostic metadata: name: <node-name> # Required: node instance ID spec: packetCapture: duration: "30s" # Required: capture duration (max 1h) # interface: "eth0" # Optional: default is primary ENI. Use "any" for all interfaces # filter: "tcp port 443" # Optional: tcpdump filter expression # chunkSizeMB: 10 # Optional: file rotation size in MB (1-100, default: 10) upload: # Required: pre-signed S3 POST credentials url: "https://<bucket>.s3.amazonaws.com/" fields: key: "captures/<node-name>/${filename}" # ... other pre-signed POST fields (generated by the script)

Fase 3: Monitora l'avanzamento dell'acquisizione

Controlla lo stato dell'acquisizione.

kubectl describe nodediagnostic <node-name>

Lo stato mostrerà:

  • Runningmentre l'acquisizione è in corso.

  • Completedindicando il motivo al Success termine dell'acquisizione e al caricamento di tutti i file.

  • Completedcon il motivo Failure se l'acquisizione ha riscontrato errori.

Per visualizzare lo stato completo, incluso captureID (utilizzato per l'identificazione del percorso S3):

kubectl get nodediagnostic <node-name> -o jsonpath='{.status.captureStatuses}'

Passaggio 4: scarica i file di acquisizione da S3

Una volta visualizzato lo statoSuccess, scarica i file di acquisizione da S3.

aws s3 cp s3://<bucket-name>/captures/ ./captures/ --recursive

I file sono in formato pcap compresso con gzip. Decomprimi e analizza con tcpdump o Wireshark:

gunzip captures/*.gz tcpdump -r captures/capture.pcap0000 -n

Fase 5: rimozione

NodeDiagnosticle risorse non vengono eliminate automaticamente. Pulisci dopo aver ottenuto i file di acquisizione. L'eliminazione della risorsa mentre è in corso un'acquisizione interromperà immediatamente l'acquisizione.

kubectl delete nodediagnostic <node-name>

Opzioni e comportamento di configurazione

Per il riferimento completo alle packetCapture specifiche, alle opzioni di configurazione e ai dettagli sul comportamento, consulta la documentazione sull'acquisizione dei pacchetti nel repository dell'agente di monitoraggio dei nodi.