So überprüft man die iSCSI TCP-Konnektivität

Troubleshooting vSphere Networking mit netcat

| Autor: Thomas Drilling

Drillings Open-Source-Eck
Drillings Open-Source-Eck (Bild: Thomas Drilling)

Der Portscanner netcat (cc) wird auch als Schweizermesser für das TCP/UDP-Troubleshooting bezeichnet. Das Tool transportiert im Prinzip Daten von der Standardein- oder -ausgabe über TCP- und UDP-Netzwerkverbindungen und wurde über die Jahre auf nahezu alle Unix- und Linux-Plattformen portiert. Nicht jeder vSphere-Admins weiß, dass nc auch unter VMware ESX/(i) verfügbar ist

Am Beispiel der Diagnose der Konnektivität zwischen VMKernel-Adapter und iSCSI-Target sollen hier kurz die wichtigsten Parameter erläutert werden.

Voraussetzung ist, dass der vSphere-Admin Zugang zur ESX-Shell hat, wahlweise direkt am ESXI-Host, via SSH, über eine Server-Managementsoftware oder KVM-Lösung, via RemoteCLI oder über die vMA (VMware Management Assistant).

Horch wer kommt von draußen rein

Bei der IP-Storage-Fehlersuche ist es oft hilfreich, die physische Netzwerkkonnektivität zwischen ESXI-Host und ISCSI-Target prüfen zu können. Dabei hilft zwar auch schon ein vmkping, vmkping prüft aber nur den physikalischen Pfad und dass die Ziel-IP-Adresse auf ICMP antwortet. Das heißt aber noch nicht, dass die Remote-IP auch am iSCSI-TCP-Port 3260 horcht und TCP-Sessions vom ESXi-Host akzeptiert.
Beim Tieferschürfen leistet "netcat" (nc) wertvolle Dienste. Im folgenden Beispielszenario sind zwei VMKernel-Adapter iSCSI1 und iSCSI 2 mit einem iSCSI-Target (einer Synology-SAN) verbunden, das die Adresse 192.168.0.252 hat.

Nach dem Öffnen einer SSH-Verbindung auf den ESXi-Host besteht der erste Schritt darin, mit

nc -z 192.168.0.252 3260

zu prüfen, dass der angegebene Server auch tatsächlich auf dem Standard-iSCSI-Port lauscht. Der Parameter-z etabliert eine Session über den 3-Wege-TCP-Handshake und schließt sie anschließend wieder bei Erfolg mit der Meldung ...

Connection to 192.168.0.252 3260 port [tcp/*] succeeded!

Ferner ist es mit der Port-Scan-Komponente von nc möglich zu überprüfen, dass sich jede der IP-Adressen der VM-Kernel-Adapter erfolgreich verbinden kann. Dazu kann man mit dem Parameter –s das „ausgehende“ Interface explizit  angeben, im Beispiel 192.168.0.7 und 192.168.0.9

nc -z -s 192.168.0.7 192.168.0.252 3260
nc -z -s 192.168.0.9 192.168.0.252 3260

Falls es doch zu Fehlermeldungen kommt, weil z. B. das Target nach einen Reboot einfach noch nicht soweit ist, kann die Option –w hilfreich sein. Ist nämlich der Remote TCP-Port tatsächlich nicht erreichbar oder vermutet man, dass dies so ist, möchte nc aber mehrfach erneut einsetzen, kann man den per Default recht langen nc-Timeout mit –w herabsetzen, z. B. auf 1 Sekunde.

nc -z -w 1 192.168.0.9 3260