knb:rpb4_wg

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
knb:rpb4_wg [2020/12/17 11:03]
Django [LAN Clients]
knb:rpb4_wg [2021/02/15 19:24] (aktuell)
django typo korrigiert
Zeile 13: Zeile 13:
  
 <WRAP center round info 90%> <WRAP center round info 90%>
-Diese Anleitung funktioniert auf quasi allen Linux basierten Betriebssystemen,​ mit ein paar Anpassungen. \\+Diese Anleitung ​geht von einem Linux Hostrechner aus - sie funktioniert auf quasi allen Linux basierten Betriebssystemen,​ mit ein paar Anpassungen. \\
 \\ \\
 In den nachfolgenden Beispielen zu den Shell-/​Konsolen-Befehlen gelt folgende Formatierungen:​ In den nachfolgenden Beispielen zu den Shell-/​Konsolen-Befehlen gelt folgende Formatierungen:​
-  * Ein vorangestelltes Dollarzeichen **''​$''​** bedeutet, dass der bzw. die Befehle mit Userrechten des gerade ​angemldeten ​Benutzers ausgeführt werden können. +  * Ein vorangestelltes Dollarzeichen **''​$''​** bedeutet, dass der bzw. die Befehle mit Userrechten des gerade ​angemeldeten ​Benutzers ausgeführt werden können. 
-  * Ein vorangestelltes Raute-Symbol **''#''​** hingegen bedeutet, dass zum Ausführen des Befehls bzw. der befehle ​Root-Rechte benötigt werden, die man z.b. mit Hilfe von **''​ $ sudo su -''​** erlangen kann. +  * Ein vorangestelltes Raute-Symbol **''#''​** hingegen bedeutet, dass zum Ausführen des Befehls bzw. der Befehle ​Root-Rechte benötigt werden, die man z.b. mit Hilfe von **''​ $ sudo su -''​** erlangen kann. 
 \\ \\
 Sollten trotz des eingehenden Studiums dieser Anleitung dennoch Fragen offen bleiben, oder unvorhergesehenen Problemstellungen auftreten, findet man im **[[https://​chat.ffmuc.net/​freifunk/​channels/​technik-offloader|Chat]]** sicher schnell Hilfe und Unterstützung. ​ Sollten trotz des eingehenden Studiums dieser Anleitung dennoch Fragen offen bleiben, oder unvorhergesehenen Problemstellungen auftreten, findet man im **[[https://​chat.ffmuc.net/​freifunk/​channels/​technik-offloader|Chat]]** sicher schnell Hilfe und Unterstützung. ​
Zeile 23: Zeile 23:
 </​WRAP>​ </​WRAP>​
  
-Mit dem [[https://​www.raspberrypi.org/​documentation/​hardware/​raspberrypi/​bcm2711/​rpi_DATA_2711_1p0_preliminary.pdf|Raspberry PI 4]] ist es das erste Mal möglich, einen Offloader sinnvoll auf einem PI zu betreiben. Denn in dieser Version bietet der Ethernet Anschluss genug Durchsatz und die CPU ist leistungsfähig genug um eine ordentliche **WireGuard** Performance zu bieten. Dies war bei den Vorgänger Modellen so leider **nicht** der Fall.+Mit dem [[https://​www.raspberrypi.org/​documentation/​hardware/​raspberrypi/​bcm2711/​rpi_DATA_2711_1p0_preliminary.pdf|Raspberry PI 4]] ist es das erste Mal möglich, einen Offloader sinnvoll auf einem PI zu betreiben. Denn in dieser Version bietet der Ethernet Anschluss genug Durchsatzund die CPU ist leistungsfähig genug um eine ordentliche **WireGuard** Performance zu bieten. Dies war bei den Vorgänger Modellen so leider **nicht** der Fall.
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Zeile 34: Zeile 34:
 {{:​knb:​raspberry:​rpi.jpg?​405|Bild:​ Raspberry 4 - Lieferung/​Verpackung}} \\ {{:​knb:​raspberry:​rpi.jpg?​405|Bild:​ Raspberry 4 - Lieferung/​Verpackung}} \\
 {{:​knb:​raspberry:​19-06-26_14-06-10_2041.jpg?​405|Bild:​ Raspberry 4 - Platine in Verpackung}} {{:​knb:​raspberry:​19-06-26_14-06-10_2041.jpg?​405|Bild:​ Raspberry 4 - Platine in Verpackung}}
 +
 +===== Ansible-Playbook gesteuerter Bau des Offloaders =====
 +<WRAP center round tip 60%>
 +Wer nicht  die nachfolgenden gut dokumentierten Schritte per Hand ausführen möchte, kann sich auch mit Hilfe von **[[https://​www.ansible.com/​|Ansible]]** binnen 20 Minuten automatisiert einen Offloader Menü geführt und scriptiert erstellen lassen. ​
 +
 +<​html><​center>​Das entsprechende <​b><​a href="​https://​wiki.mailserver.guru/​doku.php/​centos:​ansible:​ffmuc-rpb4-ol"​ class="​urlextern"​ target="​_tab"​ title="​https://​wiki.mailserver.guru/​doku.php/​centos:​ansible:​ffmuc-rpb4-ol"​ rel="​nofollow noopener">​HOWTO</​a></​b>​ findet man in <​b><​a href="​https://​wiki.mailserver.guru"​ class="​urlextern"​ target="​_tab"​ title="​https://​wiki.mailserver.guru"​ rel="​nofollow noopener">​Djangos WIKI</​a></​b>​.</​center></​html>​
 +</​WRAP>​
  
 ===== Raspberry Pi OS ===== ===== Raspberry Pi OS =====
Zeile 60: Zeile 67:
  
 ==== Kopieren des Images auf die MicroSD-Karte ==== ==== Kopieren des Images auf die MicroSD-Karte ====
-Nun können wir das Image auf die MicroSD-Karte,​ die wir später in den Raspberry 4B stecken kopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte.+Nun können wir das Image auf die MicroSD-Karte,​ die wir später in den Raspberry 4B steckenkopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte.
    # tail -f /​var/​log/​messages    # tail -f /​var/​log/​messages
 bzw. bzw.
Zeile 77: Zeile 84:
 Sep  5 21:11:09 BOFHs-X230 gnome-terminal-[8119]:​ g_menu_insert_item:​ assertion '​G_IS_MENU_ITEM (item)'​ failed</​code>​ Sep  5 21:11:09 BOFHs-X230 gnome-terminal-[8119]:​ g_menu_insert_item:​ assertion '​G_IS_MENU_ITEM (item)'​ failed</​code>​
  
-In dem gezeigtem Fall handelt es sich also um die Gerätedatei **''/​dev/​mmcblk0''​**. ​Wir wissen also wie wir nun die zuvor heruntergeladene **[[#​download|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren ​müssen. In der Regel hat der "​normale Nutzer"​ keine Rechte um diese Gerätedatei anzusprechen,​ wir müssen also als Benutzer **root** oder mir den Rechten des Benutzers **root** ​die  Gerätedatei **''/​dev/​mmcblk0''​** in diesem Konfigurationsbeispiel ansprechen.+Aus der zweiten Zeile ergibt ​sich, dass die MicroSD-Karte über die Gerätedatei **''/​dev/​mmcblk0''​** ​angesprochen werden kannDie nachfolgenden Zeilen zeigen an, wie das Linux-System den bestehenden Inhalt der Karte interpretiert - tut aber für unsere Zwecke nichts zur Sache, weil wir die Karte eh gleich überschreiben. Achtung: schließt man die MicroSD-Karte z.B. über einen USB-Adapter an, kann sie auch unter einem anderen Namen erscheinen, z.B. **''/​dev/​sde''​**. Und hier ist Gefahr in Verzug, weil die System-Platte des Host-Rechners auch unter **''/​dev/​sd<​irgendwas>''​** erscheint, und es auch erfahrenen Benutzern passiert, die Buchstaben zu verwechseln,​ und beim nachfolgenden Schreibvorgang sein System zerschießt.  
 + 
 +Mit Hilfe der Gerätedatei können wir das heruntergeladene **[[#​download|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren. In der Regel hat der "​normale Nutzer"​ keine Rechte um diese Gerätedatei anzusprechen,​ wir müssen also als Benutzer **root** oder mit den Rechten des Benutzers **root** ​den Kopiervorgang aufrufen: ​
  
    # dd if=~/​2020-08-20-raspios-buster-armhf-lite.img of=/​dev/​mmcblk0 ​ bs=4M status=progress conv=fsync    # dd if=~/​2020-08-20-raspios-buster-armhf-lite.img of=/​dev/​mmcblk0 ​ bs=4M status=progress conv=fsync
Zeile 83: Zeile 92:
    $ sudo dd if=/​home/​django/​Freifunk/​2020-08-20-raspios-buster-armhf-lite.img of=/​dev/​mmcblk0 bs=4M status=progress conv=fsync</​code>​    $ sudo dd if=/​home/​django/​Freifunk/​2020-08-20-raspios-buster-armhf-lite.img of=/​dev/​mmcblk0 bs=4M status=progress conv=fsync</​code>​
  
-Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine Datei **''​/boot/ssh''​** auf der SD-Karte ab. Nach dem erneuten Anstecken ​der MicroSD-Karte wir der Speicher in der Regel im Verzeichnis **''/​run/​media/''​** oder auch **''/​media/''​**gemountet. Zum Anlagen ​der betreffenden ​Datei  **''​ssh''​** ​in dem Verzeichnis ​reicht ​also folgender Aufruf, bei dem wir den Usernamen natürlich unseren Gegebenheiten entsprechend anpassen.:+Wenn der Kopiervorgang abgeschlossen ist, Karte entfernen und wieder einstecken. Das System erkennt die beiden Partitions auf der Karte. Je nach Systemeinstellungen mountet sie die Partitions automatisch - in der Regel im Verzeichnis **''/​run/​media/''​** oder auch **''/​media/''​**. Oder es erscheint in der Systemleiste ein Icon für einen neu erkannten Wechseldatenspeicher,​ den man dann per Mausklick mounten kann. Wer unsicher ist, kann  
 + 
 +   # mount 
 + 
 +aufrufen, und feststellen,​ wo die **root-Partition** und die **boot-Partition** zu finden ist. 
 + 
 +Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine leere Datei **''​ssh''​** auf der **boot**-Partition ​ab. Damit wird beim Hochfahren ​der ssh-Server auf dem RPi gestartet, mit dessen Hilfe wir uns über das Netzwerk einloggen können. Zum Anlagen ​dieser ​Datei  **''​ssh''​** reicht folgender Aufruf, bei dem wir den Pfad, und insbesondere ​den Usernamen ​im Pfad, natürlich unseren Gegebenheiten entsprechend anpassen:
    # touch /​run/​media/​django/​boot/​ssh    # touch /​run/​media/​django/​boot/​ssh
 bzw. bzw.
    $ touch /​media/​django/​boot/​ssh    $ touch /​media/​django/​boot/​ssh
  
-Anschließend können wir nach einem Unmounten ​des Gerätes ​**''/​dev/​sdb''​** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk sowie dem zugehörigen Netzteil verbinden und starten.+Anschließend können wir nach einem Unmounten ​der Partitions ​**''/​dev/​mmcblk0p*''​** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk sowie dem zugehörigen Netzteil verbinden und starten.
  
 ===== Vorbereitende Konfigurationsschritte ===== ===== Vorbereitende Konfigurationsschritte =====
Zeile 160: Zeile 175:
  
 ==== Änderung des Hostnamens ==== ==== Änderung des Hostnamens ====
-Damit unser neuer Offloader ​auch sauber mit seinem ​Namen angesprochen und dieser Name dann auch weiterverwendet werden kannpassen wir diesen nun erst einmal an. In unserem Konfigurationsbeispiel soll dies der Name **''​rpb4-wg-ol''​** lauten. ​+Unser neuer Offloader ​braucht einen eigenen ​Namen, ​mit dem er sich von anderen eigenen Raspberry P4 unterscheiden lässt. In unserem Konfigurationsbeispiel soll der Name **''​rpb4-wg-ol''​** lauten. ​Das Setzen des Nodenamens, mit der unser Offloader dann auch auf der Freifunk-Karte später erscheinen wird, erfolgt im Abschnitt **[[#​ext-respondd|Konfiguration des ext-respondd]]**!
  
-Nun setzen ​wir den Hostnamen wie folgt:+Wir setzen den Hostnamen wie folgt:
    # hostnamectl set-hostname rpb4-wg-ol    # hostnamectl set-hostname rpb4-wg-ol
  
-Damit beim späteren Wechsel der Userrechte zu keiner Warnmeldung kommt, ​da der Hostname nicht aufgelöst werden konnte, korrigieren wir gleich noch die Konfigurationsdatei **''/​etc/​hosts''​** und ändern dort in der letzten Zeile den Defaultwert von **''​raspberrypi''​** auf unseren neuen individuellen Namen **''​rpb4-wg-ol''​** ab.+Damit es beim späteren Wechsel der Userrechte zu keiner Warnmeldung kommt, ​weil der Hostname nicht aufgelöst werden konnte, korrigieren wir gleich noch die Konfigurationsdatei **''/​etc/​hosts''​**und ändern ​auch dort den Standardnamen ​**''​raspberrypi''​** auf unseren neuen individuellen Namen **''​rpb4-wg-ol''​** ab.
    # vim /etc/hosts    # vim /etc/hosts
 <file bash /​etc/​hosts>​127.0.0.1 localhost ​ <file bash /​etc/​hosts>​127.0.0.1 localhost ​
Zeile 184: Zeile 199:
  
 <WRAP center round alert 80%> <WRAP center round alert 80%>
-Möchte ​man vom Raspberry ​später auch ein WLAN ausstrahlen lassen ​so ist es zwingend von Nöten, dass WIFI explizit via **rfkill** freizugeben!+Möchte später auch das WLAN des Raspberry verwenden, ​so ist es zwingend von Nöten, dass WIFI explizit via **rfkill** freizugeben!
 Hier loggen wir uns per SSH ein und setzen folgenden Befehl ab: Hier loggen wir uns per SSH ein und setzen folgenden Befehl ab:
    # rfkill unblock wifi    # rfkill unblock wifi
-Zum Aktivieren ist noch ein Reboot unseres Raspberry 4 nötig!+Erst ein Reboot unseres Raspberry 4 aktiviert das WLAN tatsächlich
    # systemctl reboot    # systemctl reboot
 </​WRAP>​ </​WRAP>​
Zeile 197: Zeile 212:
    # apt-get upgrade -y    # apt-get upgrade -y
  
-Nun ist es an der Zeit, das wir unseren Kleinstrechner **rpb4-wg-ol** neu zu starten.+Nun ist es dann doch an der Zeit, dass wir unseren Kleinstrechner **rpb4-wg-ol** neu zu starten.
    # systemctl reboot    # systemctl reboot
  
 ===== BATMAN ===== ===== BATMAN =====
-Für das Routing der Layer-2-Verbindungen innerhalb des Freifunknetzes wird als Mesh-Protokoll **[[https://​de.wikipedia.org/​wiki/​B.A.T.M.A.N.|B.A.T.M.A.N.-Advanced]]** kurz **''​batman-adv''​** ​benötigen, welches wir uns nun in diesem Abschnitt installieren und konfigurieren wollen. ​+Für das Routing der Layer-2-Verbindungen innerhalb des Freifunknetzes wird als Mesh-Protokoll **[[https://​de.wikipedia.org/​wiki/​B.A.T.M.A.N.|B.A.T.M.A.N.-Advanced]]** kurz **''​batman-adv''​** ​eingesetzt, welches wir uns nun in diesem Abschnitt installieren und konfigurieren wollen. ​
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
Zeile 223: Zeile 238:
  
 ==== Kernelmodule ==== ==== Kernelmodule ====
-Nachdem das Kernelmodul manuell gebaut wird, wollen wir natürlich dass das auch Bestand hat, wenn ein Kernelupdate eingespielt wird. Dazu brauchen wir nun einige Pakete, die wir erst einmal installieren werden.+Nachdem das Kernelmodul manuell gebaut wird, wollen wir natürlichdass das auch Bestand hat, wenn ein Kernelupdate eingespielt wird. Dazu brauchen wir nun einige Pakete, die wir erst einmal installieren werden.
    # apt update && apt install dkms raspberrypi-kernel-headers    # apt update && apt install dkms raspberrypi-kernel-headers
  
-Anschließend müssen wir auf Grund dessendass der Raspberry PI Kernel ​crosscompiled ​wurde, die make Skripte neu generieren.+Anschließend müssen wir die make Skripte neu generierenweil der Raspberry PI Kernel ​ursprünglich crosscompiliert ​wurde.
    # cd linux-headers-$(uname -r)    # cd linux-headers-$(uname -r)
  
Zeile 246: Zeile 261:
 </​WRAP>​ </​WRAP>​
  
-Da nun alle nötigen vorbereitenden Installations- und Konfigurationsschritte abgearbeitet ​wurden, machen wir uns an das Anlegen der für B.A.T.M.A.N. notwendigen Konfigurationsdatei **''​dkms.conf''​**.+Da nun alle nötigen vorbereitenden Installations- und Konfigurationsschritte abgearbeitet ​sind, machen wir uns an das Anlegen der für B.A.T.M.A.N. notwendigen Konfigurationsdatei **''​dkms.conf''​**.
    # cd ../​batman-adv-2020.4/​    # cd ../​batman-adv-2020.4/​
  
Zeile 267: Zeile 282:
 Zum Speichern und Verlassen des Editors **vim** benutzen wir den **Vim**-Syntax **''​ESC :​x''​**. Zum Speichern und Verlassen des Editors **vim** benutzen wir den **Vim**-Syntax **''​ESC :​x''​**.
  
-Nun sind wir mit unserer Konfiguration soweit dass wir die B.A.T.M.A.N-Kernelmodule bauen können.+Nun sind wir mit unserer Konfiguration soweitdass wir die B.A.T.M.A.N-Kernelmodule bauen können.
    # dkms add -m batman-adv -v 2020.4    # dkms add -m batman-adv -v 2020.4
  
Zeile 331: Zeile 346:
  * BATMAN_V</​code>​  * BATMAN_V</​code>​
  
-Nun kommen wir zur Interface Konfiguration. In diesem Beispielwerden wir das Raspberry PI im Segment "​**welt**"​ ansiedeln, deswegen benennen wir das zugehörige Interface **''​br-welt''​** auch entsprechend. Hierzu benötigen wir noch die **''​bridge-utils''​** die wir uns nun noch nachinstallieren werden.+Nun kommen wir zur Interface Konfiguration. In diesem Beispiel werden wir den RPi-Offloader ​im Segment "​**welt**"​ ansiedeln, deswegen benennen wir das zugehörige Interface **''​br-welt''​** auch entsprechend. Hierzu benötigen wir noch die **''​bridge-utils''​**die wir uns noch installieren:​
    # apt install bridge-utils -y    # apt install bridge-utils -y
  
-Wir können mit nachfolgendem Befehl ​noch überprüfen,​ ob die Version von **''​batctl''​** auch zur installierten Version von **''​batman-adv''​** passt.+Wir können mit nachfolgendem Befehl überprüfen,​ ob die Version von **''​batctl''​** auch zur installierten Version von **''​batman-adv''​** passt.
    # batctl -v    # batctl -v
  
Zeile 533: Zeile 548:
 Description=Inform tunnel about our wireguard-public key Description=Inform tunnel about our wireguard-public key
 Documentation=https://​wiki.mailserver.guru/​doku.php/​centos:​ansible:​ffmuc-rpb4-ol Documentation=https://​wiki.mailserver.guru/​doku.php/​centos:​ansible:​ffmuc-rpb4-ol
-Bevore=wg-quick.target+Before=wg-quick.target
  
 [Service] [Service]
Zeile 674: Zeile 689:
         /​usr/​bin/​wget -q -O- --post-data='​{"​domain":"​ffmuc_welt","​public_key":"​HjDRCwE4Q7UPAKXrmM4s6VOgMK+HJZCixWTaVC8KiRU="​}'​ http://​broker.ffmuc.net/​api/​v1/​wg/​key/​exchange         /​usr/​bin/​wget -q -O- --post-data='​{"​domain":"​ffmuc_welt","​public_key":"​HjDRCwE4Q7UPAKXrmM4s6VOgMK+HJZCixWTaVC8KiRU="​}'​ http://​broker.ffmuc.net/​api/​v1/​wg/​key/​exchange
         logger -t checkuplink "​Starting wireguard-daemon."​         logger -t checkuplink "​Starting wireguard-daemon."​
-        systemctl start [email protected]uplink+        systemctl start [email protected]welt
         logger -t checkuplink "​Starting vxlan-meshing."​         logger -t checkuplink "​Starting vxlan-meshing."​
         vxlan         vxlan
Zeile 1140: Zeile 1155:
 ssid=muenchen.freifunk.net/​welt ssid=muenchen.freifunk.net/​welt
  
-country_code=US+country_code=DE
  
 interface=wlan0 interface=wlan0
Zeile 1313: Zeile 1328:
  
 ==== Installation der Software-Bibliotheken ==== ==== Installation der Software-Bibliotheken ====
-Jetzt installieren wir die notwendige Python ​Library ​um das Display ansteuern zu können.+Jetzt installieren wir die notwendige Python ​Bibliotheken  ​um das Display ansteuern zu können.
    # apt install git fonts-freefont-ttf -y    # apt install git fonts-freefont-ttf -y
    # cd /​usr/​local/​src/​    # cd /​usr/​local/​src/​
Zeile 1601: Zeile 1616:
 </​file>​ </​file>​
  
-Anschließend ​Informieren ​wir unser System über unser definiertes Daemon-Startscript und aktivieren dies auch gleich noch. +Anschließend ​informieren ​wir unser System über unser definiertes Daemon-Startscript und aktivieren dies auch gleich noch. 
    # systemctl daemon-reload    # systemctl daemon-reload
    # systemctl enable oled-bandwidth.service    # systemctl enable oled-bandwidth.service
  
-Zu guter letzte ​rebooten wir nun unseren Rechner.+Zu guter Letzt rebooten wir nun unseren Rechner.
    # systemctl reboot    # systemctl reboot
  
  • knb/rpb4_wg.1608203037.txt.gz
  • Zuletzt geändert: 2020/12/17 11:03
  • von Django