Benutzer:PeterPhilipp

Aus Freifunk Franken
Version vom 18. April 2022, 09:51 Uhr von PeterPhilipp (Diskussion | Beiträge) (→‎Administration von Knoten: aus dem 3. knoten wird wohl nichts...strom ist zu teuer)
Wechseln zu:Navigation, Suche

Ich war von 2014-2018 aktiv. Dann eine Pause. Ich will 2021 wieder aktiv werden.

Meine Kontakt mail ist: freifunk [at] delphinusdns [dot] org

Good to knows

Ein Backup Gateway auf OpenBSD basis

Ich hab ein halbes dutzend Hobbies, und viele basieren rund um dem Betriebssystem OpenBSD. OpenBSD ist jetzt in der version 6.9. Um 6.8 rum bekam es wireguard support. Rola und ich haben versucht eine cloud instanz von mir bei Hetzner die OpenBSD ist umzubauen das es ein backup gateway werden kann. Was wir jetzt haben ist eine test-loesung. Wir hatten drei oder vier reibungspunkte wo wir nicht sicher waren das OpenBSD diese erfüllen konnten.

  • GRE tunnel (muss kompatibel zu Linux sein)
  • Babeld muss funktionieren auf OpenBSD (wir benutzten 1.10 version)
  • wireguard um den FFF Router einen tunnel zu geben
  • ip tables oder kompatibel. Wir benutzten rdomain(4).

Mehr hierzu ein wenig spaeter (fuer die details):

Bei mir ging es nicht

Ende Juni 2021, hab ich beschlossen das gateway abzubauen. Für ungefähr 1-2 wochen ging der gateway nicht mehr. Die routen haben sich alle auf blackhole routen umgestellt auf die schnittstelle lo5. Ich weiss nicht was ich da tun soll, restart vom babeld hat nicht geholfen. Vielleicht war die technologie noch nicht ausgereift für BSD. Es lief die meiste Zeit von mitte Mai bis ende Juni also 6 wochen.

OpenBSD

Ich benutzte OpenBSD 6.9 mit patch 001 auf dem system. Der VPS steht bei Hetzner Online in Nürnberg.


rdomains

Ein rdomain ist ein routing tree in einem routing forest von wo es bis zu 254 routing trees (auch tables genannt) im OpenBSD system gibt. rdomain 0 ist die default route auf dem VPS und kann nicht für FFF benutzt werden. Ich habe rdomain 5 benutzt da ich andere netzwerke schon auf 3 und 4 hatte (1 und 2 hab ich garnicht benutzt). Ein route tree in seinem rdomain ist isoliert auf diesem rdomain und wenn die rdomains nicht durch drivers oder dem pf firewall system verbunden werden kommt nichts auf rdomain 0 oder anderen rdomains raus. Das ist so wie die fff routing table geschichte mit den Linux systemen.


wireguard konfigurieren

Ich habe bisher nur ein wg (wg2) hier ist die /etc/hostname.wg2 datei (zensiert)

rdomain 5
wgport ZENSIERT wgkey ZENSIERT2 wgpeer ZENSIERT3 wgaip ::/0 wgaip 0.0.0.0/0
inet6 fe80::1234:5678:90ab:cdef%wg2 64
inet 10.83.252.xxx/32
up

Hier musste ich die eui64 selber eintragen da in OpenBSD "inet6 eui64" einen fehler auf wg(4) macht.

Update: Leider kann man die gleiche IP Adresse nicht auf alle wg Schnittstellen tun. Ich hab das heute herausgefunden.. :-(, Kein problem ich hab mir ein /27 dafür reserviert im FFF Netz (Portal:Netz#10.50.186.96.2F27_.28PeterPhilipp.29)... Ich hoffe das ist OK.

GRE konfigurieren mit pf trick

Von meiner /etc/hostname.gre0 datei:

rdomain 5
inet6 eui64
inet 10.83.252.xxx/32
tunnel 2a01:ZENSIERT1 2a01:ZENSIERT2
up

Dieses konfiguriert den GRE tunnel, aber wenn pf auf dem system ist (wird immer da sein bei default) muss man IPv6 Destination Options durchlassen und zwar ungefähr so:

anchor "gre" {
       pass in on vio0 inet6 proto 47 from 2a01:ZENSIERT1 to 2a01:ZENSIERT2 allow-opts
       pass out on vio0 inet6 proto 47 from 2a01:ZENSIERT2 to 2a01:ZENSIERT1 allow-opts
}

Siehe das "allow-opts" das ist benötigt da Linux GRE ein extra header im IPv6 reinfügt. Im IPv4 modus hab ich's nie ausprobiert obwohl Rola es bereit gemacht hat. Der debug für diese allow-opts hat mich einige Stunden zurückgesetzt, aber am ende hab ichs gefunden. Es ist erwähnt im pf.conf(5) manual page.

Die lo5 Schnittstelle

Wird angelegt sobald eine rdomain 5 schnittstelle angelegt wird. Ich habe es dann doch konfiguriert in der datei /etc/hostname.lo5:

rdomain 5
inet 127.0.0.1/8
inet6 ::1/128
up

Wie jedes /etc/hostname.if kann man es gleich aktivieren mit

sh /etc/netstart lo5

Die anderen schnittstellen hab ich auch so (um)konfiguriert (sh /etc/netstart gre0 # z.B.)

babeld

Die änderungen die ich an babeld vollzogen habe sind hier https://github.com/pbug44/fff-obsd-babeld/commit/8b05ac09e0f31f903cf24100954024143c0568da.

Ich hab /etc/rc.local geändert das babeld automatisch nach boot gestartet wird:

# babeld
/sbin/route -T 5 exec /usr/local/sbin/babeld -D

Ich muss route benutzen um in den rdomain 5 zu gehen.

Die /etc/babeld.conf hab ich angepasst aus (hier raus: Freifunk-Gateway_aufsetzen/Babel) und sie sieht so aus:

# babeld config for openbsd
skip-kernel-setup true
default type tunnel max-rtt-penalty 128
interface gre0
interface lo5 type wired rxcost 4096
interface wg2
redistribute local ip 10.50.0.0/16
redistribute local ip 10.83.0.0/16
redistribute local ip fd43:5602:29bd::/48
redistribute local deny
redistribute ip 10.50.0.0/16
redistribute ip 10.83.0.0/16
redistribute ip fd43:5602:29bd::/48
local-port 33123
log-file /dev/null

Babel Routen im rdomain 5

Wenn babeld gestartet wird, muss sicher gemacht werden das keine statische routen existieren. Es ist alles Dynamisches routing. Hier zeigt die routen im rdomain 5 auf OpenBSD:

job# netstat -nr -T 5 | wc -l
   2110
job# netstat -nrfinet6 -T5 | wc -l
   1261
job# netstat -nrfinet -T5 | wc -l
    850

Gute 2K routes das babeld eingeführt hat, eine babel route hat eine '2' flagge angehängt.


Der Test Router

Der test router heisst zrd01 und steht in Schweinfurt. https://monitoring.freifunk-franken.de/routers/17104


Vielen Dank!

Vielen Dank an Robert (rola) der sehr sehr viel geduld mit mir hatte. Wir haben einen Babel gateway aufgesetzt erst für Privat und dann als Backup für die FFF Region Schweinfurt vielleicht? Mal sehen, der nächste Schritt ist die Community zu fragen ob sie Robert ablöst damit ein echt redundantes Netzwerk entsteht. Ich werde die ML bald anfragen.


TODO

IPSEC für den GRE vielleicht. Feedback aus der Community wird auch helfen.


Administration von Knoten

Ich administriere gerade zwei Knoten. Eins bei meinen Eltern am Hochfeld, und eins bei mir am Deutschhof (in reichweite von Höreder Beck's knoten).

Der Knoten am Deutschhof ist verschluesselt mit WPA2 (ssid: zwd01zwd01 gleiches passwort). Ich tue das da die dichte von AP's so gross ist, da menschen sich beklagt haben mit dem klartext modus. Jemand der in der nähe ist kann es leicht knacken oder diese schrift lesen.

Solar Batterie

Nicht jeder hat eine Südliche seite mit Balkon oder Fenster. Ich habe ein Westliches Fenster wo ich ein 100 Watt Solar panel reingetan habe. Es macht vielleicht 4-5 KWh im Jahr (!) Meistens um die Sonnenwende im Juni hat die 70 Ah Batterie (auto batterie) ein bissle zu viel ladung. Dann hänge ich geräte dran um es zu entladen (wenigsten bis auf 50%). Dieses Jahr, in 2021, habe ich 4 wochen Freifunk gehabt. Es war ein TP-LINK WR-1043v4 den ich rangehängt habe. Und da der Knoten ein wenig mehr zur Strasse stand haben sich warscheinlich Leute dafür interessiert die sonnst nicht in guter Reichweite sind. Aber das ist nur meine einschätzung. Gerade (26. September) lädt die Batterie und ist wieder auf 12V oder so, es wird warscheinlich bis April dauern wenn ich den Router wieder daranstellen kann.


Das RTL SDR

Mein Vater hat eine Funk Wetter Messstation im Haus das Temperatur und LUftfeuchtigkeit vermisst. Als Weihnachtsgeschenk hab ich mich 12 Wochenende dafür geopfert, ihm ein weg zu geben eine grafik zu haben für wenigstens Temperatur.

Also hab ich ein RTL SDR von Amazon für 40 EUR gekauft. Es kam mit Antennen. Nachdem ich rtl_433 programm 433 MHz abgehört hatte war da zwar eine Temperatur anzeige aber wir haben rausgefunden das es nicht unseres ist. Also zum Glück sagte das gerät das es auf 868MHz funkt. Gut rtl_433 kann das auch, und wir bekommen ein signal von warscheinlich der Basis-station das alle 16 Sekunden funkt. Aber wir stossen auf einige Reibungspunkte die ich unten erläutern will.

Die Freifunk Firmware

Mit layer3 firmware war es eigentlich ziemlich leicht die rtl_433 und rll_sdr pakete von OpenWRT einzubinden. Ein eigengemachtes Paket in der fff software ging auch relativ gut. Hier hatte ich keine Probleme bisher, ausser das das firmware halt "dirty" sagt. Stört mich eigentlich nicht. Danke an alle in #freifunk-franken und besonders McUles mit ihren hilfreichen Tipps.

Der TP-LINK 1043v4 Router

Super hardware, hat auch glücklicherweise ein USB port für den SDR. Geht auch gut auf 433 Mhz wo die Sampling Frequency 250K ist. Aber mit dem SDR auf sampling frequency 1M auf 868MHz was gebraucht wird, lastet den Router aus auf 87% cpu. Das geht für die development phase gut und ich hab gemessen das der Router immer noch 17 Mbit/s runterlädt, was in meinem Elternhaus sowieso OK ist (die haben nur 50 Mbit/s). Aber eventuell brauch ich was stärkeres hier, vielleicht ein AVM 4040 was ich sowieso kaufen wollte für 2022.

Der Router hat auch das SDR verweigert, also musste ich ein externes gepowertes USB-Hub beschaffen. Warscheinlich zieht das SDR ein bissle zu viel Strom.

Das OMS Wireless MBus Protokol

Was das rtl_433 Programm empfangen kann ist beschränkt ich muss warscheinlich noch die daten weiter verarbeiten. Leider ist hier eine Hürde. Das Protokol erlaubt verschlüsselung und es sieht aus das es tatsächlich verschlüsselt ist. Zum glück ist es ein offenes Europäisches protokol und ich bin gerade daran ein Protocol-Analyzer zu bauen. Es sieht ungefähr so aus:

 >>>>  omsdump v0.1 packet #1
 
 0000  51  44  a5  11  81  08  12  72  
        |   |   |   |   |   |   |   |
        |   |   |   |   |   |   |   +-A-FIELD LSB id
        |   |   |   |   |   |   +-----A-FIELD     id
        |   |   |   |   |   +---------A-FIELD     id  2164789874 (dec)
        |   |   |   |   +-------------A-FIELD MSB id 81081272 (hex)
        |   |   |   +-----------------M-FIELD LSB manufacturer a511 (hex)
        |   |   +---------------------M-FIELD MSB manufacturer ???
        |   +-------------------------44 C-FIELD CID = 44 (68 dec)
        +-----------------------------51 length 81 (dec), 5 bytes padding
  0008  ....

Ich werde den omsdump wenn er einigermassen funktioniert auf github werfen das alle was davon haben.

Wir werden warscheinlich den Hersteller des devices nach den Schlüssel fragen um in die daten reinzuschauen. Wenn das nicht möglich ist ist es erst mal endstation. Die verschlüsselung sollte AES128-CBC sein, ist also in 2021 brechbar. Aber obs sinn macht muss ich noch berechnen.

Good News, Bad News, Good News

Das OMS protokoll mit der station id 81081272 war der Wassermesser im Haus! Haha! Falsche Funkquelle! Das waren die Bad News, die Good News sind das ich jetzt die eigentliche Station empfange (mit verstellung der Antennen position). Die anderen Good News sind das es nicht verschlüsselt ist! Hier ist ein Sample:

{"time" : "2021-10-17 19:30:35.192687", "protocol" : 76, "brand" : "LaCrosse", 
 "model" : "LaCrosse-TX29IT", "id" : 8, "battery_ok" : 1, "newbattery" : 0, 
 "temperature_C" : 9.500, "humidity" : 82, "mic" : "CRC", "mod" : "FSK", "freq1" : 
 868.211, "freq2" : 868.333, "rssi" : -9.904, "snr" : 17.927, "noise" : -27.831}

Das scheint die Richtige Station zu sein. Super! Ich kann jetzt alles weiter machen ohne entschlüsseln.

Die Grafik auf dem Raspberry Pi

Ich hab ein GPIO case gekauft mit einem RPI Zero-W drinne. Das sieht aus wie ein Gameboy. Es wird eventuell im Guest WLAN oder im Freifunk sitzen und die JSON daten vom Router runterladen und mit Python eine Grafik bilden. Hierfür muss ich noch Python lernen aber ich hab schon Beispiele für Grafiken für Temperatur im Netz gefunden. Ich denke nicht das dieses alzu viele November oder Dezember WE's von mir nehmen wird.

Mit einem guten Ständer kann es auch als Uhr am Bett dienen. Den werde ich warscheinlich mit einem 3D Drucker printen. Warscheinlich miete ich mir davür einen 3D drucker.

Der letzte stand war im Januar (also bin ich nicht fertig geworden) ich hab meinem Vater nachträglich ein alternative geschenk gegeben, da dieses projekt andere projekte blockierte und verfaulte. Zuletzt wollte ich die grafik mit SDR2 library machen, ging aber nicht soweit. Dieses Projekt ist nun eingefroren.