Getty Images/iStockphoto

So beheben Sie Netzwerkprobleme unter Linux und Windows

Das Debugging eines Netzwerkproblems sollte mit grundlegender Fehlerbehebung starten. Hilft das nicht, sollten Admins Verbindungen zum Client, zum Server und zum Netzwerk prüfen.

Fallen Netzwerkservices aus, müssen Administratoren die Ursache schnell finden. Woher wissen sie aber, welche Tools und Techniken sie in einem bestimmten Szenario einsetzen sollen? Netzwerke mögen komplex sein, das muss aber nicht für die dazugehörigen Probleme gelten. Netzwerkadministratoren verwenden je nach Service und den Symptomen eines Problems verschiedene Ansätze.

Beginnen Sie die Fehlersuche mit den Grundlagen. Ist der Client richtig konfiguriert und mit dem Netzwerk verbunden? Vergewissern Sie sich zudem, dass der Client auf wichtige Services zugreifen kann. Das sind Routing und Namensauflösung. Wenn die Konfiguration des Clients korrekt ist, kümmern Sie sich um den Remote-Server. Ist er online? Lässt er Verbindungen zu? Überprüfen Sie als nächstes die Einstellungen des Services, um sicherzustellen, dass er läuft und dem angegebenen Benutzer Zugriff gewährt.

Dieser logische Ansatz, von der grundsätzlichen Client-Anbindung bis zur Konfiguration des Services, ermöglicht Administratoren effiziente Fehlersuche bei Netzwerkproblemen. Beachten Sie bei der Fehlersuche die Schichten des OSI-Modells und des TCP/IP-Stacks. Fangen Sie dabei von unten an und hangeln Sie sich nach oben.

Um diesen Ansatz zu veranschaulichen, gehen wir in diesem Artikel mehrere Beispiele für die Fehlersuche durch. Sie zeigen, wie Sie Netzwerkprobleme auf den verschiedenen Ebenen beheben können. Dabei verweisen wir auch auf bestimmte Linux- und Windows-Befehle.

Abbildung 1: Beachten Sie den TCP/IP-Stack, wenn Sie auf der Fehlersuche sind.
Abbildung 1: Beachten Sie den TCP/IP-Stack, wenn Sie auf der Fehlersuche sind.

1. Starten Sie mit den Grundlagen

Es ist wichtig, mit den Grundlagen zu beginnen. Beachten Sie folgende Schritte:

  1. Ist es eingesteckt?
  2. Ist es angeschaltet?
  3. Haben Sie es neu gestartet?
  4. Funktioniert ein Ping? Können Sie den Namen anpingen?

Ist es eingesteckt?

Es klingt simpel, aber bei diesem Schritt untersuchen Sie mehrere Stellen. Gibt es eine physische Netzwerkverbindung zwischen dem Host und dem Zielgerät? Möchten Sie etwa eine interne Netzwerkverbindung herstellen, dann prüfen Sie, ob alle Geräte angeschlossen sind und korrekt funktionieren.

Ist es angeschaltet?

Dies mag auch logisch erscheinen. Prüfen Sie aber trotzdem, ob alle involvierten Geräte angeschaltet sind. Checken Sie dabei nicht nur die Geräte, sondern auch, ob die notwendigen Services laufen. Das können Firewalls, Proxies, Filter, Load Balancer oder andere Netzwerkdienste sein.

Haben Sie es neu gestartet?

Ist das Gerät angeschaltet, haben Sie es neu gestartet? Ein Neustart des Geräts löst häufig Probleme, speziell bei Windows-Systemen.

Funktioniert ein Ping?

Ping ist ein ziemlich nützliches Werkzeug. Führen Sie erst einen Ping zu einer bekannten und funktionierenden IP-Adresse aus, um die grundlegende Verbindung zu überprüfen. Anschließend pingen Sie den Host-Namen an, um sowohl die Verbindung als auch die Namensauflösung zu überprüfen.

2. Überprüfen Sie die Verbindung zum Server

Starten wir mit einem einfachen Szenario: Ein Benutzer öffnet ein Ticket, in dem er angibt, dass er einen bestimmten Server nicht erreichen kann. Nehmen wir an, dass er auch Zugriff haben sollte. Welche Schritte könnte ein Netzwerkadministrator durchführen, um dem Problem auf den Grund zu gehen?

1. Überprüfen Sie mit den folgenden Befehlen die lokale IP-Adresse und die Subnetzmaske.

Linux-Befehl:

ip addr

Windows-Befehl:

ipconfig

2. Überprüfen Sie, ob die Werte für das Standard-Gateway und den DNS-Server korrekt sind.

Linux-Befehl:

ip addr

Windows-Befehl:

ipconfig /all

3. Pingen Sie den Router und den DNS-Server an.

Linux- und Windows-Befehl:

ping <IP>

4. Pingen Sie den Ziel-Server an, sowohl über die IP-Adresse als auch über den Hostnamen, um die Verbindung und die Namensauflösung zu überprüfen.

Linux- und Windows-Befehl:

ping <hostname>

5. Löschen Sie den Namensauflösungs-Cache des Hosts.

Windows-Befehl:

ipconfig /flushdns

Vergewissern Sie sich zunächst, dass die lokale Workstation des Benutzers richtig konfiguriert ist. Client-Systeme erhalten ihre IP-Adresskonfigurationen normalerweise dynamisch von einem DHCP-Server (Dynamic Host Configuration Protocol). Tippfehler sind an dieser Stelle also eher selten. Hat das System eine statische Konfiguration, überprüfen Sie die Werte für IP-Adresse, Subnetzmaske, Standard-Gateway und DNS-Server sorgfältig auf Fehler.

Verwenden Sie ping, um die Verbindung zu überprüfen. Ein Ping zum Namen testet sowohl die Verbindung als auch die Namensauflösung.

Pingen Sie die IP-Adresse an, um die Verbindung zu überprüfen. Pingen Sie den Namen an, um sowohl Verbindung als auch Namensauflösung zu überprüfen.
Abbildung 2: Pingen Sie die IP-Adresse an, um die Verbindung zu überprüfen. Pingen Sie den Namen an, um sowohl Verbindung als auch Namensauflösung zu überprüfen.

Windows-Clients speichern kürzlich aufgelöste Hostnamen und IP-Adressen im Cache. Lassen Sie sich diesen Cache mit ipconfig /displaydns anzeigen. Löschen Sie den Cache mit ipconfig /flushdns.

3. Überprüfen Sie die Verbindungen zum Netzwerkordner

Nehmen wir ein anderes Problem: Ein Benutzer kann sich mit dem Server verbinden, bekommt aber keinen Zugriff auf ein gemeinsam genutztes Verzeichnis.

  • Vergewissern Sie sich, dass der Ordner korrekt freigegeben ist. Unter Linux sehen Sie im Verzeichnis /etc/exports, wenn es eine NFS-Freigabe ist. Unter Windows klicken Sie mit der rechten Maustaste auf den Ordner, öffnen Sie Eigenschaften und danach die Registerkarte Freigabe (Sharing).
  • Sehen Sie sich die Netzwerkfreigaben auf dem System an. Unter Linux verwenden Sie den Befehl showmount. Unter Windows führen Sie net view aus.
  • Überprüfen Sie die Berechtigungen der Freigabe. Wurde der Benutzer ausdrücklich gesperrt? Gehört er zu einer Gruppe, die eine entsprechende Berechtigung hat? Unter Linux verwenden Sie /etc/exports. Unter Windows klicken Sie mit der rechten Maustaste auf den Ordner, öffnen die Eigenschaften und danach die Registerkarte Freigabe.
  • Überprüfen Sie, zu welchen Gruppen der Benutzer gehört. Administratoren vergeben in der Regel Zugriffsberechtigungen für Benutzergruppen mit ähnlichen Sicherheitsanforderungen. Benutzern wird der Zugriff verweigert, wenn sie nicht zu einer Gruppe mit entsprechenden Zugriffsrechten gehören. Unter Linux verwenden Sie groups <Benutzername>. Unter Windows öffnen Sie die Eigenschaften des Benutzerkontos in Active Directory.

Ist der Zugriff auf den Server an sich nicht das Problem, wie im vorherigen Szenario, überprüfen Sie die Konfiguration des gemeinsam genutzten Verzeichnisses. Ist es wirklich freigegeben? Welche Berechtigungen sind festgelegt und hat der entsprechende Nutzer die notwendigen Rechte für einen Zugriff? Wenn ein Benutzer Zugriff hat, geschieht dies in der Regel über eine Gruppenmitgliedschaft.

Überprüfen Sie die Berechtigungen für die Windows-Freigaben und die Gruppenzugehörigkeiten.
Abbildung 3: Überprüfen Sie die Berechtigungen für die Windows-Freigaben und die Gruppenzugehörigkeiten.

4. Überprüfen Sie die Verbindungen zu einer Website

Manchmal müssen Nutzer auf eine interne Website zugreifen, aber diese wird nicht angezeigt. Besteht eine Verbindung, zumindest anhand der Ping-Ergebnisse, dann überprüfen Sie die Einstellungen wie Router-Filter, Namensauflösung, Status des Services sowie Zertifikate.

  • Filtern irgendwelche Router zwischen Client und Webserver HTTP- und HTTPS-Datenverkehr?
  • Ist ein Ping auf den Host-Namen erfolgreich? Funktioniert also die Namensauflösung?
  • Überprüfen Sie, ob ein DNS-Ressourceneintrag für die Website auf dem DNS-Server vorhanden ist. Unter Linux sowie Windows können Sie nslookup ausführen.
  • Überprüfen Sie, ob der HTTP-Service auf dem Webserver läuft. Verwenden Sie unter Linux entweder systemctl status httpd oder systemctl restart httpd. Unter Windows öffnen Sie die Verwaltung und danach die Services-Konsole.
  • Suchen Sie nach Fehlern beim Zertifikat, die im Browserfenster des Benutzers angezeigt werden. Mögliche Fehlerquellen sind abgelaufene Zertifikate oder eine unterbrochene Zertifikatskette.

Probleme beim Zugriff auf die Website liegen wahrscheinlich am Server. Läuft der Server, überprüfen Sie den Webservice. Testen Sie zudem, ob der Client den Namen der Website in eine IP-Adresse auflösen kann. Sowohl bei Linux als auch bei Windows gibt es das Tool nslookup. Linux unterstützt sowohl host als auch dig, um die Namensauflösung zu testen.

Führen Sie unter Linux den Befehl systemctl aus, um den Status der Services zu prüfen.
Abbildung 4: Führen Sie unter Linux den Befehl systemctl aus, um den Status der Services zu prüfen.

Ein weiteres nützliches Tool für die Fehlersuche bei den Services ist Telnet. Viele Netzwerkadministratoren nutzen Telnet heutzutage nicht gerne für den Fernzugriff. Die meisten Admins bevorzugen Secure Shell (SSH). Telnet ist aber ein nützliches Tool, um Port-Verbindungen zu testen. Wollen Sie etwa den Status von HTTP-Port 80 überprüfen, führen Sie # telnet www.website.com 80 aus.

Gibt Telnet HTML-Code oder Webserver-Informationen zurück, war die Verbindung erfolgreich. Port 80 ist also verfügbar und der Service läuft. Erhalten Sie eine Fehlermeldung für die Verbindung, kann der Quellcomputer Port 80 nicht erreichen. Mögliche Gründe sind ein Filter oder der Service läuft ganz einfach nicht.

Auf einem modernen Betriebssystem müssen Sie Telnet aber wahrscheinlich installieren, da es kaum noch auf den Betriebssystemen vorinstalliert ist.

5. SSH-Konfigurationen überprüfen

Linux-Netzwerkadministratoren nutzen für die Fernwartung normalerweise SSH. Fällt diese Verbindung aus, ist der Verwaltungsaufwand möglicherweise höher. Um das Problem zu finden, überprüfen Sie die folgenden Einstellungen:

  • Stellen Sie sicher, dass der Service sshd auf dem Linux-Server läuft. Führen Sie dafür systemctl status sshd oder systemctl restart sshd aus.
  • Überprüfen Sie, ob die Datei sshd_config existiert und richtig konfiguriert ist.
  • Einige Administratoren blockieren den Root-Zugriff auf SSH-Server. Stattdessen müssen sich Nutzer mit dem Standard-Benutzerkonto verbinden und von dort aus weiten sie die Rechte aus. Setzen Sie in der Datei sshd_config den Parameter PermitRootLogin no.
  • Moderne SSH-Server verlangen häufig eine Authentifizierung mit Schlüsseln anstelle mit einem Passwort. Die Datei sshd_config kann beide Arten der Authentifizierung zulassen oder auch eine davon erzwingen. Setzen Sie in der Datei sshd_config die Option PasswordAuthentication no.

SSH ist das beliebteste Fernwartungs-Tool für die Administration von Linux-Systemen. Viele Security-Konfigurationen können jedoch Verbindungen unterbinden. Ist der Server gestartet und der SSH-Service läuft, überprüfen Sie die Datei sshd_config auf Einstellungen, die den Anwender root an einer Verbindung hindern. Sehen Sie auch nach, ob Nutzer explizit aufgelistet sind, die eine Verbindung etablieren dürfen. Vielleicht ist auch eine Authentifizierung via Schlüssel notwendig. Jede dieser Einstellungen könnte einen Administrator an einer Verbindung hindern, wenn die entsprechenden Anforderungen nicht erfüllt sind.

Überprüfen Sie die Einträge in sshd_config, um die Security-Einstellungen für SSH zu bestätigen. Dieser Eintrag verhindert eine Authentifizierung mit einem Passwort.
Abildung 5: Überprüfen Sie die Einträge in sshd_config, um die Security-Einstellungen für SSH zu bestätigen. Dieser Eintrag verhindert eine Authentifizierung mit einem Passwort.

Best Practices, um Netzwerkprobleme zu debuggen

Tritt das unvermeidliche Problem mit der Netzwerkverbindung auf, müssen Sie wissen, wie Sie es so schnell wie möglich erkennen und beheben können. Überprüfen Sie zunächst die offensichtlichen und grundlegenden Funktionen wie Stromversorgung, physische Verbindungen und führen Sie Tests mit Ping durch.

Überprüfen Sie die Funktionen und Einstellungen in den allgemeinen Einstellungen des Servers. Vergewissern Sie sich schließlich, dass der entsprechende Service läuft. Sehen Sie nach, ob gemeinsam genutzte Ressourcen verfügbar und die jeweiligen Berechtigungen korrekt sind. Überprüfen Sie die Gruppenzugehörigkeiten der Nutzer, um sicherzustellen, dass sie den Service oder die Ressource nutzen dürfen.

Die oben aufgezeigten Szenarien bewegen sich aufwärts. Es geht von den Grundeinstellungen über die Server-Verbindungen bis zur Funktionalität des Services. Damit können Sie einen Fehler methodisch, logisch und effizient suchen. Orientieren Sie sich bei der Fehlersuche im Netzwerk am OSI-Modell oder dem TCP/IP-Stack. Die unterste Ebene ist dabei die grundlegende und die oberste die komplexeste.

Erfahren Sie mehr über Netzwerksoftware

ComputerWeekly.de
Close