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/18 10:36]
Django Abschnitt Ansible hinzugefügt
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:​
Zeile 36: Zeile 36:
  
 ===== Ansible-Playbook gesteuerter Bau des Offloaders ===== ===== Ansible-Playbook gesteuerter Bau des Offloaders =====
-<WRAP center round tip 70%>+<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. ​ 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. ​
  
Zeile 84: 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 90: 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 167: 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 191: 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 204: 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 230: 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 253: 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 274: 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 338: 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 540: 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 681: 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 1147: Zeile 1155:
 ssid=muenchen.freifunk.net/​welt ssid=muenchen.freifunk.net/​welt
  
-country_code=US+country_code=DE
  
 interface=wlan0 interface=wlan0
  • knb/rpb4_wg.1608287817.txt.gz
  • Zuletzt geändert: 2020/12/18 10:36
  • von Django