Netzwerk

Aufspüren schwer fassbarer Netzwerkprobleme

Christopher Stoneff

 

Kurz zusammengefasst:

  • Die üblichen Ursachen für Netzwerkprobleme
  • Über das Offensichtliche hinausblicken
  • Wenn Tools zur Problembehandlung nicht helfen
  • Warum Verbindungsbeschränkungen konfiguriert werden müssen

Es ist wahrscheinlich schon oft passiert: Ihr Computer kann nicht mit anderen Computern kommunizieren, und Sie wissen nicht, woran das liegt. Ihr Verwaltungssystem befindet sich in einem Segment eines gerouteten Netzwerks, das über einen Router wie beispielsweise Microsoft Internet

Security and Acceleration Server (ISA) oder ein anderes Hardwaregerät mit anderen Netzwerksegmenten verbunden ist. Wenn Sie versuchen, 10, 20 oder sogar 100 Systeme zu verwalten, gibt es keine Probleme. Doch wenn Sie dann 500 Systeme verwalten möchten, kann Ihr Computer im Netzwerk nur mit den Computern kommunizieren, zu denen bereits offene Verbindungen bestehen. Sie können nicht mit anderen Systemen kommunizieren, und Sie haben keinen Zugriff auf das Internet, doch kein anderer Benutzer hat mit diesem Phänomen zu kämpfen, selbst nicht in Ihrem Segment. Wo würden Sie mit der Suche beginnen?

Analysieren des Problems

In dieser Situation wird am häufigsten angenommen, dass die Verwaltungssoftware fehlerhaft ist. Viele proaktive Verwaltungstools sind mit Ihren Systemen verbunden und verwalten diese, doch bisweilen können diese Tools selbst Ursache des Problems sein, das Sie aufzuspüren versuchen. Das ist darauf zurückzuführen, dass ein proaktives Verwaltungstool im Namen einer besseren Verwaltung Tausende von Verbindungen zu Ihren Geräten erstellen kann. Windows® hält diese Verbindungen standardmäßig zwei Minuten lang offen, selbst wenn sie im Leerlauf sind, es sei denn, dass das Tool, die Anwendung oder der Dienst sie länger aktiv hält. Obwohl Ihr Verwaltungssystem also bereits zwei Minuten lang nicht mit anderen Computern kommuniziert hat, können dennoch über 1.000 Verbindungen offen sein. (Sie können sich offene Verbindungen durch Ausführen von NETSTAT in einer Eingabeaufforderung anzeigen lassen. Der NETSTAT-Befehl zeigt Ihnen alle offenen und ausstehenden Verbindungen zu und von Ihrem System an, sowie Verbindungen, die geschlossen werden. Außerdem wird der Status aller Verbindungen angezeigt. Beschreibungen der Statusmeldungen können in RFC 793 unter tools.ietf.org/html/rfc793 eingesehen werden.)

Um fehlerhafte Verwaltungssoftware auszuschließen, können Sie eine Batchdatei erstellen, die Verbindungen zu den Remotesystemen einrichtet. Wenn das gleiche Problem beim Ausführen der Batchdatei auftritt, wissen Sie, dass es nicht an der Verwaltungssoftware und ihren Threads gelegen hat. Dies ist ein Beispiel für den Inhalt der erforderlichen Batchdatei:

Net use \\system01\ipc$
Net use \\system02\ipc$
Net use ...

Wenn das fragliche Verwaltungsprogramm seinen eigenen Netzwerk- und Authentifizierungsstapel implementiert hat, könnte es der Übeltäter sein, doch bei agentlosen Lösungen, um die es sich bei den meisten dieser Verwaltungspakete handelt, verwendet das Tool die Netzwerk- und Authentifizierungsstapel des Betriebssystems zum Durchführen von Netzwerkvorgängen. Die Verwendung einer Batchdatei, die genauso viele Netzwerkverbindungen startet, ohne dass der Fehler verursacht wird, zeigt, dass das Problem nicht auf die Verwendung der Netzwerk- und Authentifizierungsstapel des Betriebssystems durch das Programm zurückzuführen ist, da die Batchdatei sie ebenfalls verwendet.

Protokolle und Fehlermeldungen, die nicht hilfreich sind

Sie dürften bemerkt haben, dass Sie beim Versagen der Verbindungen falsche Fehlerinformationen erhalten haben: Fehler 53 (der Netzwerkpfad wurde nicht gefunden), Fehler 64 (der Netzwerkname wurde gelöscht) und Fehler 1203 (kein Netzwerkanbieter hat den angegebenen Netzwerkpfad akzeptiert). Alle diese Fehler könnten normalerweise auf Probleme mit der Namensauflösung hinweisen, doch alle anderen Computer haben damit und mit der Herstellung von Verbindungen zu denselben Systemen keine Probleme. Um zu überprüfen, dass der Fehler nicht bei Ihren Maschineneinstellungen liegt, führen Sie einfach „ipconfig“ aus, um zu bestätigen, dass die Einstellungen richtig sind.

Da das Phänomen in Ihrem Verwaltungssystem angesiedelt zu sein scheint, sollten Sie sich die die Ereignisprotokolle ansehen. Eine Suche in den Anwendungsprotokollen ist ergebnislos, doch im Systemprotokoll finden Sie ein Warnereignis 4226 aus der Ereignisquelle TCP/IP, in dem es heißt, dass die maximale Anzahl von Verbindungen erreicht wurde (siehe Abbildung 1).

Abbildung 1 Die TCP-Verbindungsbeschränkung wurde erreicht

Abbildung 1** Die TCP-Verbindungsbeschränkung wurde erreicht **

Eine gründliche Suche in der Microsoft® Knowledge Base nach Verbindungsbeschränkungen offenbart, dass unvollständigen Verbindungen Verbindungsbeschränkungen auferlegt werden, was jedoch nicht für abgeschlossene Verbindungen gilt. Sie haben die Möglichkeit, die folgenden Registrierungseinträge unter HKLM\System\CurrentControlSet\Services\TCPIP\Parameters anzupassen, um die oben genannten Faktoren zu steuern: TcpNumConnections wird verwendet, um die maximale Anzahl von Verbindungen festzulegen, die bei TCP gleichzeitig offen sein können (der Standardwert ist 10). TCPTimedWaitDelay legt die Zeit fest, in der eine Verbindung im TIME_WAIT-Status verbleibt, wenn sie geschlossen wird. Die Standardhalbwertzeit beträgt 120 Sekunden, d. h., eine Verbindung ist praktisch 4 Minuten lang in Gebrauch. Schließlich spielt MaxFreeTcbs auch eine Rolle bei der maximalen Anzahl von Verbindungen. Wenn alle TCP-Steuerblöcke in Gebrauch sind, sollte TCP Verbindungen freigeben, die im TIME_WAIT-Status aufgeführt werden, um mehr Verbindungen zu erstellen, obwohl TCPTimedWaitDelay noch nicht abgelaufen ist. TCPTimedWaitDelay hat einen Wertbereich von 30-300 Sekunden (0x1E – 0x12C).

Abhängig von Ihrem Szenario dürften diese Registrierungsänderungen zu einer leichten Verbesserung der Gesamtleistung führen. Eine weitere Möglichkeit besteht darin, die TCPIP.sys-Datei zu patchen, um diese Beschränkungen zu entfernen, doch dies führt nur zu Verbesserungen in P2P-Anwendungen.

Netzwerkerfassungen

Nach weiteren erfolglosen Versuchen zur Lösung der Verbindungsprobleme scheint eine Netzwerkerfassung der beteiligten Computer vielversprechend. Beim Ausführen von Microsoft Netzwerkmonitor (Netmon) wurden Erfassungen erstellt, die genau dieselben Ergebnisse zeigten, die in den Verwaltungstools und Testskripts angezeigt wurden: erst funktioniert alles, dann auf einmal nicht mehr, ohne dass ein Fehler angezeigt wird.

Abbildung 2 zeigt das Ergebnis beim Ausführen von Netmon, wobei eine erfolgreiche Kommunikation zwischen den ersten n Systemen angezeigt wurde. Beachten Sie, dass Bestätigungen von RPC-Anforderungen erhalten werden. Dies ist genau das, was Sie sehen wollen – erfolgreiche bidirektionale Kommunikation.

Abbildung 2 Erfolgreiche Kommunikation in Netmon

Abbildung 2** Erfolgreiche Kommunikation in Netmon **(Klicken Sie zum Vergrößern auf das Bild)

Jetzt müssen Sie sich die Erfassungen aus dem Verwaltungssystem und den Remotecomputern ansehen, die den Fehler 53/1203 aufzuweisen scheinen. Wie erwartet, gibt es nichts zu sehen, da die Computer nicht miteinander kommunizieren. In der Netzwerkerfassung in Abbildung 3 hat das Verwaltungssystem die IP-Adresse aufgelöst und versucht, über Port 445 (dem Microsoft-SMB-Port) eine Verbindung zum System herzustellen, erhält aber nie eine Antwort.

Abbildung 3 Versuche, über Port 445 eine Verbindung zum System herzustellen, führen zu keiner Antwort

Abbildung 3** Versuche, über Port 445 eine Verbindung zum System herzustellen, führen zu keiner Antwort **(Klicken Sie zum Vergrößern auf das Bild)

Der Fehler, der gemeldet wird, wenn mehr Threads als die derzeitigen Verbindungsmöglichkeiten Ihres Computers vorhanden sind, ist nicht immer konsistent. In einigen Fällen könnte Ihnen das Quellsystem einen Fehler 53 melden, der anzeigt, dass Sie Namensauflösung erhalten haben, aber die IP-Adresse einfach nicht gefunden werden konnte. Dies ist ein Hinweis auf einen DNS, der eine Adresse bereitstellt, zu der Sie keine Verbindung herstellen können. Möglicherweise erhalten Sie einen Fehler 1203, der anzeigt, dass kein Computer auf den angeforderten Namen oder die IP-Adresse geantwortet hat. Fehler 1203 zeigt in diesem Fall an, dass der DNS für Sie nicht verfügbar ist. Sie werden feststellen, dass dies der Fall ist, wenn Sie „nslookup“ ausführen.

Zu diesem Zeitpunkt sind Sie wahrscheinlich frustriert, aber es gibt noch weitere Optionen. Die meisten Benutzer werden aufgrund der Art und Weise, wie sich dieses Problem darstellt, nicht einmal in Erwägung ziehen, sich die Verbindungsinfrastruktur anzusehen: Ihr Computer ist der einzige, der keine Verbindung zum übrigen Netzwerk herstellen kann, und die Ereignisprotokolle zeigen, dass Ihr Computer die maximale Anzahl zulässiger Verbindungen erreicht hat, sodass das Problem nicht an der Architektur liegen dürfte.

Obwohl die vielen tausend Verbindungen, die von Ihrer Verwaltungslösung erstellt werden, nicht gleichzeitig initiiert werden, bedeuten Übertragungs-Keep-Alives und Verbindungstimeouts möglicherweise, dass jeweils mehr Verbindungen offen sind als Sie vielleicht denken. Daher müssen Sie auch die Systeme untersuchen, die Ihr übriges Netzwerk verbinden.

Im Folgenden soll dies näher erläutert werden. Wie bereits erwähnt, durchläuft der Netzwerkverkehr durch Ihr Netzwerk Switches, Router und vielleicht auch Firewalls. An einem beliebigen Punkt, wobei es sich normalerweise um den Router oder die Firewall handelt, liegt u. U. ein Angriffserkennungssystem vor. Verwaltete Switches und Router können ebenfalls eine Datenverkehrfilterung verwenden. Sie oder die Person, die diese Geräte steuert, muss die Protokolle auf Fehler oder Warnungen hin überprüfen. Das Kommunikationsproblem könnte durchaus auf diese Systeme zurückzuführen sein.

Da Sie Verbindungen von einem internen System zu anderen internen Systemen herstellen, stellen Sie möglicherweise fest, dass keine Warnungen generiert werden, weil Warnungen für das Gerät nicht konfiguriert wurden oder weil es sich bei dem Problem nicht um einen Eindringversuch oder DoS-Angriff (Denial of Service) handelt. Auch hier sollten Sie mit den Protokollen beginnen. Bei ISA Server beispielsweise finden Sie diese Protokolle in der ISA Server-Verwaltungskonsole unter Arrays\<Arrayname>Monitoring (Überwachung)\Logging (Protokollierung).

Wenn Sie durch eine Richtlinie blockiert werden, können Sie (im Fall von ISA Server) nach folgenden Ergebniscodes suchen, wobei die Quell-IP-Adresse Ihr Verwaltungscomputer ist:

  • 0xc0040037 FWX_E_TCP_RATE_QUOTA_EXCEEDED_DROPPED
  • 0xc004000d FWX_E_POLICY_RULES_DENIED
  • 0xc0040017 FWX_E_TXP_SYN_PACKET_DROPPED

Wenn Sie solche Ergebnisse finden, haben Sie die Ursache Ihrer Konnektivitätsprobleme identifiziert.

Implementieren der Lösung

Jetzt, da Sie das Problem identifiziert haben, kann die Lösung einfach implementiert werden. Oft wird dies aber aufgrund von Abteilungsrichtlinien erschwert. Bevor Sie Änderungen vornehmen, stellen Sie sicher, dass Sie über die entsprechenden Berechtigungen verfügen, denn das Erstellen von Ausschlüssen bei den Sicherheitskonfigurationen Ihrer Firewalls, Router und/oder Angriffserkennungssysteme ist nicht immer zulässig.

ISA Server wird hier erneut als Beispiel herangezogen, und in den folgenden Schritten wird aufgezeigt, wie die maximale Anzahl von Verbindungen für einen bestimmten Host oder für alle Computer im Netzwerk (wie in Abbildung 4 dargestellt) erhöht werden kann. Öffnen Sie die ISA Server-Verwaltungskonsole, und navigieren Sie zu Arrays\<Arrayname>\Konfiguration\Allgemein\Flutabwehreinstellungen konfigurieren.

Abbildung 4 Erhöhen Sie die maximale Anzahl von Verbindungen für einen Host oder alle Computer, die ISA Server verwenden.

Abbildung 4** Erhöhen Sie die maximale Anzahl von Verbindungen für einen Host oder alle Computer, die ISA Server verwenden. **

Bei den beiden Einstellungen, die von Interesse sind, handelt es sich um die maximale Anzahl gleichzeitiger TCP-Verbindungen pro IP-Adresse und die maximale Anzahl von TCP-Verbindungsanforderungen pro Minute pro IP-Adresse. Die maximale Anzahl gleichzeitiger TCP-Verbindungen pro IP-Adresse ist in der Regel auf einen Wert eingestellt, der ausreichen würde, wenn keine aktive Verwaltung stattfindet, das heißt, kein einzelner Computer stellt schnell aktive Verbindungen zu Tausenden von anderen Computern her. In ISA Server beträgt die standardmäßige Beschränkung für die maximale Anzahl gleichzeitiger TCP-Verbindungen 160. Die maximale Anzahl von TCP-Verbindungsanforderungen pro Minute pro IP-Adresse ist so ausgelegt, dass der Schaden und die Sichtbarkeit bei Netzwerkscans eingeschränkt werden. Die Standardbeschränkung beträgt 600 Verbindungsanforderungen pro Minute pro IP.

Wie bereits erwähnt, hält Windows eine Verbindung für eine Dauer von zwei Minuten aktiv, vorausgesetzt, nichts anderes versucht, die Verbindung aktiv zu halten, selbst wenn die Verbindung nicht in Gebrauch ist. Das heißt, dass die Verbindung aktiv bleibt, selbst wenn Sie einen Computer bereits erfolgreich verwaltet haben und nicht mehr mit ihm kommunizieren müssen. Diese offene Verbindung wird bei der Gesamtzahl der Ihnen zugeteilten Verbindungen berücksichtigt. Wenn dieser Prozess ohne Entfernen von Verbindungen mehr als 160 Mal wiederholt wird, werden Sie feststellen, dass alle Verbindungsversuche von Ihrem Router abgewiesen werden. Selbst wenn Ihr Verwaltungsprogramm aktiv eine Sitzung beendet, könnte Windows die Verbindung durchaus in einem time_wait-Status belassen und darauf warten, dass der Zielcomputer der Trennung der Sitzung zustimmt.

Beginnen Sie mit Anpassungen beim vermutlichen Übeltäter: die maximale Anzahl gleichzeitiger TCP-Verbindungen pro IP-Adresse. Diese sollte so festgelegt werden, dass Ihr Verwaltungscomputer in der Lage ist, alle erforderlichen Verbindungen zu erstellen, damit die Systeme verwaltet werden können, ohne dass der Zugriff verweigert wird. Klicken Sie auf die Schaltfläche „Bearbeiten“ neben der Einstellung, und ändern Sie die Werte.

Die nächste Eingabeaufforderung (siehe Abbildung 5) hat ein Feld für die Beschränkung, bei der es sich um die standardmäßige, für alle Clients geltende Beschränkung handelt. Die benutzerdefinierte Ausnahme gilt für alle Computer, Netzwerke und so weiter, die auf der Registerkarte „IP-Ausnahmen“ des Flutabwehrdialogs definiert sind. Wenn Sie wünschen, dass alle Computer mehr Verbindungen erstellen können, ändern Sie den Beschränkungswert. Um die Ausnahme nur für Ihren Verwaltungscomputer zu konfigurieren, passen Sie die benutzerdefinierte Ausnahme an und fügen Ihren Computer der Registerkarte „IP-Ausnahmen“ hinzu. Es ist im Allgemeinen vorzuziehen, die Ausnahme nur für den eigenen Computer zuzulassen.

Abbildung 5 Standardmäßige Verbindungsbeschränkung und benutzerdefinierte Verbindungsbeschränkung

Abbildung 5** Standardmäßige Verbindungsbeschränkung und benutzerdefinierte Verbindungsbeschränkung **

Wenn Sie die benutzerdefinierte Ausnahme nur zum Ändern des Werts bei bestimmten Systemen verwenden möchten, ändern Sie den Wert im Feld zur benutzerdefinierten Ausnahme, und klicken Sie auf „OK“. Dann fügen Sie Ihren Computer auf der Registerkarte „IP-Ausnahmen“ im Flutabwehrdialog hinzu. Um nur Ihren Computer zur Ausnahmeliste hinzuzufügen, klicken Sie auf der Registerkarte „IP-Ausnahmen“ auf „Hinzufügen“, um das Dialogfeld „Computersätze“ aufzurufen. Klicken Sie auf „Neu“, um einen neuen Netzwerksatz zu erstellen, der Ihr(e) System(e) enthält, wenn ein Netzwerksatz, der diese Computer enthält, nicht bereits vorhanden ist. Wählen Sie diesen Netzwerksatz aus, und klicken Sie auf „Hinzufügen“, um den Netzwerksatz „Interne Netzwerke“ hinzuzufügen. Klicken Sie anschließend auf „Schließen“. Wählen Sie den Netzwerksatz „Interne Netzwerke“ erneut aus, und klicken Sie auf „Bearbeiten“. Hierdurch werden die Eigenschaften für „Interne Netzwerke“ geöffnet (siehe Abbildung 6). Klicken Sie in diesem Dialogfeld auf „Hinzufügen“, um ein Untermenü aufzurufen, in dem Sie einen Computer, einen Adressbereich oder ein Subnetz hinzufügen können. Wählen Sie „Computer“ aus. Geben Sie einen Namen zur Identifizierung des Eintrags, die IP-Adresse des Computers und eine Beschreibung ein, damit niemand, der diesen Eintrag später sieht, Ihr System möglicherweise entfernt (siehe Abbildung 7). Klicken Sie auf „OK“, um Ihr System hinzuzufügen, und dann erneut auf „OK“, um die Ausnahme hinzuzufügen. Nachdem diese Änderungen durchgeführt wurden, müssen Sie die Einstellungen übernehmen.

Abbildung 6 Einstellungen für Eigenschaften interner Netzwerke

Abbildung 6** Einstellungen für Eigenschaften interner Netzwerke **

Abbildung 7 Geben Sie den Computernamen, die IP-Adresse und eine Beschreibung ein, um sicherzustellen, dass Ihr System nicht entfernt wird.

Abbildung 7** Geben Sie den Computernamen, die IP-Adresse und eine Beschreibung ein, um sicherzustellen, dass Ihr System nicht entfernt wird. **

Führen Sie einen weiteren Versuch mit Ihrem proaktiven Verwaltungstool aus. Sie dürften feststellen, dass sich die Leistung sehr verbessert hat und die Verbindung nicht versagt, zumindest nicht aufgrund des Netzwerkverkehrs. Letzten Endes hat sich herausgestellt, dass das Problem nicht in der Anzahl von Verbindungen bestand, die von der Software initiiert wurde, sondern an einem Mangel richtiger Planung für die Verbindungen, die die Unterbrechung verursacht haben.

Gelernte Lektionen

Die größten Schwierigkeiten bereiten in der Regel wirklich schwer fassbare IT-Probleme und deren Lösung. Es sind die Probleme, die nicht vom Endbenutzer geschaffen oder vom Serverteam verursacht wurden, Probleme, die das Helpdesk nicht kennt und die Sie wahrscheinlich leider selbst lösen müssen. Es gibt eine Vielzahl von Tools, mit denen Sie Probleme beheben, isolieren und lösen können, doch manchmal reichen diese Tools nicht aus. Bisweilen liefern sie falsche Ergebnisse. In diesen Fällen müssen Sie klüger sein als die Tools.

Wenn Sie das nächste Mal zwischen einer Reihe von Computern in Ihrem Netzwerk ohne offensichtliche Erklärung keine Verbindungen herstellen können, probieren Sie die hier beschriebenen Schritte aus. Es besteht durchaus die Möglichkeit, dass Sie das Problem durch das Befolgen der Schritte, eine nähere Betrachtung Ihrer Verwaltungssoftware und das richtige Einstellen zulässiger Verbindungen am Ende lösen können.

Christopher Stoneff ist Produktmanager bei Lieberman Software (liebsoft.com), einem Softwareentwickler im Bereich Sicherheit und Systemverwaltung. Chris Stoneff verfügt über mehr technische Zertifizierungen als ein normaler Mensch eigentlich haben sollte. Sein Interesse gilt nicht nur der Frage, wie etwas auf eine bestimmte Weise funktioniert, sondern auch warum das so ist.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.