Signalstaerke der angemeldeten clients mit iw anzeigen: Unterschied zwischen den Versionen

Aus Freifunk Rhein-Neckar Wiki
Keine Bearbeitungszusammenfassung
(Bild hinzugefügt)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
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.
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.
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)
1. '''iwinfo''' => Grundlegende Informationen über die AP-Konfiguration (Ausgabe gekürzt)
<code>
<pre>
root@Dossenheim-003-temp:~# iwinfo
root@Dossenheim-003-temp:~# iwinfo
client0  ESSID: "freifunk-rhein-neckar.de"
client0  ESSID: "freifunk-rhein-neckar.de"
Zeile 25: Zeile 25:
           Hardware: unknown [Generic MAC80211]
           Hardware: unknown [Generic MAC80211]
           Supports VAPs: yes  PHY name: phy0''
           Supports VAPs: yes  PHY name: phy0''
</code>
</pre>
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\\  
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<br />  
**client0** ist als Netzwerkschnittstelle zu sehen (auch mit **''ifconfig''** sichtbar) und dient den externen Clients quasi als Accesspoint.
'''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
2. Übergang zum reinen '''iw'''-Befehl, dieser besitzt umfangreiche Parameter


<code>iw reg get</code> => Findet heraus, welche Ländereinstellung der AP hat,  
<pre>iw reg get</pre> => 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.  
<pre>iw reg set DE</pre> => 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>
<pre>
root@Dossenheim-003-temp:~# iw reg get
root@Dossenheim-003-temp:~# iw reg get
country DE: DFS-ETSI
country DE: DFS-ETSI
Zeile 42: Zeile 42:
         (5470 - 5725 @ 160), (N/A, 27), (0 ms), DFS
         (5470 - 5725 @ 160), (N/A, 27), (0 ms), DFS
         (57000 - 66000 @ 2160), (N/A, 40), (N/A)
         (57000 - 66000 @ 2160), (N/A, 40), (N/A)
</code>
</pre>


3. Zurück zur Ausgangsfrage: Infos über die angemeldeten Clients bekommen wir mit:
3. Zurück zur Ausgangsfrage: Infos über die angemeldeten Clients bekommen wir mit:


<code>iw dev client0 station dump</code>
<pre>iw dev client0 station dump</pre>


Hier sehen wir zwei angemeldete Clients an "Schnittstelle" **client0**.
Hier sehen wir zwei angemeldete Clients an "Schnittstelle" '''client0'''.
<code>
<pre>
root@Dossenheim-003-temp:~# iw dev client0 station dump
root@Dossenheim-003-temp:~# iw dev client0 station dump
Station 6c:b7:f4:12:34:56 (on client0)
Station 6c:b7:f4:12:34:56 (on client0)
Zeile 90: Zeile 90:
         TDLS peer:      no
         TDLS peer:      no
          
          
</code>         
</pre>         


Interessant folgende Zeilen:
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".
   * **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
   * **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    
   * **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.
Die restlichen Werte sind teilweise HF-Magie, die hier erstmal unberücksichtigt bleibt.


Zeile 103: Zeile 101:


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.
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).
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 =====
===== Ausgabe des Skripts =====


{{:de:anleitungen:clientinfo.png?nolink|}}
[[Datei:clientinfo.png]]


'''clientinfo.sh'''
<code sh clientinfo.sh>
<pre>
#!/bin/sh
#!/bin/sh


Zeile 177: Zeile 175:
#sleep 5
#sleep 5
#done
#done
</code>
</pre>


Quellen:
Quellen:

Aktuelle Version vom 30. Januar 2020, 13:14 Uhr

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)

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''

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

iw reg get

=> Findet heraus, welche Ländereinstellung der AP hat,

iw reg set DE

=> 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.

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)

3. Zurück zur Ausgangsfrage: Infos über die angemeldeten Clients bekommen wir mit:

iw dev client0 station dump

Hier sehen wir zwei angemeldete Clients an "Schnittstelle" client0.

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
        

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

Clientinfo.png

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

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/