đ§ Crumbpage 40: VPN-first â Die stille TĂŒr
Subtitle: Wie ein KrĂŒmel den Wald betritt, ohne das offene Internet zuerst fragen zu mĂŒssen
Pfad: 40
Schwierigkeit: ââââ (4/5)
Zeit: ~2 Stunden
Voraussetzungen: Pfad 07 SSH Basics · Pfad 08 SSH Keys · Pfad 31 Ansible · Pfad 32 Wurzelkarte · Pfad 39 Communicare
âNicht jede TĂŒr muss sichtbar sein.
Manche TĂŒren sind nur fĂŒr jene da, die den SchlĂŒssel tragen.â đïž
đ Wer dich auf diesem Pfad begleitet
Kein KrĂŒmel geht allein durch den Tunnel.
| Crew | Rolle hier |
|---|---|
| đ·ïž Spider | Spannt den Faden: SSH, Tunnel, Verbindung |
| đŠ KrĂŒmeleule | Fragt: Wer darf wohin â und warum? |
| đ Schnecki | Erinnert: Erst prĂŒfen, dann öffnen |
| 𩡠GitBadger | Alles gehört ins Git: Keys, Rollen, host_vars |
| âïž CloudCat | Macht aus Netzwerk Handwerk: Ansible, Hub, Deploy |
| đ Bugsy | PrĂŒft die dunklen Ecken: keine offenen Tokens, keine blinden Netze |
| đł Orca | Denkt schon ans RZ: viele Knoten, klare Kanten |
đ Was du in diesem Pfad lernst
â Warum VPN-first keine Bequemlichkeit ist, sondern Schutz
â Warum ein KrĂŒmel nicht zuerst ins offene Internet rufen muss
â Wie WireGuard aus einem GerĂ€t einen Waldknoten macht
â Warum jede VPN-IP im Crumbforest eine /32 ist
â Was crumbconnect tut
â Wie Ansible den Hub pflegt
â Warum NetBox danach erinnern darf
â Warum Brot, Antworten und Git durch die Wurzel kommen
đŻ Lernziele
Nach diesem Pfad kannst du erklÀren:
- warum VPN vor Missionen kommt
- warum ein Public Key öffentlich sein darf, aber ein Private Key nie den Baum verlÀsst
- warum
10.42.0.12/32sicherer gedacht ist als ein blindes10.42.0.0/24 - warum
allowed_ipsnicht nur Routing ist, sondern Vertrauen mit Kante - wie ein neuer Zero in den Wald kommt
- warum der Wald nicht aus offenen TĂŒren bestehen muss
đ± Grundidee: Erst die Wurzel, dann die Frage
In Pfad 39 hieĂ es:
communicare ut respires
kommunizieren, damit man atmet.
Aber Atmen braucht Raum.
Ein Kind, ein Zero, ein Raspberry Pi, ein kleiner KrĂŒmel drauĂen im WLAN oder in Warang soll nicht zuerst das offene Internet fragen mĂŒssen.
Nicht so:
KrĂŒmel
â
öffentliches Git
â
öffentliches RAG
â
Tokens, Botnetze, LĂ€rm
Sondern so:
KrĂŒmel
â
WireGuard
â
10.42.0.1 nullfeld
â
gitea · qdrant · vektor · missionen
Das ist VPN-first.
Nicht weil VPN ein Feature ist.
Sondern weil der Wald nicht schreit.
Er flĂŒstert durch Wurzeln.
đïž Die stille TĂŒr
WireGuard ist die stille TĂŒr.
Sie steht nicht offen auf dem Marktplatz.
Sie hÀngt nicht als Passwort im Skript.
Sie fragt nicht: âKennst du das richtige Wort?â
Sie fragt:
Hast du den passenden SchlĂŒssel?
Ein Node bekommt lokal ein SchlĂŒsselpaar:
private key â bleibt auf dem GerĂ€t
public key â darf zum Hub
Der Public Key ist wie ein Name, den der Wald kennen darf.
Der Private Key ist wie die Stimme des Baumes.
Die bleibt bei ihm.
đČ Zustand des Waldes
STRATO-WALD
backbone GedÀchtnis · Backup · borgmatic · checkMK
nullfeld VPN-Hub · Wurzel-Tor · Vektor · Gitea · Qdrant
CRUMBVPN
10.42.0.1 nullfeld Hub
10.42.0.11 deepsea infra-node
10.42.0.12 snakeview hailo-node
10.42.0.20 crumbzero01 zero-wanderer
WURZELKARTE
NetBox erinnert Namen, MACs, IPs, Rollen, Sites
VEKTOR
md + repos + Missionen erreichbar durch den Tunnel
Der Wald ist nicht mehr nur öffentlich erreichbar.
Er hat jetzt eine Innenseite.
đ Die wichtigste Regel: Jede 10er-IP ist /32
Im CrumbVPN bedeutet eine Adresse nicht:
Du bist in einem groĂen offenen Netz.
Sie bedeutet:
Du bist genau dieser Baum.
Darum:
10.42.0.12/32
nicht blind:
10.42.0.0/24
Eine /32 ist ein einzelner Punkt.
Ein einzelner Baum.
Ein einzelner Name mit SchlĂŒssel.
10.42.0.1/32 nullfeld
10.42.0.11/32 deepsea
10.42.0.12/32 snakeview
10.42.0.20/32 crumbzero01
Waldregel
Kein Crossconnect vorab.
Der Wald verbindet nicht blind.
Er erinnert gezielt.
Oder kurz:
/32 ist Vertrauen mit Kante.
đ§© crumbconnect: Der erste Atemzug
Ein neuer KrĂŒmel startet nicht mit einer groĂen Installation.
Er startet mit einer Vorstellung:
ââââââââââââââââ crumbconnect · #init ââââââââââââââââ
Name (hostname): snakeview
Tunnel-IP: 10.42.0.12/32
Dein PUBLIC KEY:
t7mptzoupkp+x6RXDaoXh3qXW2waKeMT7E+hK7uG+Ak=
Das Script sagt:
Ich bin dieser Baum.
Das ist meine Tunnel-IP.
Das ist mein Public Key.
Mein Private Key bleibt hier.
Dann gibt es dem GĂ€rtner den Zettel fĂŒr den Hub:
- name: snakeview
public_key: "t7mptzoupkp+x6RXDaoXh3qXW2waKeMT7E+hK7uG+Ak="
allowed_ips: "10.42.0.12/32"
Und danach:
ansible-playbook vpn-hub.yml
Das ist der Moment, in dem Ansible nicht nur fragt.
Ansible öffnet die richtige TĂŒr.
đ§ Deploy-Reihenfolge
Die Reihenfolge ist nicht zufÀllig.
Sie ist die Ethik des Netzes.
1. BASE
Hostname · User · SSH · WLAN · Grundsystem
2. VPN
crumbconnect · WireGuard · 10.42.0.x/32
3. ERINNERN
NetBox · MAC · Interface · Rolle · Site
4. BROT
Missionen · Gitea · Vektor · RAG · Offline-Wissen
Warum VPN vor Missionen?
Weil ein Kind nicht erst durch Botnetze laufen soll, um eine Aufgabe zu bekommen.
Warum NetBox nach VPN?
Weil der Wald erst erinnern soll, was wirklich atmet.
Warum Brot zuletzt?
Weil Brot nicht Passwort sein darf.
Brot muss erreichbar sein, wenn die TĂŒr sicher ist.
đ§Ș Der Herzschlag
Auf dem Node:
sudo wg show
Wenn dort steht:
latest handshake: 1 minute ago
transfer: 476 B received, 9.86 KiB sent
persistent keepalive: every 25 seconds
dann ist das nicht nur Konfiguration.
Das ist Atem.
Der Tunnel lebt.
Der Hub kennt den Knoten.
Der KrĂŒmel steht in der Wurzel.
Dann folgen die drei kleinen PrĂŒfungen:
ip addr show wg0
ping -c 3 10.42.0.1
ssh sysop@10.42.0.20
Wenn das geht, ist aus einem GerÀt ein Waldknoten geworden.
𩡠Warum GitBadger nickt
FrĂŒher:
ssh nullfeld
nano /etc/wireguard/wg0.conf
copy
paste
restart
hoffen
Jetzt:
crumbconnect
host_vars/nullfeld.yml
ansible-playbook vpn-hub.yml
prĂŒfen
commit
Das ist der Unterschied zwischen Zauberei und Handwerk.
Ein einzelner manueller Eintrag kann funktionieren.
Ein Playbook kann wiederholt werden.
Ein Zettel im Git kann geprĂŒft werden.
Ein Zustand im Git kann erklÀrt werden.
đșïž NetBox: Die Wurzelkarte erinnert
Wenn der Tunnel steht, darf NetBox erinnern:
Name: snakeview
Tunnel-IP: 10.42.0.12/32
Site: OZM
Rolle: hailo-node
MAC: verankert
Status: active
Oder spÀter:
Name: crumbzero01
Tunnel-IP: 10.42.0.20/32
Site: Warang
Rolle: zero-wanderer
Status: active
Der Name bleibt sprechend.
Die Site trennt die WĂ€lder.
Eine Wurzelkarte.
Viele Orte.
Keine Verwechslung.
đ Brot vor Cloud
Pfad 39 fragte:
Was kostet die Frage eines Kindes?
Pfad 40 antwortet nicht mit einem Preis.
Er baut eine Route.
Kind
â
VPN
â
Vektor
â
md + repos
â
Brot + Antwort
Kosten:
0 Token
0 offene Tokens
0 öffentliches Git nötig
0 Botnetz-TĂŒr
Wert:
unbezahlbar
Eine Antwort darf nie so tun, als wÀre sie Brot.
Aber ein sicherer Tunnel kann helfen, dass Wissen, Missionen und Werkzeuge dort ankommen, wo Brot geteilt wird.
đ Bugsy-Regeln
Bugsy stellt die unbequemen Fragen:
Liegt irgendwo ein Private Key im Git?
Ist allowed_ips wirklich /32?
Ist der Hub gebackupt?
Ist Gitea von auĂen nötig?
Können Kinder-Missionen innen laufen?
Ist NetBox Erinnerung oder Fantasie?
Die Antworten des Waldes:
Private Keys bleiben lokal.
Public Keys dĂŒrfen in host_vars.
Jeder Peer bekommt /32.
Kein Crossconnect vorab.
Nullfeld wird zu Backbone gesichert.
RZ kommt als nÀchster Körper.
Sicherheit ist hier keine Mauer.
Sicherheit ist eine Form von FĂŒrsorge.
đïž Nullfeld, Backbone, RZ
nullfeld
ââ VPN-Hub
ââ Gitea
ââ Qdrant/Vektor
ââ TĂŒr zum Wald
backbone
ââ Backup-Ziel
ââ borgmatic
ââ checkMK
ââ GedĂ€chtnis
RZ
ââ Bare Metal
ââ GPU-Knoten
ââ Proxmox / Cluster spĂ€ter
ââ Körper des Waldes
Nullfeld ist die TĂŒr.
Backbone ist das GedÀchtnis.
Das RZ wird der Körper.
Aber die Reihenfolge bleibt:
TĂŒr
GedÀchtnis
Körper
Nicht andersrum.
đ§ Der Unterschied zwischen Netz und Wald
Ein Netz verbindet GerÀte.
Ein Wald verbindet Verantwortung.
Ein Netz fragt:
Kann ich diese IP erreichen?
Ein Wald fragt:
Soll dieser Baum diesen Pfad haben?
Wer erinnert das?
Wer pflegt das?
Wer darf es erklÀren?
Was passiert, wenn ein Kind fragt?
Darum ist VPN-first kein technischer Trick.
Es ist ein Entwurf.
đ ïž Hands-On: Einen neuen Baum in den Tunnel bringen
1. Auf dem neuen Node
crumbconnect init
Eingeben:
hostname: crumbzero01
tunnel-ip: 10.42.0.20/32
Das Script erzeugt:
WireGuard Keypair
wg0.conf
Public-Key-Ausgabe fĂŒr den Hub
2. Auf dem Control Node
In host_vars/nullfeld.yml:
wg_peers:
- name: crumbzero01
public_key: "PUBLIC_KEY_HIER"
allowed_ips: "10.42.0.20/32"
3. Hub ausrollen
ansible-playbook vpn-hub.yml
4. PrĂŒfen
ansible vpn -m ping
ssh sysop@10.42.0.20
5. Erinnern
ansible-playbook playbooks/netbox-raspis.yml
Dann steht der Baum nicht nur im Tunnel.
Er steht in der Wurzelkarte.
đ Merksatz
SSH ist der Faden.
Ansible ist der GĂ€rtner.
NetBox ist die Wurzelkarte.
WireGuard ist die stille TĂŒr.
Borgmatic ist der Samen.
Der Vektor ist das GedÀchtnis.
Das Kind ist der Grund.
đČ Abschluss
Der Moment, in dem der erste Zero durch den Tunnel antwortete, war nicht der Moment, in dem ein VPN funktionierte.
Es war der Moment, in dem der Wald aufhörte, aus Inseln zu bestehen.
Von nun an fragt der KrĂŒmel nicht mehr zuerst das offene Internet.
Er geht durch die Wurzel.
VPN-first.
Brot vor Cloud.
Antworten durch den Tunnel.
Jeder Baum /32.
Kein Crossconnect vorab.
Der Wald muss nicht laut sein.
Er muss atmen.
Und heute hat er geatmet.
latest handshake: now