Ein grosser Teil der Postings in diesem Forum dreht sich um Netzwerkprobleme und da sind sehr detailierte Informationen zum Netzwerk wichtig. Sie helfen Dein Netzwerkproblem schneller zu identifizieren und zu beheben. Diese kann man hier im Forum recht einfach bereitstellen, wenn man ein kleines Script runterlädt, auf der Pi ausführt und den Inhalt von raspiNetInfo.log hier im Forum zusätzlich zur Problembeschreibung postet. Zusätzlich testet das Script auch auf typische Nerkwerkkonfigurationsfehler und schreibt entsprechende Fehlermeldungen, so dass man u.U. den Fehler auch selbst beheben kann. Natürlich kann man die Befehle die das Script ausführt auch manuell eingeben und die Ergebnisse im Forum posten. Sensitive Information werden automatisch maskiert (WLAN Key, SSID, ...). Man sollte aber trotzdem noch mal vor dem Veröffentlichen ob nicht doch noch irgendwelche sensitive Informationen enthalten sind.
Bereitstellung des Scripts auf der Pi
1) Falls ein WLAN Problem existiert und die Pi eine Kabelnetzwerkverbindung hat als Benutzer pi an der Pi anmelden per ssh oder direkt an der Konsole. Dann
2) Falls die Pi keine Netzwerkverbindung hat muss das Script von hier auf einen Rechner mit einer funktionierenden Netzwerkverbindung mit einem Browser runtergeladen und auf die SD Karte in /home/pi, /root oder /tmp kopiert werden. In diesem Falle sollte der Parameter -m beim Aufruf benutzt werden da ein paar fehlende Pakete zur Analyse dann nicht aus dem Netz installiert werden können.
Aufruf
um z.B. WLAN Netzwerkprobleme analysieren zu lassen und im Bedarfsfall den Inhalt von raspiNetInfo.log im Forum zu posten.
um z.B. Kabel Netzwerkprobleme analysieren zu lassen und im Bedarfsfall den Inhalt von raspiNetInfo.log im Forum zu posten.
Aufrufsyntax
Aufruf: raspiNetInfo.sh [-e | -s SSID | -h | -m | -g | -l LANGUAGE]
Parameter:
-e : Nur Kabelverbindung testen
-h : help
-m : Fehlende Netzwerkpakete ignorieren
-s : WLAN und Kabelverbindung testen
-g : Meldungen in Englisch
-l : Meldungen in der gewählten Sprache schreiben (de oder en)
d.h. bei -s muss man noch die SSID (um Sonderzeichen der bash zu ignorieren die SSID in Tüdelchen ' eingeben, also -s 'meineSSID' ) zu der man verbinden will mitgeben, da diese für bestimmte Tests und natürlich um sie später in den Ausgaben zu maskieren, notwendig ist. Am Ende existiert eine Datei mit dem Namen raspiNetInfo.log, die die Untersuchungsergebnisse, die den Bildschirmausgaben entsprechen, enthalten. Das Script benutzt ein paar Programme, die nicht standardmässig installiert sind und nachinstalliert werden müssen. Sollte die Pi aber auch keine funktionierende Kabelverbindung haben können die fehlenden Pakete nicht nachinstalliert werden. Dann muss man mit dem Parameter -m erzwingen, dass sich das Script nicht bei fehlenden Programmen beendet. Allerdings wird dadurch die Analyse- und Datensammelfähigkeit signifikant eingeschränkt.
Welche Befehle werden ausgeführt?
Die folgenden Befehle werden ausgeführt um Netzwerkinformationen zu sammeln und können auch alternativ dirket ausgeführt werden um Netzwerkinformationen in einer Datei zu sammeln und im Forum als Basis zur Problemanalyse zu posten. Allerdings werden keine sensitiven Daten (WLAN SSID, IP Adressen, MAC Adressen, Schlüssel usw) automatisch maskiert wie es raspiNetInfo.sh macht und dieses muss deshalb manuell vorgenommen werden.
Am besten sammelt man alle Ausgaben wie folgt in einer Datei network.info. Eingabe von
auf der Konsole. Danach gibt man alle weiter unten gelisteten Befehle der Reihe nach ein und zum Schluss beendet man alles durch Eingabe von
Nun existiert die Datei netzwerk.info die man noch manuell nach sensitiven Informationen mit einem Editor durchgehen muss und postet die Informationen aus der Datei dann im Forum:
ip a s
ip r s
ip n s
( egrep -v "^(#|$)" | grep -i "nameserver" ) < /etc/resolv.conf
egrep -v "^(#|$)|::" /etc/network/interfaces
egrep -v "^(#|$)|::" cat /etc/hosts
Bei WLAN Netzwerkproblemen sind weiterhin folgende Ausgaben hilfreich:
lsusb | grep -v "root hub" | grep -i "wire"
iwconfig
iwlist wlan0 scanning | egrep -i "(chan|signal)"
sudo cat /etc/wpa_supplicant/wpa_supplicant.conf ### ACHTUNG: WLAN Schlüssel und WLAN SSID maskieren !!!
sudo grep wpa_action /var/log/messages | tail -n 15
Hintergrund
Die Standardprozedur bei Netzwerkproblemen ist immer, dass nach dem Schildern eines Netzwerkproblemes die Community schreibt
Zitat von "Communityhelfer Anton"Liefere mal den Ausgabe von Befehl1
dann die Naechste
Zitat von "Communityhelferin Berta"liefere mal den Ausgabe von Befehl2
dann der Naechste
Zitat von "Communityhelfer Otto"liefere mal den Ausgabe von Befehl3
usw
I.d.R. sind es immer dieselben Befehle, deren Ausgabe jemand liefern soll. Auch sind es öfter Standardursachen für die Netzwerkprobleme. Was liegt näher als da ein Script zu schreiben welches bei der Netzwerkproblemlösung hilft und es dem Hilfesuchenden einfacher macht eine Lösung zu erhalten wie auch den Helfern schneller notwendige Informationen zur Fehlerbehebung an die Hand zu geben. Deshalb habe ich mal ein ein kleines Script zusammengeschrieben, welches
1) Nach Standardnetzwerkonfigurationsproblemen sucht und sie meldet
2) Die Befehle ausführt die am häufigsten von der Community bei Netzwerkfehleranfragen verlangt werden
Vorteile
1) Der Threadersteller kann das Script laufen lassen und wenn er eine Fehlermeldung zu einem Standardfehler bekommt kann er ihn vielleicht selbst lösen. Wenn nicht kann er
2) die Ausgabe des Scripts mit den Fehlermeldungen und den weiteren Netzwerkkonfigurationsinformationen im Thread posten und liefert der Community damit gleich schon sehr viel Informationen an die Hand so dass sie zielgerichtet die Problemlösung angehen bzw weitere gezielte Befehlsausgaben nachfragen kann.
Welche Tests auf Standardfehler werden gemacht?
1) Ist ein Nameserver eingetragen und ist er erreichbar?
2) Ist ein Standardgateway definiert und ist es erreichbar?
3) Werden in der SSID nur nach IEEE 802.11 erlaubte Zeichen benutzt?
4) Ist ein ping einer externen IP oder eines externen Hostes per Namen möglich?
Welche Netzwerkinformationen werden gesammelt?
1) uname -a
2) xbmc System ja/nein
3) ip a s
4) ip r s
5) ip n s
6) /etc/resolv.conf
7) /etc/network/interfaces
/etc/hosts
9) route -n
10) lsusb
11) iwconfig
12) iwlist scan
13) Ausgabe der letzten 15 Zeilen aus /var/log/syslog die den String wpa enthalten
14) nm Status bei xbmc
15) /etc/wpa_supplicant/wpa_supplicant.conf bei raspian
Das Script ist ein bash Script welches außerdem Perl, awk und sed benutzt. Das Script führt nur Befehle aus die Informationen sammeln und es werden selbstverständlich keine Änderungen am System vorgenommen. Die Untersuchungsergebnisse werden angezeigt und finden sich parallel in der Datei raspiNetInfo.log, die dann im Forum gepostet werden können. Die SSID, die nicht lokalen IPs sowie die MACs werden in den Ausgaben maskiert.
Weitere Vorschläge was zusätzlich an Standardfehlern zu testen ist oder auch welche weiteren Informationsausgaben sinnvoll wären nehme ich gerne auf. Entweder hier im Thread posten oder PN an mich.
Die Ausgabe sieht dann z.B. wie folgt aus:
Spoiler anzeigen
bash raspiNetInfo.sh -s DasIstmeineSSID
raspiNetInfo.sh V0.2.8, 2015-12-18/19:02:12 - f62646d
--- RNI010I: Starte Datensammlung und Netzwerkuntersuchung. Das kann u.U. ein paar Minuten dauern ...
--- RNI012I: Ping von 8.8.8.8 erfolgreich
--- RNI012I: Ping von http://www.google.com erfolgreich
--- uname -a
Linux raspberrypi 3.10.25+ #616 PREEMPT Mon Dec 23 18:13:02 GMT 2013 armv6l GNU/Linux
--- [ -d /home/pi/.xbmc ]
no
--- ip a s | egrep "(eth|wlan)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether @@:@@:@@:@@:@@ brd @@:@@:@@:@@:@@
inet 192.168.0.12/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether @@:@@:@@:@@:@@ brd @@:@@:@@:@@:@@
inet 192.168.0.118/24 brd 192.168.0.255 scope global wlan0
valid_lft forever preferred_lft forever
valid_lft forever preferred_lft forever
--- cat /etc/resolv | grep -i "nameserver"
nameserver 192.168.0.1
--- cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.0.12
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
--- cat /etc/hosts
127.0.0.1 localhost raspberrypi
--- ip r s | egrep "(eth|wlan)"
default via 192.168.0.1 dev eth0
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.12
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.118
--- ip n s
192.168.0.113 dev eth0 lladdr ec:55:f9:c6:64:6c REACHABLE
192.168.0.1 dev wlan0 lladdr 24:65:11:5c:01:a4 STALE
192.168.0.6 dev eth0 lladdr 44:8a:5b:2b:e2:e4 STALE
192.168.0.1 dev eth0 lladdr 24:65:11:5c:01:a4 REACHABLE
192.168.0.10 dev eth0 lladdr b8:27:eb:3c:94:90 STALE
192.168.0.113 dev wlan0 lladdr ec:55:f9:c6:64:6c STALE
--- lsusb | grep -v "root hub" | grep -i "wire"
Bus 001 Device 006: ID 0846:9030 NetGear, Inc. WNA1100 Wireless-N 150 [Atheros AR9271]
--- iwconfig (eth und wlan)
wlan0 IEEE 802.11bgn ESSID:"@@@@@@@@"
Mode:Managed Frequency:2.462 GHz Access Point: @@:@@:@@:@@:@@
Link Quality=37/70 Signal level=-73 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:478 Missed beacon:0
--- /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="@@@@@@@@"
psk="@@@@@@@@"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
--- grep wpa_action /var/log/messages | tail -n 15
--- RNI016I: Vor dem Publizieren von der Logdatei raspiNetInfo.log immer kontrollieren, dass keine sensitiven Daten enthalten sind
raspiNetInfo.sh steht unter der GPL auf github zur allgemeinen Verfügung.