Im vorigen Abschnitt haben Sie die family Datensatz über SMB, nämlich einen Ordner, auf den nur Computer in Ihrem Heimnetzwerk zugreifen können. Um von überall auf das NAS zugreifen zu können, müssen Sie zunächst eine geroutete IPv4-Adresse mit einem WireGuard-Tunnel bei Taipan Transit bestellen und diesen Tunnel dann auf dem NAS selbst beenden.
Entscheiden Sie, wozu der Tunnel dienen soll
Bei einem privaten Internetanschluss ist es selten möglich, dass die Außenwelt eine Verbindung zum NAS herstellt. Der Router übersetzt die private Adresse des NAS, und viele Anbieter gehen sogar noch einen Schritt weiter und schalten ganze Nachbarschaftsnetze hinter ein Carrier-Grade-NAT, sodass es überhaupt keine öffentliche Adresse gibt, an die ein Port weitergeleitet werden könnte. Warum CGNAT Sie daran hindert, zu Hause einen Server zu betreiben erläutert den Mechanismus im Detail.
Eine über einen Tunnel bereitgestellte IPv4-Adresse umgeht dieses Problem. Taipan Transit leitet die bestellte Adresse über einen Tunnel weiter, den der NAS selbst eröffnet, sodass die öffentliche Adresse unverändert bleibt, wenn sich die Adresse der Heimverbindung ändert. So erhalten Sie eine öffentliche IP-Adresse für einen Heimserver behandelt dasselbe Thema aus der Perspektive des Käufers.
Wählen Sie aus, was Sie veröffentlichen möchten
Sobald das NAS über eine öffentliche Adresse verfügt, ist jeder Dienst, der auf dieser Adresse lauscht, für das gesamte Internet sichtbar, und der erste Kandidat, der ausgeschlossen werden muss, ist die SMB-Freigabe aus dem vorherigen Abschnitt. Die US-amerikanische Cybersicherheitsbehörde CISA empfiehlt, alle SMB-Versionen an der Netzwerkgrenze zu blockieren – das heißt TCP-Port 445 sowie TCP-Port 139 und die UDP-Ports 137 und 138 – und erläutert die Gründe dafür in seine Best Practices für die SMB-Sicherheit. Die Dateifreigabe über SMB findet ausschließlich in Ihrem Heimnetzwerk statt.
Was über den Tunnel hinausgeht, ist eine Webanwendung mit eigenem Login und einem HTTPS-Zertifikat. Der TrueNAS-App-Katalog bietet mehrere davon an, und in diesem Abschnitt wird Nextcloud verwendet, ein Dateifreigabeserver mit einer Weboberfläche und Smartphone-Apps. Die gleichen Schritte gelten für jede App, deren Installationsformular ein Feld für den Port und ein Feld für das Zertifikat enthält.
Bevor Sie einen Dienst veröffentlichen: Stellen Sie sicher, dass er ein Passwort abfragt und über HTTPS bereitgestellt wird. Überprüfen Sie dazu im Installationsformular der App, ob ein Feld für das Administratorpasswort und ein Feld für die Zertifikats-ID vorhanden sind, und lassen Sie die App deinstalliert, falls eines der beiden Felder fehlt.
Einen WireGuard-Tunnel bestellen
Die Bestellung erfolgt über das Taipan-Panel. Wählt man einen Tunneltyp aus der Dienstliste aus, öffnet sich der produktbezogene Konfigurationsbildschirm, der bei GRE, IPsec und WireGuard identisch aufgebaut ist: ein Laufzeit, die Anzahl der IPv4-Adressen, eine Datenverkehrsstufe und ein optionaler Gutschein.
Eine IPv4-Adresse reicht für ein NAS aus, das eine einzige App bereitstellt, und weitere Adressen können später demselben Tunnel hinzugefügt werden. WireGuard ist die empfohlene Tunnelart für eine Heimverbindung, da ein Peer seine Identität mit einem Schlüsselpaar nachweist und auch nach einer Änderung der Heimadresse weiter funktioniert, während GRE eine feste Endpunktadresse benötigt. Leitfaden zur Hosting-Plattform vergleicht die drei Tunneltypen genauer und die Seite „WireGuard-Tunnel“ listet auf, was die einzelnen Tarife beinhalten.
Nach Abschluss der Bestellung werden im Fenster die weitergeleitete Adresse, der WireGuard-Endpunkt, mit dem eine Verbindung hergestellt werden soll, der öffentliche Schlüssel von Taipan Transit sowie der UDP-Port angezeigt. In den Beispielen in diesem Abschnitt werden Adressen aus dem in der Dokumentation angegebenen Bereich 203.0.113.0/24 verwendet. Ersetzen Sie diese daher durch die Werte aus Ihrer eigenen Bestellung:
endpoint: 203.0.113.9
routed: 203.0.113.17
Wenn die Bestellung bestätigt wird, der Tunnel jedoch kurzzeitig den Status „ausstehend“ anzeigt, ist das normal. Der Router, der den Endpunkt verwaltet, richtet diesen nach seinem eigenen Zeitplan ein. Warten Sie daher einen Moment, bevor Sie den Test durchführen.
Die Admin-Dienste auf das Heimnetzwerk beschränken
Dieser Schritt erfolgt bewusst vor dem Tunnel. Sobald die weitergeleitete Adresse auf dem NAS erscheint, beginnen alle Dienste, die auf allen Adressen lauschen, auch auf dieser zu antworten, und das NAS verfügt über zwei davon: die Weboberfläche und – sobald Sie eine Freigabe erstellt haben – den SMB-Dienst.
Schützt die Firewall des Routers das NAS nicht bereits?
Er schützt den Datenverkehr, der über den Router läuft. Der Tunnel-Datenverkehr kommt über eine separate Netzwerkschnittstelle des NAS selbst an, sodass der Heimrouter ihn nie sieht und nicht filtern kann. Das NAS muss selbst entscheiden, auf welche Adressen seine Dienste antworten.
Die Webschnittstelle an die Startseite binden
Öffnen Sie „System“, dann „Allgemeine Einstellungen“ und wählen Sie auf der GUI-Karte „Einstellungen“ aus. Im Feld „IPv4-Adresse der Webschnittstelle“ steht 0.0.0.0, d. h. jede Adresse. Wählen Sie stattdessen die Heimadresse des NAS aus der Liste aus – dieselbe, die Sie in Ihrem Router reserviert haben.
Bevor Sie die GUI-Einstellungen speichern: Vergewissern Sie sich, dass die von Ihnen gewählte Adresse mit der übereinstimmt, die Ihr Browser gerade verwendet. Vergleichen Sie dazu die Adresse in der Adressleiste des Browsers mit der in der NAS-Konsole angezeigten Adresse, da ein falscher Wert dazu führt, dass Sie keinen Zugriff mehr auf die Weboberfläche haben, bis Sie den Fehler über das Konsolenmenü beheben.
Das IPv6-Feld kann unverändert bleiben, da der Tunnel ausschließlich IPv4-Daten überträgt. Für eine zweite Ebene öffnen Sie „System“, dann „Erweiterte Einstellungen“ und suchen Sie unter „Zugriff“ nach der Karte „Zulässige IP-Adressen“. Diese beschränkt den Zugriff auf die Weboberfläche auf die von Ihnen aufgeführten Adressen oder Subnetze. Wenn Sie also dort Ihr Heim-Subnetz hinzufügen, werden alle anderen Quellen ausgeschlossen, selbst wenn sich die Bind-Einstellung eines Tages ändern sollte.
SMB an die Heimatadresse binden
Öffnen Sie „System“, dann „Dienste“ und klicken Sie auf das Stiftsymbol in der Zeile „SMB“. Wählen Sie „Erweiterte Einstellungen“ und scrollen Sie nach unten. Die Liste „IP-Adressen binden“ ist leer, wodurch SMB auf allen Adressen empfangsbereit ist. Fügen Sie die Heimatadresse des NAS hinzu und speichern Sie die Einstellungen.
Auf der Seite „Dienste“ werden außerdem alle anderen Dienste angezeigt, die das NAS ausführen kann. SSH bleibt deaktiviert, bis Sie es starten, und sollte auch deaktiviert bleiben, solange Sie es nicht nutzen, da ein Anmeldedienst unter einer öffentlichen IP-Adresse innerhalb weniger Stunden zu Erratungsversuchen führt.
WireGuard auf TrueNAS einrichten
TrueNAS basiert auf Debian Linux und enthält dieselben WireGuard-Tools wie jeder andere Linux-Server: wg und wg-quick. Es muss keine App installiert und kein Plugin aktiviert werden. Alles, was benötigt wird, ist eine Konfigurationsdatei, ein Schlüsselpaar und eine Zeile, die den Tunnel bei jedem Systemstart startet.
Bewahre die Dateien im Pool auf
TrueNAS ist eine Appliance: Ihr Root-Verzeichnis und /usr Dateisysteme werden schreibgeschützt eingebunden, und die Middleware generiert die Dateien unter /etc aus der eigenen Konfiguration. Der Pool ist der Ort für Ihre eigenen Dateien, da er Updates und Neustarts übersteht. Erstellen Sie einen Datensatz mit dem Namen wireguard Wählen Sie die Voreinstellung „Generic“ aus, öffnen Sie anschließend „System“ und dann „Shell“ und generieren Sie dort das Schlüsselpaar:
sudo -i
cd /mnt/tank/wireguard
chmod 700 .
umask 077
wg genkey | tee taipan.key | wg pubkey > taipan.pub
cat taipan.pub
Der letzte Befehl gibt die öffentliche Hälfte aus, den einzigen Teil, der das NAS verlassen muss:
W8Eea2e7z1MWIrRznz+0i7PpBQ77Xs+hFWYIzDlnrEA=
Das Panel fragt diesen öffentlichen Schlüssel ab, wenn Sie Ihre Seite des Tunnels registrieren. Der private Schlüssel in taipan.key wird niemals irgendwo eingefügt, per E-Mail versendet oder übermittelt – genauso wie ein privater SSH-Schlüssel auf Ihrem eigenen Rechner verbleibt.
Konfiguration erstellen
Erstellen Sie mit der in Ihrer Bestellung angegebenen Routing-Adresse und dem Endpunkt sowie dem öffentlichen Schlüssel von Taipan Transit aus dem Panel /mnt/tank/wireguard/wg0.conf mit nano wg0.conf und fügen Sie Folgendes ein:
[Interface]
PrivateKey = <contents of taipan.key>
Address = 100.64.0.2/32
Table = off
PostUp = ip address add 203.0.113.17/32 dev lo
PostUp = ip rule add from 203.0.113.17/32 table 20 priority 100
PostUp = ip route add default dev %i table 20
PreDown = ip rule del from 203.0.113.17/32 table 20 priority 100
PreDown = ip address del 203.0.113.17/32 dev lo
[Peer]
PublicKey = <Taipan's public key, from the panel>
Endpoint = 203.0.113.9:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Table = off Haltestellen wg-quick damit die Standardroute des NAS nicht überschrieben wird, die für alle anderen Verbindungen weiterhin über den Heimrouter führen muss. Der zweite PostUp line erstellt eine separate Routing-Tabelle, die ausschließlich für den Datenverkehr verwendet wird, der von der gerouteten Adresse gesendet wird; daher wird eine Antwort von 203.0.113.17 wird zurück durch den Tunnel geleitet, während der normale Datenverkehr des NAS davon unberührt bleibt.
Warum wird die geroutete Adresse an die Loopback-Schnittstelle weitergeleitet?
Weil das NAS die Adresse als seine eigene behandeln muss. Die Tunnelschnittstelle überträgt lediglich Pakete, und eine Adresse auf lo bewirkt, dass das NAS Pakete für diesen Dienst entgegennimmt und von dort aus antwortet, so wie es ein direkt auf dem Gateway laufender Dienst tun würde. Das Address Zeilenverwendung 100.64.0.2 aus dem Bereich 100.64.0.0/10, einem gemeinsam genutzten Adressbereich, der im öffentlichen Internet nie auftaucht, sodass die Tunnelschnittstelle selbst keine öffentliche Adresse beansprucht.
Die wg-quick Der Befehl liest diese Datei ein, sodass Sie den Tunnel manuell starten können, um ihn zu testen:
wg-quick up /mnt/tank/wireguard/wg0.conf
wg show
Ein aktiver Tunnel enthält den Peer, den Endpunkt und einen aktuellen Handshake, der einige Sekunden alt ist. Ein Peer ohne Handshake bedeutet, dass die Pakete Taipan Transit nicht erreichen. Vergleichen Sie daher zunächst den Endpunkt, die öffentlichen Schlüssel auf beiden Seiten und den UDP-Port, bevor Sie andere Ursachen prüfen. Sobald der Handshake angezeigt wird, ip route get 1.1.1.1 from 203.0.113.17 sollte mit folgendem antworten: dev wg0, was bestätigt, dass die Antworten durch den Tunnel gesendet werden.
Den Tunnel bei jedem Start hochfahren
Ein manuell gestarteter Tunnel verschwindet beim nächsten Neustart, und TrueNAS bietet einen Bereich für Befehle, die beim Systemstart ausgeführt werden sollen: „Init/Shutdown Scripts“. Öffnen Sie „System“, dann „Erweiterte Einstellungen“ und wählen Sie auf der Registerkarte „Init/Shutdown-Skripte“ die Option „Hinzufügen“. TrueNAS zeigt zunächst eine Warnung an, dass das Ändern der erweiterten Einstellungen gefährlich sein kann, was durchaus berechtigt ist, da ein falscher Befehl hier bei jedem Systemstart als Root ausgeführt wird.
Wählen Sie „Typ“ und „Befehl“ aus, fügen Sie den Text ein wg-quick up /mnt/tank/wireguard/wg0.conf, und legen Sie „When to Post Init“ so fest, dass der Befehl ausgeführt wird, sobald der Pool verfügbar ist. Die Standard-Zeitüberschreitung von 10 Sekunden ist völlig ausreichend.
Warum ein Startskript und keine Zeile in einer Systemnetzwerkdatei?
Da TrueNAS seine eigenen Systemdateien verwaltet und diese neu schreibt. Die Skriptliste ist Teil der gespeicherten TrueNAS-Konfiguration, sodass sie nach einem Update wiederhergestellt wird und beim Export der Konfiguration mitübertragen wird.
Eine App mit HTTPS veröffentlichen
Der Tunnel ist eingerichtet und der NAS reagiert auf seine öffentliche Adresse. Eine Web-App benötigt ein Zertifikat, damit Browser ihr vertrauen, und ein Zertifikat benötigt einen Namen. Daher ist der erste Schritt die Einrichtung eines Domainnamens, der auf die geroutete Adresse verweist.
Zertifikat erhalten
Erstellen Sie bei Ihrem Domain-Anbieter einen DNS-Eintrag, der auf einen Namen wie beispielsweise nas.example.com unter der weitergeleiteten Adresse. Beantragen Sie anschließend in drei Schritten ein Let's Encrypt-Zertifikat bei TrueNAS – alles unter „Anmeldedaten“ und dann „Zertifikate“:
- Fügen Sie einen ACME-DNS-Authentifikator für Ihren DNS-Anbieter hinzu. In der Dokumentation werden Cloudflare, DigitalOcean, Route53 und OVHcloud aufgeführt; die API-Anmeldedaten des Anbieters geben Sie in diesem Formular ein.
- Fügen Sie eine Zertifikatssignierungsanforderung hinzu, bei der Ihr Domainname als „Common Name“ angegeben ist.
- Verwenden Sie das Symbol neben dieser Anfrage, um das ACME-Zertifikat zu erstellen, und wählen Sie den Authentifikator für die Domain aus.
Let’s Encrypt überprüft die Eigentumsrechte anhand eines temporären DNS-Eintrags, sodass die Weboberfläche nicht erreichbar sein muss, damit das Zertifikat ausgestellt werden kann. Die TrueNAS-Dokumentation zu Let's Encrypt-Zertifikaten geht jede Form einzeln durch.
Installieren Sie die App unter der angegebenen Adresse
Öffnen Sie „Apps“, dann „Entdecken“ und suchen Sie nach Nextcloud. Wenn Sie „Apps“ zum ersten Mal verwenden, fordert TrueNAS Sie auf, einen Pool dafür auszuwählen, und zeigt eine Warnung an, dass Anwendungen von Drittanbietern Risiken wie Datenverlust oder Systemstörungen mit sich bringen können. Lesen Sie diese durch und stimmen Sie zu. Wählen Sie anschließend „Installieren“ und füllen Sie den Abschnitt „Nextcloud-Konfiguration“ aus: einen Admin-Benutzer, ein langes Admin-Passwort und im Feld „Host“ Ihren DNS-Namen und Port, zum Beispiel nas.example.com:30027. Die App fügt diesen Wert ihrer Liste vertrauenswürdiger Domains hinzu.
Lassen Sie unter „Netzwerkkonfiguration“ den Port-Bind-Modus auf „Port auf dem Host für externen Zugriff veröffentlichen“ eingestellt, behalten Sie den Standardport 30027 bei und wählen Sie unter „Zertifikats-ID“ Ihr neues Zertifikat aus. Sobald ein Zertifikat ausgewählt ist, stellt die App HTTPS auf diesem Port bereit, sodass Besucher eine Adresse wie https://nas.example.com:30027. „Host-IPs“ legt fest, auf welche Host-Adressen der Port reagiert; eine leere Liste bedeutet, dass alle Adressen berücksichtigt werden, sowohl die lokale Adresse als auch geroutete Adressen.
Jede App, die Sie später installieren, hört auf allen Adressen ab, sofern Sie dies nicht einschränken. Für Apps, die privat bleiben sollen, fügen Sie die Heimadresse des NAS zu den Host-IPs hinzu; die App reagiert dann nicht mehr auf die weitergeleitete Adresse. Die Dokumentation zu den TrueNAS-Apps beschreibt das Fachgebiet.
Verbindung von außen testen
Tests von zu Hause aus sind wenig aussagekräftig, da Ihr eigener Router die meisten Anfragen lokal beantwortet. Schalten Sie Ihr Smartphone von WLAN auf mobile Daten um, wodurch es in ein anderes Netzwerk wechselt, und führen Sie drei Tests durch.
- Öffnen
https://nas.example.com:30027. Der Browser sollte ein Vorhängeschloss und die Nextcloud-Anmeldeseite anzeigen. Falls eine Warnung bezüglich des Zertifikats erscheint, überprüfen Sie bitte noch einmal das Feld „Zertifikats-ID“ und den DNS-Eintrag. - Öffnen
https://203.0.113.17, die reine weitergeleitete Adresse auf dem Standard-HTTPS-Port. Es sollte keine Antwort kommen, da die Weboberfläche ausschließlich auf die Heimatadresse lauscht. - Versuche es
smb://203.0.113.17/familyüber die Datei-App des Telefons. Die Verbindung sollte fehlschlagen – genau das ist das gewünschte Ergebnis.
Wenn die erste Überprüfung fehlschlägt und der Tunnel-Handshake noch aktuell ist, führe Folgendes aus: ip rule auf dem NAS und überprüfen Sie, ob die Regel für die weitergeleitete Adresse vorhanden ist. Eine fehlende Regel bedeutet PostUp wurde nicht ausgeführt, und wenn man den Tunnel manuell startet, wird der Fehler angezeigt.
Zusammenfassend lässt sich sagen
- Ein über einen WireGuard-Tunnel weitergeleitetes IPv4-Adressen zuweist dem NAS eine eigene öffentliche Adresse.
- Die Webschnittstelle und SMB werden an die Heimadresse gebunden, bevor der Tunnel aufgebaut wird.
- Die Konfiguration und die Schlüssel befinden sich im Pool, und ein Post-Init-Skript startet den Tunnel.
- Im Internet wird lediglich eine App mit einem Login und einem Zertifikat veröffentlicht.
Im nächsten Abschnitt planen Sie Snapshots und Backups für den Pool und richten Warnmeldungen ein, damit das NAS Sie benachrichtigt, wenn ein Fehler auftritt.