Tests bei Problemen mit der Internetverbindung
Autoren Martin Breidenbach, framp
Dieses HOWTO zu Linux oder der Abschnitt davon braucht eine Überarbeitung. Weitere Informationen findest Du hier. Deine Hilfe ist gefragt, das HOWTO zu verbessern. Danach entsorge bitte diese Signierung. |
Achtung: |
Alle im Folgenden detailiert beschriebenen Befehle zur Problemfindung sind in diesem Script zusammengefasst und es werden dazu weitere Analysen auf häufige Konfigurationsfehler durchgeführt. Es sollte der Einfachheit halber, da es eine selbstständige Problemlösung ermöglicht, ausgeführt werden. Sollte kein Erfolg bei der eigenen Problemlösung gegeben sein erleichtert und beschleunigt sich erfahrungsgemäß die Lösung des Problems, wenn die Ergebnisse des Scripts im Forum gepostet werden |
Wenn Ihr Probleme mit der Internetverbindung habt dann könnt Ihr uns die Arbeit erleichtern indem Ihr ein paar Tests macht und die Ergebnisse gleich mit postet. Das erspart oft mehrere Rückfragen.
Alle Befehle müssen in einem Konsolenfenster eingegeben werden.
Inhaltsverzeichnis
- 1 Öffnen eines Konsolenfensters
- 2 Inhalt einer Datei ansehen
- 3 root-Rechte
- 4 Ausgabe eines Befehls in Datei umleiten
- 5 Es funktioniert unter Windows aber nicht unter Linux
- 6 Verbindungstests mit PING
- 7 Was für eine Netzwerkkarte habe ich überhaupt ?
- 8 Netzwerkkartenkonfiguration anzeigen
- 9 Routing-Tabelle anzeigen
- 10 Standardgateway überprüfen
- 11 DNS-Servereinträge anzeigen
- 12 Ist die IPTables/Netfilter Firewall aktiviert ?
- 13 Ist NAT oder Masquerading aktiv ?
- 14 SuSEFirewall2 Einstellungen posten
- 15 Ist Routing aktiv ?
- 16 Die SuSEfirewall2 ist ein Skript,
- 17 Einfacher Weg lokale NetzwerkKonfigurationsFehler zu finden bzw lokale NetzwerkKonfigurationsInformationen für das LC-Network-Forum zu sammeln
Öffnen eines Konsolenfensters
Unter KDE entweder auf das Icon mit dem Monitor und der Muschel klicken. Oder ALT-F2 drücken und 'konsole
' eingeben. Oder ALT-CTRL-F1 drücken und an Textkonsole anmelden (und mit ALT-CTRL-F7 geht es zurück).
Inhalt einer Datei ansehen
Da auch hiermit Leute immer wieder unüberwindbare Probleme haben (GRUNDLAGEN und so...):
Den Inhalt einer Textdatei (wie z.B. /etc/resolv.conf
) kann man sich mit vielen Befehlen ansehen. Da bieten sich z.B. an:
cat /etc/resolv.conf less /etc/resolv.conf
`cat
` gibt einfach nur den Inhalt auf der Konsole aus. Mittels `less
` kann man darin umherblättern.
root-Rechte
Für manche Befehle oder Änderungen an Dateien benötigt man root-Rechte. Die erlangt man indem man sich entweder als root anmeldet oder in einem Konsolenfenster den Befehl `su
` und dann das root-Kennwort eingibt. Unter KDE kann man auch 'kdesu befehl' verwenden.
Der Befehl `ip
` liegt im Verzeichnis /sbin
und dieses liegt für normale User nicht im Suchpfad. Man kann es aber via /sbin/ip
aufrufen.
Ausgabe eines Befehls in Datei umleiten
Ihr könnt unter Linux und Windows die Ausgabe eines Befehls in eine Datei umleiten:
befehl >ausgabe.txt
Dann braucht Ihr es nicht abschreiben.
Falls Ihr das unter Linux macht, momentan unter Linux keine Internetverbindung habt und keine Dateien auf eine Windows-Partition kopieren könnt dann könnt Ihr (wenn das Paket 'mtools' installiert ist) Dateien auf DOS-formatierte Disketten mit folgendem Befehl kopieren:
mcopy datei a:
Es funktioniert unter Windows aber nicht unter Linux
Unter Windows NT/2K/XP wird die TCPIP-Netzwerkkartenkonfiguration mit folgendem Befehl angezeigt:
ipconfig /all
Wer zu faul zum Abschreiben ist kann das auch mit in eine Datei umleiten:
ipconfig /all >ipconfig.txt
Die TCPIP-Konfiguration einer Netzwerkkarte kann man unter Win9x mit diesem grafischen Tool ansehen:
winipcfg
Die Routingtabelle wird ausgegeben mit:
route print
bzw.
route print >route.txt
Wenn Ihr das postet, dann haben wir schonmal Werte von denen wir wissen, dass sie funktionieren.
Am Ende des Threads befindet sich ein Posting in dem auf ein Script verwiesen wird welches alle im folgenden beschriebenen manuellen Informationsabfragen in einem Script ausführt und in einem File sammelt. Trotzdem sollten erst einmal die folgenden Seiten gelesen werden, um zu verstehen und zu lernen, welche Informationen weshalb von dem Script gesammelt werden! Bei zukünftigen Netzwerkproblemen ist dieses sicherlich hilfreich zu wissen.
Verbindungstests mit PING
(aus einer Forumsnachricht von gaw leicht modifiziert übernommen)
Wenn die Internetverbindung nicht klappt, kann das mehrere Ursachen haben. Es kann ein Kabel, ein Switch oder eine Netzwerkkarte defekt sein, der Treiber ist nicht richtig installiert oder eine Firewall kann ping Befehle abfangen oder die benötigte Netzwerkunterstützung im Kernel fehlt.
Um diverse Ursachen auszuschließen setzt man zunächst folgende sechs PING Befehle in einem Konsolenfenster ab:
1) ping localhost
oder ping 127.0.0.1
testet TCP/IP Unterstützung
2) ping eigene IP-Adresse zum Beispiel:
ping 192.168.10.5
testet den Netzwerktreiber
3) ping IP-Adresse im gleichen LAN zum Beispiel:
ping 192.168.10.7
testet ob LAN-Verbindungen laufen Falls man einen Router hat der die Verbindung zum Internet realisiert dann sollte man das mal mit dessen IP-Adresse probieren.
4) ping Hostname im LAN zum Beispiel:
ping server.mydomain
testet die Namensauflösung im lokalen Netz
5) ping IP-Adresse im Internet zum Beispiel:
ping 195.135.220.3
testet die Internetverbindung
Hinweis: 195.135.220.3
ist die IP-Adresse von www.suse.de
und antwortet auf pings (nicht alle Rechner im Internet tun das).
6) ping Hostname im Internet testet die Namensauflösung im Internet zum Beispiel:
ping www.suse.de
Die PING-Befehle können mit ctrl-c abgebrochen werden.
Alternativ kann man auch diese Variante benutzen:
ping -c4 ip.adresse.des.routers
Dann wird der Ping-Befehl nach 4 Pings automatisch beendet (wie unter Windows).
Was für eine Netzwerkkarte habe ich überhaupt ?
Es erstaunt mich ja immer wieder... da fragt man die Leute was für eine Netzwerkkarte sie haben und als Antwort kommt 'onboard' oder was ähnlich hilfreiches.
Bei 'onboard' und PCI-Karten kann man sich mit dem Befehl
lspci
ansehen, welche Geräte so allgemein gefunden werden. Zeilen in denen 'Ethernet' oder 'Network' drinsteht sind interessant.
Hier mal ein Beispiel mit 2 3com 3c905 Ethernet und einer AVM Fritzcard PCI:
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03) 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03) 00:04.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02) 00:04.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:04.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01) 00:04.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02) 00:06.0 Multimedia audio controller: Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] (rev 01) 00:0e.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 64) 00:10.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 64) 00:12.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH A1 ISDN [Fritz] (rev 02) 01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200 AGP (rev 03)
Hinweis: |
Hier wird angezeigt wie sich die Karte auf dem PCI Bus identifiziert und nicht was auf der Pappschachtel steht. Das muß keinesfalls übereinstimmen. lspci zeigt darüber hinaus nur die Hardwareidentifikation an -- das heißt nicht sofort, dass ein Treiber vorhanden ist. |
Wo wir gerade dabei sind: USB Geräte anzeigen geht mit
lsusb -t
Bei WLAN Karten erhält man nützliche Infos mit
iwconfig
Netzwerkkartenkonfiguration anzeigen
Als root ausführen:
ip addr
Hinweis: |
ip liegt in |
Das Ergebnis sollte etwa so aussehen:
# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:04:46:4c:11 brd ff:ff:ff:ff:ff:ff inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0 inet6 fe80::250:4ff:fe46:4c11/64 scope link valid_lft forever preferred_lft forever
# ip -s link show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:1a:a0:13:7d:84 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 9424913 44837 510097 0 0 0 TX: bytes packets errors dropped carrier collsns 36920342 334243 0 0 0 0
Wichtig ist, dass die Netzwerkkarten über eine IP-Adresse verfügen (inet 192.168.0.2/24
), dass Pakete gesendet (TX packets:56189
) und empfangen (RX packets:44837
) werden.
Es dürfen Fehler (errors:X
) vorkommen - allerdings sollte die Anzahl der fehlerhaften Pakete GERING im Vergleich zur Gesamtanzahl sein.
Wenn die Zeile 'inet 192.168.0.2/24
' fehlt, hat das Interface keine IP-Adresse!
Routing-Tabelle anzeigen
ip route
Das Ergebnis sollte etwa so aussehen:
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2 default via 192.168.0.1 dev eth0
Mittels `routel main
` kann man eine tabellarische Übersicht erhalten:
target gateway source proto scope dev tbl 192.168.0.0/24 192.168.0.2 kernel link eth0 default 192.168.0.1 eth0
Standardgateway überprüfen
Wenn man sich mit
ip r
die Routingtabelle anzeigen lässt, dann sollte es dort einen Eintrag 'default
' geben. (`ip r
` ist eine akzeptierte Abkürzung für `ip route
`.) Das ist der Eintrag für den Standardgateway. Wenn dieser fehlt, gibt es kein Internet.
ip route replace default via 192.168.0.1
(wobei natürlich 192.168.0.1
durch den 'korrekten' Wert zu ersetzen ist).
Allerdings 'merkt' Linux sich das nur bis zum nächsten Reboot.
DNS-Servereinträge anzeigen
Die DNS-Servereinträge stehen in der Datei /etc/resolv.conf
. Diese kann man anzeigen mit:
cat /etc/resolv.conf
Das Ergebnis sollte etwa so aussehen:
nameserver 192.168.0.1 search mydomain.home
Hinter 'nameserver
' steht die IP-Adresse des DNS-Servers der für Namensauflösung verwendet wird.
Wenn dort kein solcher 'nameserver
' Eintrag steht dann kann die Namensauflösung über DNS nicht funktionieren.
Zur Fehlerdiagnose von DNS-Problemen können auch die Befehle `dig
` und `host
` nützlich sein.
Ein Fehler in der Datei /etc/nsswitch.conf
kann dazu führen, dass DNS zur Namensauflösung gar nicht verwendet wird. Deshalb sicherheitshalber die Zeile 'hosts:
' überprüfen. Eine im Allgemeinen funktionierende Variante ist
hosts: files dns
Eine Liste globaler DNS-Servern findet man hier:
DNS-Server
Ist die IPTables/Netfilter Firewall aktiviert ?
Bei Problemen mit Firewall sollte man testen ob die Probleme auch ohne Firewall auftreten. Wir hatten hier im Forum auch schon mehrfach Fälle wo eine Firewall irrtümlich aktiviert war.
Bei SuSE 9.2 ist übrigens die Firewall standardmäßig aktiviert!
Sind irgendwelche Filter definiert?
Konsolenfenster öffnen und eingeben:
iptables -L
Bei deaktivierter Firewall sieht das Ergebnis so aus:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Ist NAT oder Masquerading aktiv ?
Konsolenfenster öffnen und eingeben:
iptables -t nat -L
Bei deaktivierter Firewall sieht das Ergebnis so aus:
Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
SuSEFirewall2 Einstellungen posten
Manchmal kann es erforderlich sein, zur Fehlerdiagnose die Einstellungen der SuSEFirewall2 zu posten.
Ihr findet die Konfigurationsdatei der SuSEFirewall2 hier:
/etc/sysconfig/SuSEFirewall2
Wenn Ihr die Datei postet dann lasst BITTE die ganzen Kommentare weg (das wird sonst so ewig lang und die Kommentare habe ich ja selbst auf der Platte).
BTW - Die Kommentare in der SuSEFirewall2-Datei sind prima Lesestoff.
Ist Routing aktiv ?
In einem Konsolenfenster eingeben :
cat /proc/sys/net/ipv4/ip_forward
Dort muss dann eine 1
stehen damit Routing aktiv ist.
(Das benötigt man natürlich nur wenn Routing benötigt wird - bei einem einzelnen Linux-Rechner braucht man das nicht.)
Hinweis: auch wenn Routing / IP-Forwarding aktiv ist kann es durch die Firewall geblockt werden wenn dort entsprechende Regeln aktiv sind. Die SuSEFirewall2 beinhaltet auf jeden Fall eine Einstellung die das überschreibt.
Die SuSEfirewall2 ist ein Skript,
das mit iptables - Aufrufen den Filter im Kernel setzt/löscht. Ich hatte den Effekt, daß durch "herumprobieren" mit den Firewall-Einstellungen iptables- Einstellungen auch bei inaktiver Firewall erhalten geblieben sind.
iptables -L
zeigte diverse übrig gebliebene Einstellungen. DNS Anfragen von den Clients (Linux als Gateway ins Internet) wurden bearbeitet, aber keine weiteren Daten mehr an die Clients weitergereicht.
Folgendes half dann:
SuSEfirewall2 stop iptables -F SuSEfirewall2 start
Das war's dann. `iptables -F
` löscht alle Eintragungen. Und die Firewall setzt dann beim Start wieder passende Werte ein (gem. Konfiguration in /etc/sysconfig/SuSEfirewall2
)
Einfacher Weg lokale NetzwerkKonfigurationsFehler zu finden bzw lokale NetzwerkKonfigurationsInformationen für das LC-Network-Forum zu sammeln
Dazu auf dieser Seite gehen und die Anleitung lesen.