Belege auf Paketebene werden benötigt? Zeichne Pakete auf

Veröffentlicht am:

Connection Troubleshoot identifiziert wahrscheinliche Verbindungsfehler. Einige Incidents benötigen jedoch Belege auf Paketebene. Ein Packet Trace kann zeigen, ob eine TCP-Anfrage die VM erreichte, ob die VM antwortete, wie die Verbindung endete und welche Adressen und Ports beteiligt waren.

Verwende Network Watcher packet capture auf WEB01. Begrenze die Aufzeichnung auf TCP-Port 80, erzeuge eine Anfrage von WEB02, stoppe die Aufzeichnung und untersuche das Ergebnis in Wireshark.

Dieser Trip baut auf Ein Netzwerkproblem muss diagnostiziert werden? Verwende Network Watcher auf. Lösche dessen temporäre Deny-Regel, behalte beide Web-VMs und bestätige, dass der Dienst cloudtrips-web auf WEB01 läuft.

Packet Captures können Anmeldedaten, personenbezogene Daten, Tokens und Anwendungspayloads enthalten. Zeichne nur einen autorisierten Fluss mit engem Filter auf, schütze die Datei und lösche sie nach der Untersuchung.

Network Watcher Agent installieren

Packet Capture benötigt die Network-Watcher-Agent-Erweiterung auf der Ziel-VM. Öffne vm-cloudtrips-web01-test-weu > Settings > Extensions + applications. Ist AzureNetworkWatcherExtension nicht aufgeführt, wähle Add, installiere Network Watcher Agent for Linux und warte auf die erfolgreiche Bereitstellung. Ein Neustart ist nicht erforderlich.

Prüfe mit Azure CLI:

az vm extension list \
  --resource-group rg-cloudtrips-network-test-weu \
  --vm-name vm-cloudtrips-web01-test-weu \
  --query "[?publisher=='Microsoft.Azure.NetworkWatcher'].{Name:name,State:provisioningState}" \
  --output table

Erwarte AzureNetworkWatcherExtension mit Succeeded. Der Agent benötigt Zugriff auf Azure-Plattformadressen und auf den gewählten Storage Account. Behebe Erweiterungs- oder Uploadfehler, bevor du die Aufzeichnung startest.

Network-Watcher-Agent-Erweiterung erfolgreich auf WEB01 installiert

Kurzlebigen Capture Storage erstellen

Packet Captures in Blob Storage sind leichter abrufbar als Dateien auf einer VM ohne administrativen Anmeldepfad. Erzeuge einen global eindeutigen Namen:

CAPTURE_STORAGE="stctpc$(az account show --query id --output tsv | tr -d '-' | cut -c1-10)"
printf 'Capture storage account: %s\n' "$CAPTURE_STORAGE"

Erstelle einen StorageV2-Account mit Standard LRS, diesem Namen, rg-cloudtrips-network-test-weu und West Europe. Behalte Secure Transfer und TLS 1.2 als Minimum. Der temporäre Account dient nur dem Capture und kann am Ende des Trips gelöscht werden.

Speichere Captures nicht in einem allgemeinen Anwendungscontainer. Nur autorisierte Netzwerk- und Security-Operatoren sollten Zugriff erhalten.

Gefilterte Aufzeichnung starten

Suche nach Network Watcher, öffne den Dienst und wähle Network diagnostic tools > Packet capture > Add. Konfiguriere:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-network-test-weu
Target type: Virtual machine
Target instance: vm-cloudtrips-web01-test-weu
Packet capture name: pc-web01-http-test
Capture location: Storage account
Storage account: CAPTURE_STORAGE-Wert
Maximum bytes per packet: 0 (vollständiges Paket erfassen)
Maximum bytes per session: 5 MB
Time limit: 120 seconds

Füge einen Filter hinzu:

Protocol: TCP
Local IP address: Leer lassen
Local port: 80
Remote IP address: Leer lassen
Remote port: Leer lassen

Der lokale Port ist 80, weil die Aufzeichnung auf WEB01 läuft und dort der Webdienst lauscht. Leere IP-Felder erlauben jede Clientadresse, schließen aber weiterhin Nicht-TCP- und Nicht-Port-80-Traffic aus. Wähle Start packet capture.

Gefiltertes Network-Watcher-Packet-Capture für TCP-Port 80 auf WEB01

Einen bekannten Fluss erzeugen

Lies bei Status Running die private IP von WEB01 und sende eine Anfrage von WEB02:

WEB01_IP=$(az vm list-ip-addresses \
  --resource-group rg-cloudtrips-network-test-weu \
  --name vm-cloudtrips-web01-test-weu \
  --query '[0].virtualMachine.network.privateIpAddresses[0]' \
  --output tsv)

az vm run-command invoke \
  --resource-group rg-cloudtrips-network-test-weu \
  --name vm-cloudtrips-web02-test-weu \
  --command-id RunShellScript \
  --scripts "curl --silent --show-error --connect-timeout 5 http://${WEB01_IP}/"

Erwarte CloudTrips response from WEB01. Kehre zur Aufzeichnung zurück und wähle Stop, statt das vollständige Zeitlimit abzuwarten. Der Status sollte zu Stopped wechseln. Das ist der endgültige Status der beendeten Aufzeichnung; das Portal ändert ihn nicht zu Completed.

Capture herunterladen und untersuchen

Öffne pc-web01-http-test und lade die .cap-Datei über den Link zur Capture-Datei aus Storage herunter. Bewahre sie in einem geschützten Arbeitsverzeichnis auf.

Öffne die Datei in Wireshark und wende diesen Display Filter an:

tcp.port == 80

Suche die Verbindung zwischen der privaten Adresse von WEB02 und WEB01_IP. Ein normaler TCP-Austausch beginnt mit dem Three-Way Handshake:

WEB02 -> WEB01  SYN
WEB01 -> WEB02  SYN, ACK
WEB02 -> WEB01  ACK

Die folgenden Pakete enthalten HTTP-Anfrage und -Antwort. Wähle ein Paket und erweitere Transmission Control Protocol, um Quell- und Zielports, Sequenznummern, Acknowledgements und Flags zu prüfen. Der erfolgreiche Handshake beweist, dass WEB01 die TCP-Verbindung erhielt und annahm; die HTTP-Antwort beweist die Antwort der Anwendung.

Wireshark zeigt TCP-Handshake und HTTP-Austausch zwischen WEB02 und WEB01

Packet Capture liefert Belege, aber keine automatische Root-Cause-Analyse. Wiederholte SYN-Pakete ohne SYN-ACK sprechen für verworfene Anfrage oder Antwort. Ein Reset kann einen geschlossenen Port oder eine explizite Ablehnung anzeigen. Vollständige Stille auf WEB01 bedeutet, dass der Traffic den Capture-Punkt nicht erreichte. Korreliere diese Beobachtungen mit NSG-Diagnose, Routen, Gast-Firewall und Anwendungslogs.

Sensible Artefakte entfernen

Lösche die Session pc-web01-http-test in Network Watcher. Lösche danach die heruntergeladene .cap-Datei und den temporären Account $CAPTURE_STORAGE, sofern keine freigegebene Aufbewahrungsrichtlinie sie verlangt. Das Löschen der Session entfernt nicht zwingend eine separat heruntergeladene Kopie.

Behalte den Network Watcher Agent nur, wenn spätere Diagnosen ihn benötigen; entferne ihn sonst unter Extensions + applications von WEB01. Deallokiere beide VMs nach Abschluss des Labs.

Fahre mit Traffic-Flow-Datensätze werden benötigt? Zeige Flow Logs an fort. Behalte beide Web-VMs und das CloudTrips-VNet für die Flow-Record-Übung.