WireGuard-Tunnel einrichten¶
Ziel¶
Ein Host im Rechenzentrum ist über einen WireGuard-Tunnel mit dem Server-VLAN im Maschinendorf verbunden und erreicht containerhost.
Voraussetzungen¶
- SSH-Zugang zum Host (Arbeitsrechner einrichten)
- jemand mit Zugang zum Gateway im Maschinendorf, erreichbar über Signal; das Gateway steht nicht im Repo
- bei Netcup: Zugang zur Web-Oberfläche, um die Firewall vor der VM einzustellen
- gelesen: Netzwerk, vor allem WireGuard-Tunnel und Firewalls bei werner
Die Werte unten sind die von werner, Stand 2026-10-04. Für einen anderen Host bekommst du Tunnel-Adresse und Pre-Shared Key von der Person mit Zugang zum Gateway; frag dabei nach, ob noch andere Werte abweichen. Name und öffentlicher Schlüssel des Gateways können sich ändern; lass sie dir in Schritt 1 bestätigen.
| Einstellung | Wert |
|---|---|
| Name der Verbindung | wg0 |
| Tunnel-Adresse von werner | 172.16.11.1/32 |
| Gateway (Endpoint), kann sich ändern | maschinendorf.resolve.bar:31339 |
| Öffentlicher Schlüssel des Gateways, kann sich ändern | PlmUqMssJaRhRLtaCa0kz81/TRidWZ9QBPxAiaN3QlE= |
Netze durch den Tunnel (AllowedIPs) |
172.16.11.0/24, 10.0.0.0/8 |
| DNS-Server auf dem Gateway | 172.16.11.254 |
Port auf dem Host (listen-port) |
31339 |
Alle Befehle laufen auf dem Host, nach ssh <fqdn>.
Schritte¶
1. Schlüsselpaar erzeugen¶
| Bash | |
|---|---|
Erwartet: der öffentliche Schlüssel in einer Zeile. Schick ihn in Signal an die Person mit Zugang zum Gateway, zusammen mit der Bitte um eine Tunnel-Adresse und einen Pre-Shared Key für den Host und um den aktuellen Namen und öffentlichen Schlüssel des Gateways. Weichen diese von der Tabelle ab, setz in den folgenden Schritten die neuen Werte ein.
2. Konfigurationsdatei anlegen¶
Leg /etc/wireguard/wg0.conf an und setz den Pre-Shared Key aus Schritt 1 ein:
| INI | |
|---|---|
Die Datei enthält keinen DNS-Server; die Namensauflösung kommt in Schritt 5 dazu.
3. Verbindung in NetworkManager anlegen¶
Erwartet: Connection 'wg0' (…) successfully added. nach dem Import und Connection successfully activated am Ende.
ipv4.never-default sorgt dafür, dass nur die Netze aus AllowedIPs durch den Tunnel gehen, nicht der übrige Verkehr ins Internet.
Setz an der Verbindung keine DNS-Server (ipv4.dns): Meldet eine Verbindung einen DNS-Server, schreibt NetworkManager /etc/resolv.conf vermutlich neu, und die Einträge aus Schritt 5 gehen verloren.
4. Tunnel in firewalld freigeben¶
| Bash | |
|---|---|
Erwartet: success zweimal, dann wg0 in der Liste.
Auf werner stehen außerdem die beiden Subnetze des Netzwerks caddy in der Zone trusted.
Das Netzwerk gibt es erst nach dem ersten apply von infra-caddy.cue; Podman vergibt die Subnetze dabei selbst, bei einem neuen Host also vermutlich andere als heute auf werner (10.89.0.0/24, fd33:c21b:6624:7c3b::/64).
Lies sie nach dem apply aus und trag sie ein:
| Bash | |
|---|---|
Erwartet: zwei Subnetze, ein IPv4- und ein IPv6-Subnetz, danach success je Befehl.
5. DNS-Server des Gateways eintragen¶
Die Namen unter garage-lab.net löst nur der DNS-Server auf dem Gateway auf.
Trag ihn in /etc/resolv.conf als erste Zeile ein:
| Text Only | |
|---|---|
Die Zeilen darunter lässt du stehen: Bei Netcup trägt cloud-init beim ersten Start die Resolver von Netcup ein, und die können sich ändern. Auf werner sieht die Datei so aus (Stand 2026-10-04):
| Bash | |
|---|---|
Erwartet: 10.0.101.3.
6. WireGuard-Port bei Netcup freigeben¶
Nur bei Netcup.
Gib in der Web-Oberfläche von Netcup in der Firewall vor der VM den UDP-Port 31339 frei (siehe Netcup).
Prüfen¶
wg show wg0zeigt den Peer mitlatest handshakevor wenigen Sekunden und wachsenden Werten beitransfer.ping -c 3 vm-containerhost.garage-lab.netbekommt drei Antworten.- Nach einem Neustart des Hosts ist
wg0wieder aktiv (nmcli connection show --active), und/etc/resolv.confist unverändert.
Wenn etwas schiefgeht¶
- Kein Handshake oder kein
ping: WireGuard-Tunnel prüfen diggibt nichts aus: Prüf, ob172.16.11.254in/etc/resolv.confan erster Stelle steht und der Tunnel steht.- Allgemeines: WireGuard: Quick Start und NetworkManager: nmcli