Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

de:anleitungen:signalstaerke_der_angemeldeten_clients_mit_iw_anzeigen [2018/07/04 20:43] (aktuell)
Zeile 1: Zeile 1:
 +====== Signalstärke der angemeldeten Clients mit iw anzeigen. ======
  
 +
 +Da man sich um das Wohl des Knotens bzw. seiner Clients sorgt, möchte man Informationen über die Signalstärke und den tatsächlichen Netzverkehr bekommen, diese erscheinen nicht auf der Statusseite.
 +
 +Hier kommt nach dem Aufbau der ssh-Verbindung der **iw-Befehl** zum Einsatz, alten „wardrivern“ ist der Vorgänger **iwconfig** noch vertraut. Mit **iw** lassen sich Informationen über das WLAN anzeigen und dieses auch konfigurieren.
 +
 +1. **''​iwinfo''​** => Grundlegende Informationen über die AP-Konfiguration (Ausgabe gekürzt)
 +<​code>​
 +root@Dossenheim-003-temp:​~#​ iwinfo
 +client0 ​  ​ESSID:​ "​freifunk-rhein-neckar.de"​
 +          Access Point: F6:​F4:​6E:​40:​1B:​7C
 +          Mode: Master ​ Channel: 6 (2.437 GHz)
 +          Signal: -71 dBm  Noise: -95 dBm
 +          Encryption: none
 +          Type: nl80211 ​ HW Mode(s): 802.11bgn
 +          Supports VAPs: yes  PHY name: phy0
 +
 +ibss0     ​ESSID:​ "​ffrn-mesh"​
 +          Access Point: FE:​FE:​FE:​CA:​FF:​EE
 +          Mode: Ad-Hoc ​ Channel: 6 (2.437 GHz)
 +          Tx-Power: 16 dBm  Link Quality: unknown/70
 +          Type: nl80211 ​ HW Mode(s): 802.11bgn
 +          Hardware: unknown [Generic MAC80211]
 +          Supports VAPs: yes  PHY name: phy0''​
 +</​code>​
 +Hier gibt es zwei SSIDs, eine für die normalen Clients und eine zum „meshen“,​ interessieren wird uns **client0** mit der ESSID freifunk-rhein-neckar.de\\  ​
 +**client0** ist als Netzwerkschnittstelle zu sehen (auch mit **''​ifconfig''​** sichtbar) und dient den externen Clients quasi als Accesspoint.
 +
 +2. Übergang zum reinen ''​**iw**''​-Befehl,​ dieser besitzt umfangreiche Parameter
 +
 +<​code>​iw reg get</​code>​ => Findet heraus, welche Ländereinstellung der AP hat, 
 +<​code>​iw reg set DE</​code>​ => fixt die eventuell vorher vorgenommene Amokeinstellung auf bolivianische Verhältnisse mit einer Erhöhung um 10dBm der Sendeleistung (auf 30dBm), was tatsächlich einer Verzehnfachung von 100mW auf 1W entspricht. Es macht übrigens keinen Sinn, die Sendeleistung zu erhöhen. Die Clients sehen dann jede Menge grüne Balken und verhungern auf dem Weg zurück mit ihrer 100mW-Sendeleistung. ​
 +
 +<​code>​
 +root@Dossenheim-003-temp:​~#​ iw reg get
 +country DE: DFS-ETSI
 +        (2400 - 2483 @ 40), (N/A, 20), (N/A)
 +        (5150 - 5250 @ 80), (N/A, 20), (N/A), NO-OUTDOOR
 +        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS
 +        (5470 - 5725 @ 160), (N/A, 27), (0 ms), DFS
 +        (57000 - 66000 @ 2160), (N/A, 40), (N/A)
 +</​code>​
 +
 +3. Zurück zur Ausgangsfrage:​ Infos über die angemeldeten Clients bekommen wir mit:
 +
 +<​code>​iw dev client0 station dump</​code>​
 +
 +Hier sehen wir zwei angemeldete Clients an "​Schnittstelle"​ **client0**.
 +<​code>​
 +root@Dossenheim-003-temp:​~#​ iw dev client0 station dump
 +Station 6c:​b7:​f4:​12:​34:​56 (on client0)
 +        inactive time:  26700 ms
 +        rx bytes: ​      ​144235
 +        rx packets: ​    2048
 +        tx bytes: ​      ​143878
 +        tx packets: ​    939
 +        tx retries: ​    63
 +        tx failed: ​     0
 +        signal: ​        -73 [-84, -73] dBm
 +        signal avg:     -74 [-85, -75] dBm
 +        tx bitrate: ​    11.0 MBit/s
 +        rx bitrate: ​    1.0 MBit/s
 +        expected throughput: ​   0.557Mbps
 +        authorized: ​    yes
 +        authenticated: ​ yes
 +        preamble: ​      short
 +        WMM/​WME: ​       yes
 +        MFP:            no
 +        TDLS peer:      no
 +Station 88:​53:​2e:​ae:​01:​12 (on client0)
 +        inactive time:  10 ms
 +        rx bytes: ​      ​2642141
 +        rx packets: ​    23055
 +        tx bytes: ​      ​14747171
 +        tx packets: ​    18927
 +        tx retries: ​    17820
 +        tx failed: ​     62
 +        signal: ​        -74 [-76, -80] dBm
 +        signal avg:     -74 [-75, -79] dBm
 +        tx bitrate: ​    14.4 MBit/s MCS 1 short GI
 +        rx bitrate: ​    39.0 MBit/s MCS 10
 +        expected throughput: ​   1.52Mbps
 +        authorized: ​    yes
 +        authenticated: ​ yes
 +        preamble: ​      short
 +        WMM/​WME: ​       yes
 +        MFP:            no
 +        TDLS peer:      no
 +        ​
 +</​code> ​       ​
 +
 +Interessant folgende Zeilen:
 +
 +  * **Station 6c:​b7:​f4:​12:​34:​56 (on client0)** => MAC-Adresse des Clients, hier ist der Hersteller mit eincodiert (Samsung, Apple, Intel...), ermöglicht Rückschlüsse auf die verwendete Hardware der "​Kunden"​.
 +  * **tx bytes: 143878** => bisher an den Client geschickte Bytes, mies zu interpretieren,​ der Mensch denkt in MByte
 +  * **signal: -73 [-84, -73] dBm** => Verlauf der Signalstärke,​ interessant erstmal der aktuelle vor der Klammer, kleine als -79dBm gilt für "​Verbindung ist kagge, geht kaum mehr was durch."​ Je höher die Zahl, desto besser die Verbindung. Wem das nicht reicht: https://​www.excentis.com/​blog/​wi-fi-signal-strength-are-your-investments-wireless-infrastructure-based-shaky-data
 +     
 +Die restlichen Werte sind teilweise HF-Magie, die hier erstmal unberücksichtigt bleibt.
 +
 +===== Shellskript zu  Anzeige der Clientzufriedenheit =====
 +
 +Die while-Dauerschleife ist auskommentiert,​ da das "​grepen"​ der MAC-Adresse in "​nmap-mac-prefixes"​ bei vielen Clients ordentlich CPU-Leistung frisst. Die Kommentare vor "​while",​ "​sleep"​ und "​done"​ weg, dann dreht sich das wieder im Kreis. Die 500kB in /tmp werden dem RAM geklaut, wenn das System schon an der Oberkante kratzt, wird's eng und die Kiste bootet neu.
 +Das Skript muss mit einem **chmod +x clientinfo.sh** ausführbar gemacht werden,​sinnvollerweise legt man das dann in /​etc/​config,​da diese Konfigurationen ein Update ueberleben (sollten).
 +===== Ausgabe des Skripts =====
 +
 +{{:​de:​anleitungen:​clientinfo.png?​nolink|}}
 +
 + 
 +<code sh clientinfo.sh>​
 +#!/bin/sh
 +
 +#​MAC-Adressen zu Hersteller-Liste herunterladen und in /tmp speichern, ist nach reboot wieder weg
 +# 7.11.2017 linuxnet.ca hat auf tls umgestellt, das "​kleine"​ wget in Gluon kann kein ssl, ihr koennt die aktuele Liste hier 
 +# runterladen und per Hand auf den Router kopieren ​
 +#wget -P /tmp http://​linuxnet.ca/​ieee/​oui/​nmap-mac-prefixes
 +#hier hab ich mal eine Version abgelegt
 +wget -P /tmp http://​46.237.245.87/​nmap-mac-prefixes
 +
 +
 +#Farben fuer Signalstaerke
 +rot="​\033[31m"​
 +gruen="​\033[32m"​
 +reset="​\033[0m"​
 +
 +
 +#while [ true ]; do
 +clear
 +maclist=$(iw dev client0 station dump |grep Station|awk '​{print $2}')
 +pegellist=$(iw dev client0 station dump |grep signal:|awk '​{print $2}')
 +
 +#​MAC-Adressen dem zugehoerigen Hersteller zuordnen
 +if [[ -z "​$maclist"​ ]]
 +then
 +echo "Keine Clients auf dem AP."
 +
 +else
 +
 +for i in $maclist; do
 +        OUI=$(echo ${i//[:.- ]/} | tr "​[a-f]"​ "​[A-F]"​ | egrep -o "​^[0-9A-F]{6}"​)
 +
 +        vendor=$(grep $OUI /​tmp/​nmap-mac-prefixes)
 +echo $vendor
 +done
 +
 +#​Signalpegel aufarbeiten,​ Ausgabefarbe zuordnen
 +for j in $pegellist; do
 +
 +if [ $j -ge -79 ]
 +then
 +        echo -e "​$gruen"​Signalstaerke "​$j"​dBm ​ "*-- Sieht gut aus! --*" "​$reset"​
 +
 +else
 +        echo -e "​$rot""​Signalstaerke $j"dBm "*-- Eher miese Verbindung. :​(" ​ "​$reset"​
 +
 +fi
 +
 +done
 +
 +# Datendurchsatz des Clients aufarbeiten und in kByte bzw. MByte umrechnen
 +empfangen=$(iw dev client0 station dump |grep "tx bytes:"​|awk '​{print $3}')
 +
 +for i in $empfangen; do
 +
 +if [ $i -le  1048576 ]
 +then
 +echo $(( $i/1024 )) kByte bekommen
 +else
 +
 +echo $(( $i/1048576 )) MByte bekommen
 +
 +fi
 +done
 +fi
 +
 +#sleep 5
 +#done
 +</​code>​
 +
 +Quellen:
 +
 +https://​wireless.wiki.kernel.org/​en/​users/​documentation/​iw
 +
 +https://​wiki.openwrt.org/​doc/​howto/​wireless.utilities
 +
 +http://​kernelreloaded.blog385.com/​index.php/​archives/​tweak-wireless-power-output-on-openwrt-and-linux/​