Benutzer:Emploi: Unterschied zwischen den Versionen
Emploi (Diskussion | Beiträge) K |
Emploi (Diskussion | Beiträge) |
||
(82 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | ==Verwaltung== | ||
+ | |||
+ | '''Gateways''': | ||
+ | |||
+ | {| class="wikitable sortable zebra toptextcells" | ||
+ | |- | ||
+ | ! Node | ||
+ | ! VPN | ||
+ | ! Hoster | ||
+ | ! Exit Protokoll | ||
+ | |- | ||
+ | | [http://vpn3.freifunk-dresden.de/ 2] | ||
+ | | 3 | ||
+ | | Hetzner | ||
+ | | Wireguard OVPN DE | ||
+ | |- | ||
+ | | [http://10.200.200.2/ 51001] | ||
+ | | it4r | ||
+ | | Max | ||
+ | | Wireguard Mullvad DE | ||
+ | |} | ||
+ | |||
+ | ===Inventar=== | ||
+ | {| class="wikitable sortable zebra toptextcells" | ||
+ | |- | ||
+ | ! Node | ||
+ | ! Typ | ||
+ | ! Ort | ||
+ | |- | ||
+ | |} https://wiki.freifunk-dresden.de/index.php/Router | ||
+ | {| class="wikitable sortable zebra toptextcells" style="background:#ff9090; | ||
+ | |- | ||
+ | | 1727 | ||
+ | | TP-Link 941v6 || EKP:18€ gegen Spende | ||
+ | |- | ||
+ | | 1880 | ||
+ | | TP-Link 941v6 || EKP:18€ gegen Spende | ||
+ | |- | ||
+ | | 1852 | ||
+ | | TP-Link 841v9 || gegen Spende | ||
+ | |- | ||
+ | | 1527 | ||
+ | | TL-WA801N/ND v2 || gegen Spende | ||
+ | |- | ||
+ | | 1922 | ||
+ | | TP-Link 841v9 || gegen Spende | ||
+ | |- | ||
+ | | 2167 | ||
+ | | TP-Link 841v8 || gegen Spende | ||
+ | |- | ||
+ | | 1166 | ||
+ | | TP-Link 841v8 || gegen Spende | ||
+ | |- | ||
+ | | 1712 | ||
+ | | TL-WR941N/ND v5 | ||
+ | |- | ||
+ | | Gebraucht || TP-Link 841v8 ||< ExLoui Projektrouter | ||
+ | |- | ||
+ | | Gebraucht || TP-Link 841v10 ||< ExLoui Projektrouter | ||
+ | |- | ||
+ | | Gebraucht || TP-Link 841v10 ||< ExLoui Projektrouter | ||
+ | |- | ||
+ | | Gebraucht || TP-Link 841v10 ||< ExLoui Projektrouter | ||
+ | |} | ||
+ | {| class="wikitable sortable zebra toptextcells" style="background:#ffffc0; | ||
+ | | 1057 || TP-Link 1043v2 (USB 2.0) || Erster Offloader EKP:40€(2016) gegen Spende | ||
+ | |- | ||
+ | | 2168 | ||
+ | | AVM FRITZ!Box 7312 || gegen Spende | ||
+ | |- | ||
+ | | 1036 | ||
+ | | AVM FRITZ!Box 7412 || EKP:5€ gegen Sprende | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable sortable zebra toptextcells" style="background:#a0ffa0; | ||
+ | | 1144 | ||
+ | | Xiaomi Mi Router 4A Gigabit | ||
+ | | Testrouter zum Verleih | ||
+ | |- | ||
+ | | 1271 | ||
+ | | Xiaomi Mi Router 4A Gigabit | ||
+ | | Kö 59 | ||
+ | |- | ||
+ | | OVP || Xiaomi Mi Router 4A Gigabit || OVP EKP(2022): 29€ | ||
+ | |- | ||
+ | | OVP || Xiaomi Mi Router 4A Gigabit || OVP EKP(2022): 29€ | ||
+ | |- | ||
+ | | OVP || Xiaomi Mi Router 4A Gigabit || OVP EKP(2022): 29€ | ||
+ | |- | ||
+ | | Gebraucht || Netgear 6220 (USB) || Ex BSZ Outdoor EKP:35€(2020) gegen Spende | ||
+ | |- | ||
+ | | Gebraucht || Netgear 6220 (USB) || <ExLoui Projektrouter | ||
+ | |- | ||
+ | | Geflasht | ||
+ | | 2x TP-Link RE650 AC2600 || EKP:40€(2023) | ||
+ | |- | ||
+ | | Geflasht | ||
+ | | 2x D-Link COVR-X1860 || EKP:30€(2023) | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ===Gateways (VServer) === | ||
+ | {| class="wikitable sortable zebra toptextcells" | ||
+ | |- | ||
+ | ! Adresse | ||
+ | ! Betreiber | ||
+ | ! IP | ||
+ | |- | ||
+ | |vpn3.freifunk-dresden.de ||Mirko ||10.200.0.3 | ||
+ | |- | ||
+ | |vpn7.freifunk-dresden.de ||Max ||10.200.0.5 | ||
+ | |- | ||
+ | |vpn13.freifunk-dresden.de ||Sven ||10.200.0.14 | ||
+ | |- | ||
+ | |vpn14.freifunk-dresden.de ||Sven ||10.200.0.15 | ||
+ | |- | ||
+ | |vpn2.freifunk-dresden.de ||Max ||10.200.0.112 | ||
+ | |- | ||
+ | |vpn11.freifunk-dresden.de ||Daniel ||10.200.0.201 | ||
+ | |- | ||
+ | |vpn16.freifunk-dresden.de ||Daniel ||10.200.0.202 | ||
+ | |- | ||
+ | |vpn1.freifunk-dresden.de ||Stephan ||10.200.1.1 | ||
+ | |- | ||
+ | |vpn12.freifunk-dresden.de ||Stephan ||10.200.1.2 | ||
+ | |} | ||
+ | https://wiki.freifunk-dresden.de/index.php/Technische_Information#Knotennummer_durch_Registrierung_eines_Knotens_anfordern | ||
+ | |||
+ | ==Andere Projekte== | ||
+ | |||
+ | '''[http://de.wikipedia.org/wiki/BOINC BOINC]''' im Team [http://www.planet3dnow.de/vbulletin/forumdisplay.php/87-Planet-3DNow!-Distributed-Computing Planet 3DNow!]. '''[http://stats.free-dc.org/stats.php?page=userbycpid&cpid=41fc4ef7a4847efbbe16879c6f56bae3 Statistiken]''' | ||
+ | |||
+ | http://signature.statseb.fr/sig-423.png | ||
+ | |||
+ | |||
+ | '''[http://www.openstreetmap.org OSM]''', [http://www.hdyc.neis-one.org/?Emploi Mapperstats] [http://yosmhm.neis-one.org/?zoom=6&lat=50.22973&lon=7.27789&layers=B0T&u=Emploi Heatmap] | ||
+ | |||
==Spickzettel== | ==Spickzettel== | ||
+ | |||
+ | Datei mit bestimmten Inhalt finden | ||
+ | find -type f -exec grep -q -i '100.200.xxxxx' '{}' \; -print | ||
Speedtest zwischen Knoten: | Speedtest zwischen Knoten: | ||
<code> | <code> | ||
− | + | Knoten: | |
− | |||
− | + | while true; do iperf3 -c 10.200.x.y --bidir -t 10 -P 3| grep 'sender\|receiv' | grep SUM; date; done | |
− | |||
− | + | ||
+ | ===Speedtest=== | ||
Testfile zum Knoten laden (''auf Server und Router mit Internetkabelverbindung erfolgt das ohne VPN'') und verwerfen: | Testfile zum Knoten laden (''auf Server und Router mit Internetkabelverbindung erfolgt das ohne VPN'') und verwerfen: | ||
Zeile 18: | Zeile 157: | ||
unter Nutzung eines bestimmten Interface | unter Nutzung eines bestimmten Interface | ||
− | '''curl --interface | + | '''curl --interface vpn0 "https://www.speedtestx.de/testfiles/data_1gb.test">/dev/null''' |
+ | |||
+ | ===bmxd=== | ||
+ | |||
+ | '''bmxd -c --gateways''' | ||
+ | verfügbare Gateways | ||
+ | |||
+ | '''bmxd -c -p 10.200.x.y''' | ||
+ | bevorzugtes Gateway auswählen | ||
+ | |||
+ | '''bmxd -cid8''' | ||
+ | Übersicht | ||
+ | |||
+ | '''bmxd -c -r [****]''' | ||
+ | Routingclass, sofern es kein bevorzugtes Gateway gibt oder jenes ausgefallen ist: | ||
+ | *0 kein Tunnel, default route | ||
+ | *1 Permanent das „schnellste“ Gateway, basierend auf Ankündigung des Gateways | ||
+ | *2 Permanent das stabilste Gateway, basierend auf den Messergebnissen des Protokolls | ||
+ | *3 Dynamisch Umschaltung auf das stabilste Gateway (siehe auch "gateway_hysteresis", in der Hilfe) | ||
+ | |||
+ | ====Doku==== | ||
+ | |||
+ | B.A.T.M.A.N. daemon - https://www.open-mesh.org/projects/batmand/wiki/Doc-overview | ||
+ | |||
+ | ===Server=== | ||
+ | |||
+ | Server mit anderem Server per festd verbinden: | ||
+ | /etc/init.d/S53backbone-fastd2 add_connect vpnx.freifunk-dresden.de 5002 pubkey | ||
+ | Keys liegen unter | ||
+ | /etc/fastd/peers '''(alt)''' oder /etc/fastd/peers2 '''(aktuell)''' | ||
+ | |||
+ | ===Banana PI M2 Berry=== | ||
+ | Temperatur: | ||
+ | while :; do clear; cat /sys/devices/virtual/thermal/thermal_zone0/temp; sleep 1; done | ||
+ | Frequenzen: | ||
+ | cat /sys/devices/system/cpu/cpufreq/all_time_in_state | ||
+ | Status: | ||
+ | sdir=/sys/devices/system/cpu/cpu ; sfil='/cpufreq/stats/ti*' ; stemp=/sys/devices/virtual/thermal/thermal_zone0/temp; while :; do clear; grep 'model\|Bogo\|proc' /proc/cpuinfo | tail -n 3; echo TemperaturIn°C; cat $stemp; for ((i=0;i<4;++i)); do echo cpu$i; cat $sdir$i$sfil; done; sleep 2; done | ||
==Router neu einrichten== | ==Router neu einrichten== | ||
Zeile 28: | Zeile 204: | ||
Bevorzugtes Gateway (IP): 10.200.0.3 | Bevorzugtes Gateway (IP): 10.200.0.3 | ||
− | Fallback DNS (IP): 85.214.20.141 | + | Fallback DNS (IP): 1.1.1.1 oder 85.214.20.141 |
− | '''Expert->Backbone ->''' vpn3.freifunk-dresden.de | + | '''Expert->Backbone ->''' vpn3.freifunk-dresden.de 5002 c3b6153b27893b8674b3869aa3c5ccae3bfb874b6e866bca2bb6c01db0a847ba |
'''Expert->WIFI ->''' Check | '''Expert->WIFI ->''' Check | ||
Zeile 38: | Zeile 214: | ||
DHCP Lease 30min | DHCP Lease 30min | ||
+ | ==Betatestrouter== | ||
+ | |||
+ | {| class="wikitable" style="text-align: right;" | ||
+ | |- | ||
+ | ! Geräte-Name | ||
+ | ! Hersteller | ||
+ | ! Preis | ||
+ | ! RAM | ||
+ | ! Flash ROM | ||
+ | ! Mhz/[https://de.wikipedia.org/wiki/System-on-a-Chip SoC] <br> ([[Router technische Details|CPU-Leistung]]) | ||
+ | ! [https://www.elektronik-kompendium.de/sites/net/1004251.htm MIMO] 1x1:1 | ||
+ | ! class="unsortable" | Version | ||
+ | ! class="unsortable" | Beschreibung | ||
+ | ! Adresse OriginalFW | ||
+ | ! Netzteil / Wirkleistung | ||
+ | |- | ||
+ | | [[Datei:Ori750.png|100px|thumb|right]] | ||
+ | | NDA | ||
+ | | style="text-align:right" | ?>=35 € | ||
+ | | style="text-align:right" | 128 | ||
+ | | style="text-align:right" | 16 | ||
+ | | 650/9533 | ||
+ | | 2x2:2@2,4Ghz <br> 1x1:1@5Ghz | ||
+ | | <span style="color: blue">v1</span> | ||
+ | | x Antennen | ||
+ | | 10.123.123.1 DHCP (LAN&WAN) | ||
+ | | Netzteil 12V 600mA <br> WLAN:2,6W | ||
+ | |- | ||
+ | |} | ||
+ | Bootloader startet automatisch, wenn Router ohne Firmware.<br><br> | ||
+ | |||
+ | ''Bootloader zwangsweise starten:'' <br> | ||
+ | Router Stromlos machen, Resettaster gedrückt halten, LED blinkt+10 Sekunden Reset gedrückt halten, Reset loslassen.<br> | ||
+ | |||
+ | Das Webinterface ist jetzt unter 192.168.1.1 und 10.123.123.1 zu erreichen. <br> | ||
+ | * Ggf. muss euer Rechner mit einem /24 Netzwerk eingestellt werden, wenn DHCP nicht funktionieren sollte, unter Linux ist das z.B. der Fall, Windows 7\|10 erhält eine IP vom DHCP. | ||
+ | |||
+ | TFTP Boot | ||
+ | |||
+ | ''todo'' | ||
+ | |||
+ | {| class="wikitable" style="text-align: right;" | ||
+ | |- | ||
+ | ! WLAN LED | ||
+ | ! LAN LED | ||
+ | ! Status | ||
+ | |- | ||
+ | | <span style="color: red">Rot </span> <span style="color: orange"> Orange </span> Pulsierend | ||
+ | | <span style="color: green">Pulsierend</span> | ||
+ | | Bootloader geladen, http per 10.123.123.1 Zugriff möglich | ||
+ | |- | ||
+ | | <span style="color: red">Rot</span> Blinkend | ||
+ | | Aus | ||
+ | | Keine funktionierende Firmware oder Router gebrickt | ||
+ | |- | ||
+ | | <span style="color: grey">Aus </span> | ||
+ | | Aus | ||
+ | | Router ohne Funktion, möglicherweise aber trotzdem am Strom | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ==Codeschnipsel== | ||
+ | |||
+ | WLAN Scan in "CSV" Ausgabe umwandeln | ||
+ | iwinfo wifi5ap stationdump | tr '\n' ';' | sed 's/;;/\n/g; s/Cell /\nCell /g; s/ \+/ /g' | sed '/^$/d' | ||
+ | iwinfo wifi2ap stationdump | tr '\n' ';' | sed 's/;;/\n/g; s/Cell /\nCell /g; s/ \+/ /g' | sed '/^$/d' | ||
+ | |||
+ | === Skynet === | ||
+ | |||
+ | "Intelligente" Gatewayauswahl.<p> | ||
+ | 1. Autonomes setzen des bevorzugten Gateways, um Stabilität des Knotens und der VPN Verbindung zu verbessern, wenn kein bevorzugtes Gateway konfiguriert oder<p> | ||
+ | 2. Schritt das bevorzugte Gateway nicht mehr ordnungsgemäß funktioniert. <p> | ||
+ | 3. Schritt Liste bevorzugter Gateways | ||
+ | |||
+ | ==== Gateways nach Besten Hops sortieren ==== | ||
+ | |||
+ | und am Ende ein Array erhalten: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | #gateways aus ffrouter sysinfo-json extrahieren und in ein array packen | ||
+ | gateways=$(grep -o '{"ip":"[^"]*"' /tmp/sysinfo.json | cut -d':' -f2 | tr -d '"' | tr '\n' ' ') | ||
+ | #die routen zu allen gateways überprüfen (maximal 8 hops) und in ein neues array schreiben | ||
+ | hopspgateway=$(for ip in $gateways; do hops=$(traceroute -q1 -w1 -m8 $ip | wc -l); echo $hops-$ip; done) | ||
+ | #echo $hopspgateway | ||
+ | #array nach hops sortieren | ||
+ | sortgate=$(echo "$hopspgateway" | tr ' ' '\n' | sort -t'-' -k1,1n -k2,2 | tr '\n' ' ') | ||
+ | #Array von "Hops-" befreien | ||
+ | sortgateways=$(echo "$sortgate" | sed 's/[0-9]*-//g') | ||
+ | #echo $sortgateways | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Anschließend nach besten Pings sortieren: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | #Sende 3 Pings mit 54321 Bytes und gebe den Durchschnitt zurück / Timeout 3 Sekunden, formatier in Format 000.000-IP zu Array | ||
+ | pinggate=$(for ip in $sortgateways; do ping_result=$(ping $ip -w3 -c3 -s54321 | tail -n1); avg=$(echo $ping_result | awk -F'/' '{printf "%.3f", $5}'); if [ "$avg" == "0.000" ]; then avg="999.999";fi; if [ ${#avg} -lt 7 ]; then avg="0$avg"; fi; printf "%s %s\n" "$avg-$ip"; done) | ||
+ | #Sortieren nach Antwortzeit in neuem Array | ||
+ | sortpinggate=$(echo "$pinggate" | tr ' ' '\n' | sort -t'-' -k1,1n -k2,2 | tr '\n' ' ') | ||
+ | #Array von "Pings-" befreien | ||
+ | sortpinggateways=$(echo "$sortpinggate" | sed 's/[0-9.0-9]*-//g') | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Auswertung: HOPs<syntaxhighlight lang=bash> | ||
+ | echo -e "to-xx.xxx.xxx.xxx\t Node" | ||
+ | for i in $sortgate; do echo -e $i "\t\" $($ipcalc $(echo "$i" | sed 's/[0-9]*-//g')); done | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Auswertung: PINGs<syntaxhighlight lang=bash> | ||
+ | echo -e "AvgPing-xx.xxx.xxx.xxx\t Node" | ||
+ | for i in $sortpinggate; do echo -e $i "\t" $($ipcalc $(echo "$i" | sed 's/[0-9.0-9]*-//g')); done | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Bevorzugte Gateways ==== | ||
+ | |||
+ | Mehrere Bevorzuge Gateways angeben 2DO | ||
+ | |||
+ | Testen ob das Gateway auch ein funktionierendes Gateway ist: | ||
+ | |||
+ | - Pingtest | ||
+ | - DNS | ||
+ | - Webseiten abrufen und auswerten | ||
+ | |||
+ | anschließend -p Gateway einstellen, wenn alle Tests erfolgreich. | ||
+ | |||
+ | === NochEinFreiFunkHorst === | ||
+ | |||
+ | Das Skript generiert eine Ausgabedatei mit Details zu jeder Station, einschließlich MAC-Adresse, Netzwerktyp, Signalstärke und anderen Metriken. Die Ausgabedatei wird in einem bestimmten Format mit Spaltenüberschriften gespeichert: MAC, Netz (Netzwerk), SNR (Signal-Rausch-Verhältnis), AVG (durchschnittliche Signalstärke), TXB (Übertragungsrate), RXB (Empfangsrate), Node (IP-Adress-Subnetz), IP (Geräte-IP-Adresse) und Name (Gerätename). | ||
+ | |||
+ | Wird später noch um iw scan Infos wie ssid und bmxd Routinginformationen erweitert. ;) | ||
+ | |||
+ | cd /tmp | ||
+ | vi NochEinFreiFunkHorst | ||
+ | |||
+ | <syntaxhighlight lang=bash line> | ||
+ | #!/bin/sh | ||
+ | . /etc/profile >/dev/null | ||
+ | wd='/tmp/qoff/' # WorkDir | ||
+ | ipcalc='/usr/lib/ddmesh/ddmesh-ipcalc.sh' | ||
+ | |||
+ | iw dev > $wd'iwdev' | ||
− | == | + | ##it's me### |
+ | ext=0; echo 'addr 00:00'>>$wd'iwdev' | ||
+ | echo x>$wd'itsme' | ||
+ | while read line; do | ||
+ | if echo $line | grep -q "addr" && [ $ext -eq 1 ]; then | ||
+ | ext=0 | ||
+ | echo $addr $type $chan $ssid >> $wd'itsme' | ||
+ | fi | ||
+ | |||
+ | if echo $line | grep -q "type"; then | ||
+ | type=$(echo $line | sed 's/type//g' | tr -d " ") | ||
+ | fi | ||
+ | |||
+ | if echo $line | grep -q "ssid"; then | ||
+ | ssid=$(echo $line | sed 's/ssid//g' | tr -d " ") | ||
+ | fi | ||
+ | |||
+ | if echo $line | grep -q "channel"; then | ||
+ | chan=$(echo $line | awk '{print $2}') | ||
+ | fi | ||
+ | |||
+ | if echo $line | grep -q "addr"; then | ||
+ | addr='MAC';type=noTYPE; ssid=noSSID; chan=0; | ||
+ | addr=$(echo $line | awk '{print $2}') | ||
+ | ext=1 | ||
+ | fi | ||
+ | done < $wd'iwdev' | ||
+ | ######### | ||
+ | |||
+ | |||
+ | |||
+ | #Kopf | ||
+ | if test -d $wd; then echo x>/dev/null; else mkdir $wd; fi | ||
+ | echo MAC Netz SNR AVG TXB RXB Node IP Name > $wd'out' | ||
+ | |||
+ | interfaces=$(iw dev | grep 'Interface' | awk '{print $2}') #interfaces einlesen | ||
+ | ifconfig > $wd'ifinter' | ||
+ | |||
+ | rm $wd'dumps' | ||
+ | for interface in $interfaces; do | ||
+ | echo "Station" $(cat $wd'ifinter' | sed 'y/ABCDEF/abcdef/' | grep $interface | awk '{print $5}') " me" $interface >> $wd'dumps' | ||
+ | |||
+ | iw dev $interface station dump | grep 'Station\|signal:\|signal avg:\|tx bitrate:\|rx bitrate:' >> $wd'dumps' | ||
+ | done | ||
+ | |||
+ | arp -a | grep '100.\|10.200\|10.201'> $wd'arp' #Achtung . /etc/profile >/dev/null beachten | ||
+ | |||
+ | cat $wd'dumps' | tr "()" " " > $wd'dump' | ||
+ | |||
+ | ext=0 | ||
+ | while read line; do | ||
+ | if echo $line | grep -q "Station" && [ $ext -eq 1 ]; then | ||
+ | |||
+ | IP=$(cat $wd'arp' | grep $STA | awk '{print $1}') | ||
+ | |||
+ | if [ "$(echo $IP | cut -b0-6)" = "10.200" ]; then | ||
+ | NODE=$($ipcalc $IP) | ||
+ | fi | ||
+ | if [ "$(echo $IP | cut -b0-6)" = "10.201" ]; then | ||
+ | NODE=$($ipcalc $IP) | ||
+ | fi | ||
+ | if [ "$(echo $IP | cut -b0-4)" = "100." ]; then | ||
+ | IP=$(cat /tmp/dhcp.leases | grep $STA | awk '{print $3}') | ||
+ | NAME=$(cat /tmp/dhcp.leases | grep $STA | awk '{print $4}') | ||
+ | fi | ||
+ | |||
+ | echo $STA $BAND $SNR $AVG $TXB $RXB $NODE $IP $NAME >> $wd'out' | ||
+ | ext=0 | ||
+ | fi | ||
+ | |||
+ | if echo $line | grep -q "Station"; then | ||
+ | STA=$(echo $line | awk '{print $2}') | ||
+ | BAND=$(echo $line | awk '{print $4}') | ||
+ | BAND=${BAND:0:5} | ||
+ | ext=1 #Begin parsing | ||
+ | SNR=FFDD;AVG=FFDD;TXB=FFDD;RXB=FFDD;IP=FFDD;NAME=unused;NODE=' no ' #Fehlercode falls Wert nicht geparst | ||
+ | |||
+ | me=$(echo $line | awk '{print $3}') | ||
+ | if [ $me = "me" ]; then | ||
+ | SNR=dBm;AVG=dBm;TXB='Mbit/s';RXB='Mbit/s';IP=XXX;NAME=XYZ;NODE='^' #Fehlercode falls Wert nicht geparst | ||
+ | IP=$(uci get network.wifi_mesh2g.ipaddr) | ||
+ | NODE=$($ipcalc $IP) | ||
+ | Nssid=$(cat $wd'itsme' | grep $STA | awk '{print $4}') | ||
+ | Ntype=$(cat $wd'itsme' | grep $STA | awk '{print $2}') | ||
+ | Nchan=$(cat $wd'itsme' | grep $STA | awk '{print $3}') | ||
+ | NAME="$Nssid($Ntype:$Nchan)" | ||
+ | #IP=$(echo $line | awk '{print $3}') | ||
+ | echo >> $wd'out' | ||
+ | echo $STA $BAND $SNR $AVG $TXB $RXB $NODE $IP $NAME >> $wd'out' | ||
+ | #echo MEEEEEEEEEE | ||
+ | |||
+ | ext=0 | ||
+ | fi | ||
+ | |||
+ | fi | ||
+ | |||
+ | |||
+ | if echo $line | grep -q "signal:"; then | ||
+ | SNR=$(echo $line | awk '{print $2}') | ||
+ | fi | ||
+ | if echo $line | grep -q "signal avg:"; then | ||
+ | AVG=$(echo $line | awk '{print $3}') | ||
+ | fi | ||
+ | if echo $line | grep -q "tx bitrate:"; then | ||
+ | TXB=$(echo $line | awk '{print $3}') | ||
+ | fi | ||
+ | if echo $line | grep -q "rx bitrate:"; then | ||
+ | RXB=$(echo $line | awk '{print $3}') | ||
+ | fi | ||
+ | |||
+ | done < $wd'dump' | ||
+ | |||
+ | #Formatierte Ausgabe | ||
+ | clear | ||
+ | cat $wd'out' | awk 'BEGIN { FS=" " } { printf "%-20s %+5s %-3s %-3s %+6s %+6s %+6s %-15s %-32s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9 }' | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | chmod +x NochEinFreiFunkHorst | ||
+ | |||
+ | Ausführen: | ||
+ | |||
+ | while true; do ./NochEinFreiFunkHorst; sleep 2; done | ||
+ | |||
+ | ===Bypass für Offloader=== | ||
+ | |||
+ | [[Datei:Powerload.PNG|400px|thumb|Powerloadmodel]] | ||
+ | Das Script wird auf dem Bypassrouter (TL 1043) installiert und prüft ob der Offloader per MeshOnLan verfügbar ist und ob auf dem Offloader fastd Tunnel laufen: Ist das der Fall, wird das Interface eth0 und tbb_fastd auf dem Bypassrouter abgeschaltet, damit ausschließlich nur noch der Offloader benutzt wird. Die restlichen Router können, aber müssen nicht, außer per WLAN Meshnetz auch noch per MeshOnLAN vernetzt werden und nutzen automatisch den Offloader. Nach einer Wartezeit prüft der Bypassrouter, ob eine Website wirklich geladen werden kann: Ist dies nicht der Fall, werden die Interface des Bypassrouters wieder eingeschalten. | ||
+ | <syntaxhighlight lang=bash> | ||
+ | * als Cronjob möglich | ||
+ | |||
+ | ip='10.200.x.y' #bypassrouter | ||
+ | ol='10.200.j.z' #offloader ip | ||
+ | probe='wikipedia.org' | ||
+ | wget https://$ol/sysinfo-json.cgi -O /tmp/bypass/olsysinfo --no-check-certificate | ||
+ | if [ $(grep $ip /tmp/bypass/olsysinfo | wc -l) -ge 1 ]; #check ip | ||
+ | then if [ $(grep backbone /tmp/bypass/olsysinfo | wc -l) -ge 1 ]; #check backbone | ||
+ | then ifconfig tbb_fastd down; ifconfig eth0 down; #interface des bypassrouters ausschalten, wenn offloader verfügbar | ||
+ | fi; | ||
+ | fi | ||
+ | sleep 15 #gib dem batman noch zeit | ||
+ | wget https://$probe -O /tmp/bypass/probe --no-check-certificate | ||
+ | if [ $(grep $probe /tmp/bypass/probe | wc -l) -ge 1 ]; then echo wikiokay; else ifconfig eth0 up; ifconfig tbb_fastd up; fi # | ||
+ | rm /tmp/bypass/* | ||
+ | </syntaxhighlight> | ||
+ | ===Prozess bestimmten Kernen zuweisen=== | ||
+ | |||
+ | Unter Brücksichtigung von SMT/HT, bei 4 Kernen. Restliches Tasks auf Kerne 1 und 3, Kern 0 "bmxd", Kern 2 "fastd": | ||
+ | |||
+ | rm /tmp/mc; ps -xa>/tmp/mc;while read i ; do task=$(echo $i | cut -b1-5 | grep -o '[0-9]'*); taskset -pc 1,3 $task; done</tmp/mc | ||
+ | taskset -pc 0 $(grep local/bin/bmxd /tmp/mc | cut -b 1-5) | ||
+ | taskset -pc 2 $(grep fastd2.conf /tmp/mc | cut -b 1-5) | ||
+ | |||
+ | ===OpenSSL Benchmark=== | ||
+ | |||
+ | ====Vorbereitung OpenWrt==== | ||
+ | |||
+ | * OpenWrt ohne Zusätze installieren. | ||
+ | * Über 192.168.1.1 einloggen | ||
+ | opkg update | ||
+ | opkg install openssl-utils | ||
+ | |||
+ | ====Benchen==== | ||
+ | |||
+ | OpenSSL Mulitcore Bench für Linux/Openwrt/EdgeOS. Am Besten per vi Dateiname in /tmp/ erstellen, chmod +x Dateiname & Go ./Dateiname<br> | ||
+ | Es werden Benchs für 1,2,4 und MaximaleKerne/2 und Maximale Kerne erstellt, sofern soviele Kerne vorhanden sind | ||
+ | |||
+ | #Cores ermitteln und ins temp schreiben | ||
+ | cores=$(grep -c 'processor' /proc/cpuinfo) | ||
+ | if [ $cores -gt 1 ]; then sort /proc/cpuinfo | uniq -u>/tmp/ci; sort -r /proc/cpuinfo | uniq -d>>/tmp/ci; else cat /proc/cpuinfo>/tmp/ci; fi | ||
+ | benchmarks='md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048' | ||
+ | #Benchmarks Single- und Multicore | ||
+ | rm /tmp/sslspeed* | ||
+ | openssl speed -multi 1 $benchmarks | tee /tmp/sslspeed1 | ||
+ | if [ $cores -gt 1 ]; then openssl speed -multi 2 $benchmarks | tee /tmp/sslspeed2; fi | ||
+ | if [ $cores -gt 3 ]; then openssl speed -multi 4 $benchmarks | tee /tmp/sslspeed4; fi | ||
+ | if [ $cores -gt 4 ] && [ $cores -ne 8 ]; then openssl speed -multi $(($cores/2)) $benchmarks | tee /tmp/sslspeed$(($cores/2)); fi | ||
+ | if [ $cores -gt 4 ]; then openssl speed -multi $cores $benchmarks | tee /tmp/sslspeed$cores; fi | ||
+ | #Auswertung | ||
+ | echo Systeminfos BogoMIPS OpenSSL-Version $benchmarks>/tmp/speed | ||
+ | echo -n '1'>>/tmp/speed | ||
+ | echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed | ||
+ | echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed1 | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed | ||
+ | if [ $cores -gt 1 ]; then echo -n '2'>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed2 | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi | ||
+ | if [ $cores -gt 3 ]; then echo -n '4'>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed4 | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi | ||
+ | if [ $cores -gt 4 ] && [ $cores -ne 8 ]; then echo -n $(($cores/2))>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed$(($cores/2)) | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi | ||
+ | if [ $cores -gt 4 ]; then echo -n $cores>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed$cores | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi | ||
+ | cat /tmp/speed | ||
+ | |||
+ | |||
+ | ====5Ghz Mesh Hack==== | ||
+ | |||
+ | |||
+ | '''/etc/config/wireless''' darauf achten, dass gleicher Kanal (nicht auto!) und gleiches "Land" unter: | ||
+ | |||
+ | config wifi-device 'radio5g' | ||
+ | option country ''''DE'''' | ||
+ | option channel ''''44'''' | ||
+ | |||
+ | '''/etc/config/wireless''' ergänzen, gleiche '''bssid''' und '''ssid''': | ||
− | ''' | + | #5g Mesh |
+ | config wifi-iface | ||
+ | option device 'radio5g' | ||
+ | option network 'wifi' | ||
+ | option mode ''''adhoc'''' | ||
+ | option bssid ''''64:64:6d:65:55:55'''' | ||
+ | option encryption 'none' | ||
+ | option mcast_rate '6000' | ||
+ | option ssid ''''Freifunk-Mesh-Net5'''' | ||
+ | ''' | ||
+ | '''Ausführen:''''' | ||
− | + | meship=$(ifconfig br-mesh_lan | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1) | |
+ | ifconfig wlan0 $meship | ||
+ | ifconfig wlan1 $meship | ||
+ | bmxd -c dev=wlan0 /linklayer 2 | ||
+ | bmxd -c dev=wlan1 /linklayer 2 |
Aktuelle Version vom 3. April 2024, 17:40 Uhr
Inhaltsverzeichnis
Verwaltung
Gateways:
Node | VPN | Hoster | Exit Protokoll |
---|---|---|---|
2 | 3 | Hetzner | Wireguard OVPN DE |
51001 | it4r | Max | Wireguard Mullvad DE |
Inventar
Node | Typ | Ort |
---|
https://wiki.freifunk-dresden.de/index.php/Router
1727 | TP-Link 941v6 | EKP:18€ gegen Spende |
1880 | TP-Link 941v6 | EKP:18€ gegen Spende |
1852 | TP-Link 841v9 | gegen Spende |
1527 | TL-WA801N/ND v2 | gegen Spende |
1922 | TP-Link 841v9 | gegen Spende |
2167 | TP-Link 841v8 | gegen Spende |
1166 | TP-Link 841v8 | gegen Spende |
1712 | TL-WR941N/ND v5 | |
Gebraucht | TP-Link 841v8 | < ExLoui Projektrouter |
Gebraucht | TP-Link 841v10 | < ExLoui Projektrouter |
Gebraucht | TP-Link 841v10 | < ExLoui Projektrouter |
Gebraucht | TP-Link 841v10 | < ExLoui Projektrouter |
1057 | TP-Link 1043v2 (USB 2.0) | Erster Offloader EKP:40€(2016) gegen Spende |
2168 | AVM FRITZ!Box 7312 | gegen Spende |
1036 | AVM FRITZ!Box 7412 | EKP:5€ gegen Sprende |
1144 | Xiaomi Mi Router 4A Gigabit | Testrouter zum Verleih |
1271 | Xiaomi Mi Router 4A Gigabit | Kö 59 |
OVP | Xiaomi Mi Router 4A Gigabit | OVP EKP(2022): 29€ |
OVP | Xiaomi Mi Router 4A Gigabit | OVP EKP(2022): 29€ |
OVP | Xiaomi Mi Router 4A Gigabit | OVP EKP(2022): 29€ |
Gebraucht | Netgear 6220 (USB) | Ex BSZ Outdoor EKP:35€(2020) gegen Spende |
Gebraucht | Netgear 6220 (USB) | <ExLoui Projektrouter |
Geflasht | 2x TP-Link RE650 AC2600 | EKP:40€(2023) |
Geflasht | 2x D-Link COVR-X1860 | EKP:30€(2023) |
Gateways (VServer)
Adresse | Betreiber | IP |
---|---|---|
vpn3.freifunk-dresden.de | Mirko | 10.200.0.3 |
vpn7.freifunk-dresden.de | Max | 10.200.0.5 |
vpn13.freifunk-dresden.de | Sven | 10.200.0.14 |
vpn14.freifunk-dresden.de | Sven | 10.200.0.15 |
vpn2.freifunk-dresden.de | Max | 10.200.0.112 |
vpn11.freifunk-dresden.de | Daniel | 10.200.0.201 |
vpn16.freifunk-dresden.de | Daniel | 10.200.0.202 |
vpn1.freifunk-dresden.de | Stephan | 10.200.1.1 |
vpn12.freifunk-dresden.de | Stephan | 10.200.1.2 |
Andere Projekte
BOINC im Team Planet 3DNow!. Statistiken
Spickzettel
Datei mit bestimmten Inhalt finden
find -type f -exec grep -q -i '100.200.xxxxx' '{}' \; -print
Speedtest zwischen Knoten:
Knoten:
while true; do iperf3 -c 10.200.x.y --bidir -t 10 -P 3| grep 'sender\|receiv' | grep SUM; date; done
Speedtest
Testfile zum Knoten laden (auf Server und Router mit Internetkabelverbindung erfolgt das ohne VPN) und verwerfen:
wget -O /dev/null http://speedtest.wdc01.softlayer.com/downloads/test10.zip (10MByte)
20x
for i in $(seq 20); do wget -O /dev/null "http://speedtest.dal01.softlayer.com/downloads/test100.zip" >>/dev/null; done
unter Nutzung eines bestimmten Interface
curl --interface vpn0 "https://www.speedtestx.de/testfiles/data_1gb.test">/dev/null
bmxd
bmxd -c --gateways
verfügbare Gateways
bmxd -c -p 10.200.x.y
bevorzugtes Gateway auswählen
bmxd -cid8
Übersicht
bmxd -c -r [****]
Routingclass, sofern es kein bevorzugtes Gateway gibt oder jenes ausgefallen ist:
*0 kein Tunnel, default route
*1 Permanent das „schnellste“ Gateway, basierend auf Ankündigung des Gateways
*2 Permanent das stabilste Gateway, basierend auf den Messergebnissen des Protokolls
*3 Dynamisch Umschaltung auf das stabilste Gateway (siehe auch "gateway_hysteresis", in der Hilfe)
Doku
B.A.T.M.A.N. daemon - https://www.open-mesh.org/projects/batmand/wiki/Doc-overview
Server
Server mit anderem Server per festd verbinden:
/etc/init.d/S53backbone-fastd2 add_connect vpnx.freifunk-dresden.de 5002 pubkey
Keys liegen unter
/etc/fastd/peers (alt) oder /etc/fastd/peers2 (aktuell)
Banana PI M2 Berry
Temperatur:
while :; do clear; cat /sys/devices/virtual/thermal/thermal_zone0/temp; sleep 1; done
Frequenzen:
cat /sys/devices/system/cpu/cpufreq/all_time_in_state
Status:
sdir=/sys/devices/system/cpu/cpu ; sfil='/cpufreq/stats/ti*' ; stemp=/sys/devices/virtual/thermal/thermal_zone0/temp; while :; do clear; grep 'model\|Bogo\|proc' /proc/cpuinfo | tail -n 3; echo TemperaturIn°C; cat $stemp; for ((i=0;i<4;++i)); do echo cpu$i; cat $sdir$i$sfil; done; sleep 2; done
Router neu einrichten
Expert->System->
Bevorzugtes Gateway (IP): 10.200.0.3
Fallback DNS (IP): 1.1.1.1 oder 85.214.20.141
Expert->Backbone -> vpn3.freifunk-dresden.de 5002 c3b6153b27893b8674b3869aa3c5ccae3bfb874b6e866bca2bb6c01db0a847ba
Expert->WIFI -> Check
Expert->Splash -> Absschalten
DHCP Lease 30min
Betatestrouter
Geräte-Name
Hersteller
Preis
RAM
Flash ROM
Mhz/SoC
(CPU-Leistung)
MIMO 1x1:1
Version
Beschreibung
Adresse OriginalFW
Netzteil / Wirkleistung
NDA
?>=35 €
128
16
650/9533
2x2:2@2,4Ghz
1x1:1@5Ghz
v1
x Antennen
10.123.123.1 DHCP (LAN&WAN)
Netzteil 12V 600mA
WLAN:2,6W
Bootloader startet automatisch, wenn Router ohne Firmware.
Bootloader zwangsweise starten:
Router Stromlos machen, Resettaster gedrückt halten, LED blinkt+10 Sekunden Reset gedrückt halten, Reset loslassen.
Das Webinterface ist jetzt unter 192.168.1.1 und 10.123.123.1 zu erreichen.
- Ggf. muss euer Rechner mit einem /24 Netzwerk eingestellt werden, wenn DHCP nicht funktionieren sollte, unter Linux ist das z.B. der Fall, Windows 7\|10 erhält eine IP vom DHCP.
TFTP Boot
todo
WLAN LED
LAN LED
Status
Rot Orange Pulsierend
Pulsierend
Bootloader geladen, http per 10.123.123.1 Zugriff möglich
Rot Blinkend
Aus
Keine funktionierende Firmware oder Router gebrickt
Aus
Aus
Router ohne Funktion, möglicherweise aber trotzdem am Strom
Codeschnipsel
WLAN Scan in "CSV" Ausgabe umwandeln
iwinfo wifi5ap stationdump | tr '\n' ';' | sed 's/;;/\n/g; s/Cell /\nCell /g; s/ \+/ /g' | sed '/^$/d'
iwinfo wifi2ap stationdump | tr '\n' ';' | sed 's/;;/\n/g; s/Cell /\nCell /g; s/ \+/ /g' | sed '/^$/d'
Skynet
"Intelligente" Gatewayauswahl.
1. Autonomes setzen des bevorzugten Gateways, um Stabilität des Knotens und der VPN Verbindung zu verbessern, wenn kein bevorzugtes Gateway konfiguriert oder
2. Schritt das bevorzugte Gateway nicht mehr ordnungsgemäß funktioniert.
3. Schritt Liste bevorzugter Gateways
Gateways nach Besten Hops sortieren
und am Ende ein Array erhalten:
#gateways aus ffrouter sysinfo-json extrahieren und in ein array packen
gateways=$(grep -o '{"ip":"[^"]*"' /tmp/sysinfo.json | cut -d':' -f2 | tr -d '"' | tr '\n' ' ')
#die routen zu allen gateways überprüfen (maximal 8 hops) und in ein neues array schreiben
hopspgateway=$(for ip in $gateways; do hops=$(traceroute -q1 -w1 -m8 $ip | wc -l); echo $hops-$ip; done)
#echo $hopspgateway
#array nach hops sortieren
sortgate=$(echo "$hopspgateway" | tr ' ' '\n' | sort -t'-' -k1,1n -k2,2 | tr '\n' ' ')
#Array von "Hops-" befreien
sortgateways=$(echo "$sortgate" | sed 's/[0-9]*-//g')
#echo $sortgateways
Anschließend nach besten Pings sortieren:
#Sende 3 Pings mit 54321 Bytes und gebe den Durchschnitt zurück / Timeout 3 Sekunden, formatier in Format 000.000-IP zu Array
pinggate=$(for ip in $sortgateways; do ping_result=$(ping $ip -w3 -c3 -s54321 | tail -n1); avg=$(echo $ping_result | awk -F'/' '{printf "%.3f", $5}'); if [ "$avg" == "0.000" ]; then avg="999.999";fi; if [ ${#avg} -lt 7 ]; then avg="0$avg"; fi; printf "%s %s\n" "$avg-$ip"; done)
#Sortieren nach Antwortzeit in neuem Array
sortpinggate=$(echo "$pinggate" | tr ' ' '\n' | sort -t'-' -k1,1n -k2,2 | tr '\n' ' ')
#Array von "Pings-" befreien
sortpinggateways=$(echo "$sortpinggate" | sed 's/[0-9.0-9]*-//g')
Auswertung: HOPs
echo -e "to-xx.xxx.xxx.xxx\t Node"
for i in $sortgate; do echo -e $i "\t\" $($ipcalc $(echo "$i" | sed 's/[0-9]*-//g')); done
Auswertung: PINGs
echo -e "AvgPing-xx.xxx.xxx.xxx\t Node"
for i in $sortpinggate; do echo -e $i "\t" $($ipcalc $(echo "$i" | sed 's/[0-9.0-9]*-//g')); done
Bevorzugte Gateways
Mehrere Bevorzuge Gateways angeben 2DO
Testen ob das Gateway auch ein funktionierendes Gateway ist:
- Pingtest
- DNS
- Webseiten abrufen und auswerten
anschließend -p Gateway einstellen, wenn alle Tests erfolgreich.
NochEinFreiFunkHorst
Das Skript generiert eine Ausgabedatei mit Details zu jeder Station, einschließlich MAC-Adresse, Netzwerktyp, Signalstärke und anderen Metriken. Die Ausgabedatei wird in einem bestimmten Format mit Spaltenüberschriften gespeichert: MAC, Netz (Netzwerk), SNR (Signal-Rausch-Verhältnis), AVG (durchschnittliche Signalstärke), TXB (Übertragungsrate), RXB (Empfangsrate), Node (IP-Adress-Subnetz), IP (Geräte-IP-Adresse) und Name (Gerätename).
Wird später noch um iw scan Infos wie ssid und bmxd Routinginformationen erweitert. ;)
cd /tmp
vi NochEinFreiFunkHorst
1 #!/bin/sh
2 . /etc/profile >/dev/null
3 wd='/tmp/qoff/' # WorkDir
4 ipcalc='/usr/lib/ddmesh/ddmesh-ipcalc.sh'
5
6 iw dev > $wd'iwdev'
7
8 ##it's me###
9 ext=0; echo 'addr 00:00'>>$wd'iwdev'
10 echo x>$wd'itsme'
11 while read line; do
12 if echo $line | grep -q "addr" && [ $ext -eq 1 ]; then
13 ext=0
14 echo $addr $type $chan $ssid >> $wd'itsme'
15 fi
16
17 if echo $line | grep -q "type"; then
18 type=$(echo $line | sed 's/type//g' | tr -d " ")
19 fi
20
21 if echo $line | grep -q "ssid"; then
22 ssid=$(echo $line | sed 's/ssid//g' | tr -d " ")
23 fi
24
25 if echo $line | grep -q "channel"; then
26 chan=$(echo $line | awk '{print $2}')
27 fi
28
29 if echo $line | grep -q "addr"; then
30 addr='MAC';type=noTYPE; ssid=noSSID; chan=0;
31 addr=$(echo $line | awk '{print $2}')
32 ext=1
33 fi
34 done < $wd'iwdev'
35 #########
36
37
38
39 #Kopf
40 if test -d $wd; then echo x>/dev/null; else mkdir $wd; fi
41 echo MAC Netz SNR AVG TXB RXB Node IP Name > $wd'out'
42
43 interfaces=$(iw dev | grep 'Interface' | awk '{print $2}') #interfaces einlesen
44 ifconfig > $wd'ifinter'
45
46 rm $wd'dumps'
47 for interface in $interfaces; do
48 echo "Station" $(cat $wd'ifinter' | sed 'y/ABCDEF/abcdef/' | grep $interface | awk '{print $5}') " me" $interface >> $wd'dumps'
49
50 iw dev $interface station dump | grep 'Station\|signal:\|signal avg:\|tx bitrate:\|rx bitrate:' >> $wd'dumps'
51 done
52
53 arp -a | grep '100.\|10.200\|10.201'> $wd'arp' #Achtung . /etc/profile >/dev/null beachten
54
55 cat $wd'dumps' | tr "()" " " > $wd'dump'
56
57 ext=0
58 while read line; do
59 if echo $line | grep -q "Station" && [ $ext -eq 1 ]; then
60
61 IP=$(cat $wd'arp' | grep $STA | awk '{print $1}')
62
63 if [ "$(echo $IP | cut -b0-6)" = "10.200" ]; then
64 NODE=$($ipcalc $IP)
65 fi
66 if [ "$(echo $IP | cut -b0-6)" = "10.201" ]; then
67 NODE=$($ipcalc $IP)
68 fi
69 if [ "$(echo $IP | cut -b0-4)" = "100." ]; then
70 IP=$(cat /tmp/dhcp.leases | grep $STA | awk '{print $3}')
71 NAME=$(cat /tmp/dhcp.leases | grep $STA | awk '{print $4}')
72 fi
73
74 echo $STA $BAND $SNR $AVG $TXB $RXB $NODE $IP $NAME >> $wd'out'
75 ext=0
76 fi
77
78 if echo $line | grep -q "Station"; then
79 STA=$(echo $line | awk '{print $2}')
80 BAND=$(echo $line | awk '{print $4}')
81 BAND=${BAND:0:5}
82 ext=1 #Begin parsing
83 SNR=FFDD;AVG=FFDD;TXB=FFDD;RXB=FFDD;IP=FFDD;NAME=unused;NODE=' no ' #Fehlercode falls Wert nicht geparst
84
85 me=$(echo $line | awk '{print $3}')
86 if [ $me = "me" ]; then
87 SNR=dBm;AVG=dBm;TXB='Mbit/s';RXB='Mbit/s';IP=XXX;NAME=XYZ;NODE='^' #Fehlercode falls Wert nicht geparst
88 IP=$(uci get network.wifi_mesh2g.ipaddr)
89 NODE=$($ipcalc $IP)
90 Nssid=$(cat $wd'itsme' | grep $STA | awk '{print $4}')
91 Ntype=$(cat $wd'itsme' | grep $STA | awk '{print $2}')
92 Nchan=$(cat $wd'itsme' | grep $STA | awk '{print $3}')
93 NAME="$Nssid($Ntype:$Nchan)"
94 #IP=$(echo $line | awk '{print $3}')
95 echo >> $wd'out'
96 echo $STA $BAND $SNR $AVG $TXB $RXB $NODE $IP $NAME >> $wd'out'
97 #echo MEEEEEEEEEE
98
99 ext=0
100 fi
101
102 fi
103
104
105 if echo $line | grep -q "signal:"; then
106 SNR=$(echo $line | awk '{print $2}')
107 fi
108 if echo $line | grep -q "signal avg:"; then
109 AVG=$(echo $line | awk '{print $3}')
110 fi
111 if echo $line | grep -q "tx bitrate:"; then
112 TXB=$(echo $line | awk '{print $3}')
113 fi
114 if echo $line | grep -q "rx bitrate:"; then
115 RXB=$(echo $line | awk '{print $3}')
116 fi
117
118 done < $wd'dump'
119
120 #Formatierte Ausgabe
121 clear
122 cat $wd'out' | awk 'BEGIN { FS=" " } { printf "%-20s %+5s %-3s %-3s %+6s %+6s %+6s %-15s %-32s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9 }'
chmod +x NochEinFreiFunkHorst
Ausführen:
while true; do ./NochEinFreiFunkHorst; sleep 2; done
Bypass für Offloader
Das Script wird auf dem Bypassrouter (TL 1043) installiert und prüft ob der Offloader per MeshOnLan verfügbar ist und ob auf dem Offloader fastd Tunnel laufen: Ist das der Fall, wird das Interface eth0 und tbb_fastd auf dem Bypassrouter abgeschaltet, damit ausschließlich nur noch der Offloader benutzt wird. Die restlichen Router können, aber müssen nicht, außer per WLAN Meshnetz auch noch per MeshOnLAN vernetzt werden und nutzen automatisch den Offloader. Nach einer Wartezeit prüft der Bypassrouter, ob eine Website wirklich geladen werden kann: Ist dies nicht der Fall, werden die Interface des Bypassrouters wieder eingeschalten.
* als Cronjob möglich
ip='10.200.x.y' #bypassrouter
ol='10.200.j.z' #offloader ip
probe='wikipedia.org'
wget https://$ol/sysinfo-json.cgi -O /tmp/bypass/olsysinfo --no-check-certificate
if [ $(grep $ip /tmp/bypass/olsysinfo | wc -l) -ge 1 ]; #check ip
then if [ $(grep backbone /tmp/bypass/olsysinfo | wc -l) -ge 1 ]; #check backbone
then ifconfig tbb_fastd down; ifconfig eth0 down; #interface des bypassrouters ausschalten, wenn offloader verfügbar
fi;
fi
sleep 15 #gib dem batman noch zeit
wget https://$probe -O /tmp/bypass/probe --no-check-certificate
if [ $(grep $probe /tmp/bypass/probe | wc -l) -ge 1 ]; then echo wikiokay; else ifconfig eth0 up; ifconfig tbb_fastd up; fi #
rm /tmp/bypass/*
Prozess bestimmten Kernen zuweisen
Unter Brücksichtigung von SMT/HT, bei 4 Kernen. Restliches Tasks auf Kerne 1 und 3, Kern 0 "bmxd", Kern 2 "fastd":
rm /tmp/mc; ps -xa>/tmp/mc;while read i ; do task=$(echo $i | cut -b1-5 | grep -o '[0-9]'*); taskset -pc 1,3 $task; done</tmp/mc
taskset -pc 0 $(grep local/bin/bmxd /tmp/mc | cut -b 1-5)
taskset -pc 2 $(grep fastd2.conf /tmp/mc | cut -b 1-5)
OpenSSL Benchmark
Vorbereitung OpenWrt
- OpenWrt ohne Zusätze installieren.
- Über 192.168.1.1 einloggen
opkg update
opkg install openssl-utils
Benchen
OpenSSL Mulitcore Bench für Linux/Openwrt/EdgeOS. Am Besten per vi Dateiname in /tmp/ erstellen, chmod +x Dateiname & Go ./Dateiname
Es werden Benchs für 1,2,4 und MaximaleKerne/2 und Maximale Kerne erstellt, sofern soviele Kerne vorhanden sind
#Cores ermitteln und ins temp schreiben
cores=$(grep -c 'processor' /proc/cpuinfo)
if [ $cores -gt 1 ]; then sort /proc/cpuinfo | uniq -u>/tmp/ci; sort -r /proc/cpuinfo | uniq -d>>/tmp/ci; else cat /proc/cpuinfo>/tmp/ci; fi
benchmarks='md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048'
#Benchmarks Single- und Multicore
rm /tmp/sslspeed*
openssl speed -multi 1 $benchmarks | tee /tmp/sslspeed1
if [ $cores -gt 1 ]; then openssl speed -multi 2 $benchmarks | tee /tmp/sslspeed2; fi
if [ $cores -gt 3 ]; then openssl speed -multi 4 $benchmarks | tee /tmp/sslspeed4; fi
if [ $cores -gt 4 ] && [ $cores -ne 8 ]; then openssl speed -multi $(($cores/2)) $benchmarks | tee /tmp/sslspeed$(($cores/2)); fi
if [ $cores -gt 4 ]; then openssl speed -multi $cores $benchmarks | tee /tmp/sslspeed$cores; fi
#Auswertung
echo Systeminfos BogoMIPS OpenSSL-Version $benchmarks>/tmp/speed
echo -n '1'>>/tmp/speed
echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed
echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed1 | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed
if [ $cores -gt 1 ]; then echo -n '2'>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed2 | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi
if [ $cores -gt 3 ]; then echo -n '4'>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed4 | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi
if [ $cores -gt 4 ] && [ $cores -ne 8 ]; then echo -n $(($cores/2))>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed$(($cores/2)) | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi
if [ $cores -gt 4 ]; then echo -n $cores>>/tmp/speed; echo -n `awk -v FS=": " -v ORS="" '/(model name|cpu model|system type|bogomips|BogoMIPS)/ { print "| " $2 " " } END { print "" }' /tmp/ci`>>/tmp/speed; echo `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed$cores | sed 's/\.\(..\)k/\10/g'`>>/tmp/speed; fi
cat /tmp/speed
5Ghz Mesh Hack
/etc/config/wireless darauf achten, dass gleicher Kanal (nicht auto!) und gleiches "Land" unter:
config wifi-device 'radio5g'
option country 'DE'
option channel '44'
/etc/config/wireless ergänzen, gleiche bssid und ssid:
#5g Mesh
config wifi-iface
option device 'radio5g'
option network 'wifi'
option mode 'adhoc'
option bssid '64:64:6d:65:55:55'
option encryption 'none'
option mcast_rate '6000'
option ssid 'Freifunk-Mesh-Net5'
Ausführen:
meship=$(ifconfig br-mesh_lan | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)
ifconfig wlan0 $meship
ifconfig wlan1 $meship
bmxd -c dev=wlan0 /linklayer 2
bmxd -c dev=wlan1 /linklayer 2