💡 Hinweis: Dieses Tutorial setzt voraus, dass du einen normalen Benutzer mit sudo-Rechten verwendest — wie im Tutorial Debian 13 Server absichern beschrieben.
1. Einleitung — Was ist Tailscale?
Stell dir vor, du könntest all deine Geräte — Server, Laptop, Handy — in ein privates Netzwerk packen, ohne einen einzigen Port zu öffnen. Genau das macht Tailscale.
Tailscale ist ein sogenanntes Mesh-VPN, das auf dem modernen VPN-Protokoll WireGuard® aufbaut. Während WireGuard selbst nur das Tunneling übernimmt, löst Tailscale die wirklich nervigen Probleme:
| Eigenschaft | WireGuard (pur) | Tailscale |
|---|---|---|
| Key-Management | Manuell auf jedem Gerät | Automatisch via Identity Provider |
| NAT-Traversal | Du musst Ports forwarden | Funktioniert hinter jedem NAT |
| Topologie | Hub-and-Spoke (manuell) | Peer-to-Peer Mesh (automatisch) |
| DNS | Nicht enthalten | MagicDNS eingebaut |
| ACLs | Firewall-Regeln selbst schreiben | Zentrale Policy im Admin-Panel |
| Kosten | Kostenlos | Kostenlos bis 100 Geräte (Personal) |
Kurz gesagt: WireGuard ist der Motor, Tailscale ist das fertige Auto mit Navi, Klimaanlage und Einparkhilfe.
Wie funktioniert Tailscale unter der Haube?
Tailscale nutzt einen zentralen Coordination Server (bei Tailscale gehostet oder self-hosted via Headscale), um die WireGuard-Schlüssel und Endpunkte zwischen deinen Geräten auszutauschen. Der eigentliche Datenverkehr läuft dann direkt zwischen den Geräten (Peer-to-Peer) — der Coordination Server sieht deine Daten nie.
Wenn eine direkte Verbindung nicht möglich ist (z. B. bei doppeltem NAT), springt ein DERP-Relay ein — verschlüsselt, aber mit etwas mehr Latenz. In der Praxis klappt die direkte Verbindung aber in über 90 % der Fälle.
2. Voraussetzungen
Bevor du loslegst, stelle sicher, dass du Folgendes hast:
- ✅ Debian 13 (Trixie) — frisch installiert und aktualisiert (→ Tutorial #1: Debian 13 Grundinstallation)
- ✅ Root-Zugang oder ein User mit
sudo-Rechten - ✅ Internetverbindung (kein offener Port nötig!)
- ✅ Ein Tailscale-Account — kostenlos unter login.tailscale.com (Login via Google, Microsoft, GitHub oder Apple)
💡 Tipp: Alle Befehle in diesem Tutorial werden als root ausgeführt. Wenn du einen normalen User nutzt, stelle jedem Befehl sudo voran.
3. Tailscale installieren
3.1 — Offizielles Repository hinzufügen
Tailscale stellt ein eigenes APT-Repository bereit. Die Installation ist ein Einzeiler:
curl -fsSL https://tailscale.com/install.sh | shDieses Skript erkennt automatisch deine Distribution und Version, fügt den GPG-Key und das Repository hinzu und installiert Tailscale.
⚠️ Hinweis: Falls du das Skript nicht blind ausführen möchtest (verständlich!), kannst du die Schritte auch manuell durchführen:
3.2 — Manuelle Installation (Alternative)
# Abhängigkeiten installieren
apt install -y curl gnupg apt-transport-https
# GPG-Key herunterladen
curl -fsSL https://pkgs.tailscale.com/stable/debian/trixie.noarmor.gpg \
| tee /usr/share/keyrings/tailscale-archive-keyring.gpg > /dev/null
# Repository hinzufügen
curl -fsSL https://pkgs.tailscale.com/stable/debian/trixie.tailscale-keyring.list \
| tee /etc/apt/sources.list.d/tailscale.list
# Installieren
apt update
apt install -y tailscale3.3 — Installation überprüfen
# Version anzeigen
tailscale version
# Daemon-Status prüfen
systemctl status tailscaledDer tailscaled-Daemon sollte automatisch gestartet sein. Falls nicht:
systemctl enable --now tailscaled4. Erste Verbindung & Tailscale Login
Jetzt verbinden wir deinen Debian-Server mit deinem Tailscale-Netzwerk (genannt Tailnet):
tailscale upDu bekommst eine URL angezeigt — öffne sie im Browser und logge dich mit deinem Account ein. Nach der Authentifizierung ist dein Gerät sofort Teil deines Tailnets.
Verbindung prüfen
# Deine Tailscale-IP anzeigen
tailscale ip -4
# Status aller verbundenen Geräte
tailscale status
# Detaillierter Netzwerk-Check
tailscale netcheckDu solltest eine IP im Bereich 100.x.y.z sehen — das ist deine stabile Tailscale-Adresse. Sie ändert sich nie, egal wo du bist.
✅ Geschafft! Dein Debian-Server ist jetzt in deinem privaten Tailscale-Netzwerk. Kein Port-Forwarding, kein DynDNS, keine Firewall-Regel.
5. Geräte verbinden
Ein VPN mit einem Gerät ist langweilig. Verbinde jetzt deine anderen Geräte:
🐧 Linux (weiterer Server/Desktop)
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up🪟 Windows
- Lade den Tailscale Windows Client herunter
- Installiere und starte die App
- Klicke auf „Log in“ — fertig
🍎 macOS
- Installiere Tailscale aus dem Mac App Store
- Öffne die App in der Menüleiste → „Log in“
📱 iOS & Android
- iOS: App Store
- Android: Google Play oder F-Droid
Nach dem Login erscheinen alle Geräte automatisch in deinem Tailnet. Teste die Verbindung:
# Von einem Gerät das andere anpingen (Tailscale-IP verwenden)
tailscale ping mein-debian-server6. Tailscale SSH — Ohne Port-Forwarding auf Server zugreifen
Einer der größten Vorteile: Du kannst SSH komplett über Tailscale laufen lassen — ohne Port 22 ins Internet zu öffnen.
6.1 — Tailscale SSH aktivieren
Auf deinem Debian-Server:
tailscale up --sshDas war’s. Tailscale startet einen eigenen SSH-Server, der:
- Nur über dein Tailnet erreichbar ist
- Automatisch Zertifikate verwaltet
- Keine SSH-Keys auf dem Client braucht
6.2 — Verbindung testen
Von einem anderen Gerät in deinem Tailnet:
ssh root@mein-debian-serverDabei nutzt du den MagicDNS-Namen (den Hostnamen deines Servers). Kein -p Flag, kein Key-Management.
6.3 — OpenSSH-Port schließen (optional, empfohlen)
Wenn du ausschließlich über Tailscale SSH nutzt, kannst du Port 22 auf der öffentlichen IP dichtmachen:
# Nur noch über Tailscale-Interface lauschen
# In /etc/ssh/sshd_config:
ListenAddress 100.x.y.z
# Oder komplett deaktivieren, wenn du nur Tailscale SSH nutzt
systemctl disable --now ssh⚠️ Vorsicht: Bevor du OpenSSH deaktivierst, stelle sicher, dass Tailscale SSH funktioniert! Sonst sperrst du dich aus. Teste immer erst die Tailscale-Verbindung in einem zweiten Terminal.
7. Exit Nodes — Ganzen Traffic über VPN routen
Ein Exit Node leitet den gesamten Internetverkehr eines Geräts über ein anderes Gerät in deinem Tailnet. Nützlich für:
- 🌍 Im Ausland die IP deines Heimservers nutzen
- 🔒 Öffentliches WLAN absichern
- 🏠 Auf geo-beschränkte Inhalte zugreifen
7.1 — Exit Node einrichten (auf dem Debian-Server)
# IP-Forwarding aktivieren
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
# Als Exit Node anbieten
tailscale up --advertise-exit-node7.2 — Exit Node genehmigen
Gehe in die Tailscale Admin-Konsole:
- Finde deinen Debian-Server in der Geräteliste
- Klicke auf „…“ → „Edit route settings“
- Aktiviere „Use as exit node“
7.3 — Exit Node nutzen (auf dem Client)
# Linux
tailscale up --exit-node=mein-debian-server
# Oder mit der Tailscale-IP
tailscale up --exit-node=100.x.y.zAuf Windows/macOS/Mobile: Öffne die Tailscale-App → Wähle den Exit Node aus dem Dropdown.
# Prüfen, ob der Traffic geroutet wird
curl ifconfig.me
# → Sollte die öffentliche IP deines Debian-Servers anzeigen8. Subnet Router — Lokales Netzwerk freigeben
Mit einem Subnet Router gibst du ein ganzes lokales Netzwerk für dein Tailnet frei — ohne Tailscale auf jedem Gerät installieren zu müssen. Perfekt für:
- 🖨️ Netzwerkdrucker
- 📷 IP-Kameras
- 🏠 Smart-Home-Geräte
- 💾 NAS-Systeme
8.1 — Subnet Router einrichten
# IP-Forwarding (falls nicht schon aktiviert)
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
# Subnetz ankündigen (z.B. 192.168.1.0/24)
tailscale up --advertise-routes=192.168.1.0/24💡 Tipp: Du kannst mehrere Subnetze gleichzeitig ankündigen: --advertise-routes=192.168.1.0/24,10.0.0.0/24
8.2 — Route genehmigen
Wie beim Exit Node: In der Admin-Konsole → Gerät → „Edit route settings“ → Routen aktivieren.
8.3 — Subnet-Routen auf dem Client akzeptieren
# Auf dem Client
tailscale up --accept-routesJetzt kannst du von unterwegs direkt auf 192.168.1.x-Adressen zugreifen, als wärst du zuhause.
9. MagicDNS & Split DNS
9.1 — MagicDNS
MagicDNS gibt jedem Gerät in deinem Tailnet einen DNS-Namen. Statt 100.64.23.42 nutzt du einfach:
ssh root@mein-debian-server
ping laptop-von-max
curl http://homelab:8080MagicDNS ist standardmäßig aktiviert. Prüfe den Status in der Admin-Konsole unter DNS.
Du kannst dort auch den Tailnet-Namen sehen (z. B. tail1a2b3.ts.net). Der vollqualifizierte Name wäre dann mein-debian-server.tail1a2b3.ts.net.
9.2 — Split DNS
Split DNS leitet DNS-Anfragen für bestimmte Domains an einen speziellen DNS-Server weiter. Nützlich, wenn du z. B. interne Firmen-Domains auflösen musst:
- Gehe zu Admin-Konsole → DNS
- Klicke „Add nameserver“ → „Restricted“
- Trage die Domain und den DNS-Server ein, z. B.:
- Domain:
intern.firma.de - Nameserver:
192.168.1.1
- Domain:
Alle Anfragen an *.intern.firma.de gehen dann über den internen DNS-Server — der Rest läuft normal.
10. ACLs & Zugriffssteuerung
Standardmäßig kann jedes Gerät in deinem Tailnet mit jedem anderen kommunizieren. Mit Access Control Lists (ACLs) kontrollierst du, wer wohin darf.
10.1 — ACL-Editor öffnen
Gehe zu Admin-Konsole → Access Controls. Du siehst eine JSON-Datei (oder HuJSON mit Kommentaren).
10.2 — Beispiel-ACLs
{
// Nur Admins dürfen auf Server zugreifen
"acls": [
{
"action": "accept",
"src": ["group:admin"],
"dst": ["tag:server:*"]
},
{
// Alle dürfen DNS und Ping nutzen
"action": "accept",
"src": ["*"],
"dst": ["*:53", "*:icmp"]
}
],
"groups": {
"group:admin": ["user@example.com"]
},
"tagOwners": {
"tag:server": ["group:admin"]
}
}10.3 — Tags vergeben
Tags helfen, Geräte zu kategorisieren:
# Auf dem Server
tailscale up --advertise-tags=tag:server💡 Tipp: Teste ACL-Änderungen immer erst mit dem „Preview“-Button in der Admin-Konsole, bevor du sie speicherst. Ein Fehler kann dich aussperren!
11. Tailscale Funnel & Serve — Services öffentlich machen
11.1 — Tailscale Serve (intern)
Tailscale Serve macht einen lokalen Service für dein Tailnet verfügbar — mit automatischem HTTPS-Zertifikat:
# Lokalen Port 3000 im Tailnet als HTTPS bereitstellen
tailscale serve https / http://localhost:3000Jetzt erreichst du den Service von jedem Tailnet-Gerät unter https://mein-debian-server.tail1a2b3.ts.net.
11.2 — Tailscale Funnel (öffentlich)
Tailscale Funnel geht einen Schritt weiter: Es macht einen Service öffentlich im Internet erreichbar — ohne Port-Forwarding, ohne Reverse Proxy:
# Service öffentlich machen
tailscale funnel https / http://localhost:3000Das erzeugt eine öffentliche URL wie https://mein-debian-server.tail1a2b3.ts.net, die jeder im Internet aufrufen kann.
11.3 — Serve & Funnel verwalten
# Aktive Konfiguration anzeigen
tailscale serve status
# Serve/Funnel beenden
tailscale serve reset⚠️ Wichtig: Funnel muss in den ACLs erlaubt sein. Füge folgende Node-Attribute hinzu:
"nodeAttrs": [
{
"target": ["tag:server"],
"attr": ["funnel"]
}
]12. Zusammenfassung & Checkliste
Hier ist deine Schnellreferenz — alles, was du in diesem Guide eingerichtet hast:
| ✅ | Schritt | Befehl / Aktion |
|---|---|---|
| ☐ | Tailscale installiert | curl -fsSL https://tailscale.com/install.sh | sh |
| ☐ | Daemon läuft | sudo systemctl status tailscaled |
| ☐ | Mit Tailnet verbunden | tailscale up |
| ☐ | Weitere Geräte hinzugefügt | Apps auf allen Plattformen |
| ☐ | Tailscale SSH aktiviert | tailscale up --ssh |
| ☐ | Exit Node konfiguriert | tailscale up --advertise-exit-node |
| ☐ | Subnet Router eingerichtet | tailscale up --advertise-routes=... |
| ☐ | MagicDNS aktiv | Admin-Konsole → DNS |
| ☐ | ACLs konfiguriert | Admin-Konsole → Access Controls |
| ☐ | Funnel/Serve getestet | tailscale serve / funnel |
Alle Flags kombinieren
Du kannst alle Optionen in einem Befehl kombinieren:
tailscale up \
--ssh \
--advertise-exit-node \
--advertise-routes=192.168.1.0/24 \
--advertise-tags=tag:server13. Troubleshooting
Verbindung schlägt fehl
# Netzwerk-Diagnose
tailscale netcheck
# Detaillierte Logs anzeigen
journalctl -u tailscaled -f
# Verbindung zu einem bestimmten Gerät debuggen
tailscale ping --verbose mein-anderes-gerät„Relay“ statt direkter Verbindung
Wenn tailscale status „relay“ zeigt statt einer direkten Verbindung:
- Prüfe, ob UDP-Traffic (Port 41641) erlaubt ist
- Starte
tailscaledneu:sudo systemctl restart tailscaled - Warte 1-2 Minuten — die direkte Verbindung wird oft verzögert aufgebaut
DNS-Probleme
# MagicDNS-Konfiguration prüfen
tailscale dns status
# Resolver prüfen
resolvectl statusExit Node funktioniert nicht
- IP-Forwarding aktiviert? →
sysctl net.ipv4.ip_forward(muss1sein) - Route in der Admin-Konsole genehmigt?
- Firewall blockiert Forwarding? →
iptables -L FORWARD
Tailscale komplett zurücksetzen
tailscale down
tailscale logout
systemctl restart tailscaled
tailscale up14. Nächste Schritte
Du hast jetzt ein voll funktionsfähiges Tailscale-VPN auf Debian 13. Hier sind einige Ideen, wie du weitermachen kannst:
- 🔐 Headscale — Self-hosted Tailscale Coordination Server für maximale Kontrolle (GitHub)
- 🐳 Tailscale im Docker-Container — Services in Containern über Tailscale erreichbar machen
- 🔑 Tailscale + SSH Jump Host — Einen zentralen Einstiegspunkt für alle deine Server
- 📊 Monitoring — Tailscale mit Grafana/Prometheus überwachen
- 🌐 Tailscale als Kubernetes-Ingress — für Cluster-Zugriff ohne LoadBalancer
📚 Weiterführende Links:
Fragen oder Probleme? Schreib einen Kommentar — ich helfe gerne! 🚀
Schreibe einen Kommentar