Dans la section précédente, vous avez partagé le family un ensemble de données via SMB, à savoir un dossier que seuls les ordinateurs de votre réseau domestique peuvent ouvrir. Pour accéder au NAS depuis n'importe où, vous devrez d'abord commander une adresse IPv4 routée avec un tunnel WireGuard auprès de Taipan Transit, puis faire aboutir ce tunnel sur le NAS lui-même.
Déterminez à quoi servira le tunnel
Une connexion domestique permet rarement au monde extérieur d'établir une communication avec le NAS. Le routeur traduit l'adresse privée du NAS, et de nombreux fournisseurs vont même plus loin en plaçant des quartiers entiers derrière un NAT de niveau opérateur ; il n'y a donc aucune adresse publique vers laquelle rediriger un port. Pourquoi le CGNAT vous empêche d'héberger un serveur chez vous explique le mécanisme en détail.
Une adresse IPv4 attribuée via un tunnel permet d'éviter ce problème. Taipan Transit achemine l'adresse attribuée via un tunnel que le NAS ouvre lui-même, de sorte que l'adresse publique reste la même lorsque l'adresse de la connexion domestique change. Comment obtenir une adresse IP publique pour un serveur domestique aborde le même sujet du point de vue de l'acheteur.
Choisissez ce que vous souhaitez publier
Dès lors que le NAS dispose d’une adresse publique, tous les services qui y sont à l’écoute sont visibles depuis l’ensemble d’Internet, et le premier élément à exclure est le partage SMB évoqué dans la section précédente. La CISA, l'agence américaine chargée de la cybersécurité, recommande de bloquer toutes les versions du protocole SMB à la périphérie du réseau, c'est-à-dire le port TCP 445 ainsi que le port TCP 139 et les ports UDP 137 et 138, et explique pourquoi dans ses bonnes pratiques en matière de sécurité pour les PME. Le partage de fichiers via SMB reste limité à votre réseau domestique.
Ce qui est déployé via le tunnel, c'est une application web dotée de son propre système de connexion et d'un certificat HTTPS. Le catalogue d'applications TrueNAS en propose plusieurs ; dans cette section, nous utilisons Nextcloud, un serveur de partage de fichiers doté d'une interface web et d'applications mobiles. Les mêmes étapes s'appliquent à toute application dont le formulaire d'installation comporte un champ « port » et un champ « certificat ».
Avant de publier un service : assurez-vous qu'il demande un mot de passe et qu'il utilise le protocole HTTPS. Pour vérifier cela, consultez le formulaire d'installation de l'application afin de vous assurer qu'il comporte bien un champ « Mot de passe administrateur » et un champ « ID du certificat » ; si l'un ou l'autre de ces champs est manquant, ne procédez pas à l'installation de l'application.
Commander un tunnel WireGuard
La commande s'effectue dans le panneau Taipan. Lorsque vous sélectionnez un type de tunnel dans la liste des services, l'écran de configuration propre à ce produit s'ouvre. La présentation est identique pour GRE, IPsec et WireGuard : un terme, le nombre d'adresses IPv4, un niveau de trafic et un coupon facultatif.
Une seule adresse IPv4 suffit pour un NAS qui héberge une seule application ; d'autres adresses pourront rejoindre le même tunnel ultérieurement. WireGuard est le type de tunnel à privilégier pour une connexion domestique, car un pair prouve son identité à l'aide d'une paire de clés et continue de fonctionner même si l'adresse du domicile change, alors que GRE nécessite une adresse de point de terminaison fixe. Guide des plateformes d'hébergement compare plus en détail les trois types de tunnels, et la page consacrée aux tunnels WireGuard présente le contenu de chaque formule.
Une fois la commande terminée, le panneau affiche l'adresse acheminée, le point de terminaison WireGuard auquel se connecter, la clé publique de Taipan Transit et le port UDP. Les exemples de cette section utilisent des adresses issues de la plage 203.0.113.0/24 indiquée dans la documentation ; remplacez-les donc par les valeurs de votre propre commande :
endpoint: 203.0.113.9
routed: 203.0.113.17
Si la commande est confirmée mais que le tunnel affiche brièvement le statut « en attente », cela est normal. Le routeur chargé du point d'extrémité procède à sa configuration selon son propre calendrier ; veuillez donc patienter quelques instants avant de procéder à un test.
Limiter les services d'administration au réseau domestique
Cette étape précède délibérément la mise en place du tunnel. Lorsque l'adresse routée apparaît sur le NAS, tous les services qui écoutent sur toutes les adresses commencent également à y répondre, et le NAS en compte deux : l'interface Web et, une fois que vous avez créé un partage, le service SMB.
Le pare-feu du routeur ne protège-t-il pas déjà le NAS ?
Il protège le trafic transitant par le routeur. Le trafic tunnel arrive sur une interface réseau distincte du NAS lui-même ; ainsi, le routeur domestique ne le détecte jamais et ne peut donc pas le filtrer. C'est au NAS de déterminer lui-même sur quelles adresses ses services doivent répondre.
Associer l'interface Web à l'adresse d'accueil
Ouvrez « Système », puis « Paramètres généraux », et sélectionnez « Paramètres » dans l'onglet « Interface graphique ». Le champ « Adresse IPv4 de l'interface Web » indique 0.0.0.0, c'est-à-dire toutes les adresses. Choisissez plutôt dans la liste l'adresse principale du NAS, celle-là même que vous avez réservée dans votre routeur.
Avant d'enregistrer les paramètres de l'interface graphique : assurez-vous que l'adresse que vous choisissez est bien celle que votre navigateur utilise actuellement. Pour vérifier cela, comparez-la avec l'adresse affichée dans la barre d'adresse du navigateur et celle indiquée par la console du NAS, car une valeur erronée vous empêchera d'accéder à l'interface Web jusqu'à ce que vous la corrigiez depuis le menu de la console.
Le champ IPv6 peut rester tel quel, puisque le tunnel ne prend en charge que le protocole IPv4. Pour la deuxième couche, ouvrez « Système », puis « Paramètres avancés », et recherchez la fiche « Adresses IP autorisées » dans la section « Accès ». Elle limite l'accès à l'interface Web aux adresses ou sous-réseaux que vous y indiquez ; ainsi, en y ajoutant le sous-réseau de votre domicile, vous bloquerez toute autre source d'accès, même si le paramètre de liaison venait à changer un jour.
Lier SMB à l'adresse personnelle
Ouvrez « Système », puis « Services », et cliquez sur l'icône en forme de crayon dans la ligne « SMB ». Sélectionnez « Paramètres avancés » et faites défiler jusqu'en bas. La liste « Adresses IP liées » est vide, ce qui fait que le service SMB écoute sur toutes les adresses. Ajoutez l'adresse locale du NAS, puis enregistrez.
La page « Services » affiche également tous les autres services que le NAS peut exécuter. Le service SSH reste désactivé jusqu'à ce que vous le lanciez, et il est préférable de le laisser désactivé sauf si vous l'utilisez, car un service de connexion accessible depuis une adresse publique attire des tentatives de devinettes en l'espace de quelques heures.
Configurer WireGuard sur TrueNAS
TrueNAS repose sur Debian Linux et intègre les mêmes outils WireGuard que n'importe quel autre serveur Linux : wg et wg-quick. Il n'y a ni application à installer ni plugin à activer. Tout repose sur un fichier de configuration, une paire de clés et une ligne de code qui lance le tunnel à chaque démarrage.
Conserver les fichiers dans le pool
TrueNAS est un appareil : son répertoire racine et /usr Les systèmes de fichiers sont montés en lecture seule, et le middleware régénère les fichiers sous /etc à partir de sa propre configuration. Le pool est l'emplacement idéal pour vos propres fichiers, car il est conservé après les mises à jour et les redémarrages. Créez un ensemble de données nommé wireguard avec le préréglage « Generic », puis ouvrez « Système », puis « Shell », et générez la paire de clés à l'intérieur :
sudo -i
cd /mnt/tank/wireguard
chmod 700 .
umask 077
wg genkey | tee taipan.key | wg pubkey > taipan.pub
cat taipan.pub
La dernière commande affiche la partie publique, la seule qui doit quitter le NAS :
W8Eea2e7z1MWIrRznz+0i7PpBQ77Xs+hFWYIzDlnrEA=
Le panneau vous demande cette clé publique lorsque vous enregistrez votre côté du tunnel. La clé privée se trouve dans taipan.key n'est jamais copiée-collée, envoyée par e-mail ou transmise où que ce soit, tout comme une clé privée SSH reste sur votre propre ordinateur.
Rédiger la configuration
À l'aide de l'adresse de routage et du point de terminaison indiqués dans votre commande, ainsi que de la clé publique de Taipan Transit disponible dans le panneau de configuration, créez /mnt/tank/wireguard/wg0.conf avec nano wg0.conf puis collez ce qui suit :
[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 arrêts wg-quick d'empêcher le remplacement de la route par défaut du NAS, qui doit toujours passer par le routeur domestique pour tout le reste. La deuxième PostUp La ligne crée une table de routage distincte que seul le trafic provenant de l'adresse routée utilise, de sorte qu'une réponse provenant de 203.0.113.17 repasse par le tunnel, tandis que le trafic normal du NAS n'est pas affecté.
Pourquoi l'adresse routée est-elle transmise à l'interface de bouclage ?
En effet, le NAS doit considérer cette adresse comme la sienne. L'interface du tunnel se contente de transporter les paquets, et une adresse sur lo permet au NAS d'accepter les paquets qui lui sont destinés et d'y répondre, comme le ferait un service s'exécutant directement sur la passerelle. Le Address utilisations de la ligne 100.64.0.2 provenant de 100.64.0.0/10, une plage d'adresses partagées qui n'apparaît jamais sur l'Internet public ; l'interface du tunnel ne consomme donc aucune adresse publique.
Le wg-quick La commande lit ce fichier ; vous pouvez donc lancer le tunnel manuellement pour le tester :
wg-quick up /mnt/tank/wireguard/wg0.conf
wg show
Un tunnel actif affiche le nom du pair, le point de terminaison et la dernière poignée de main datant de quelques secondes. Si aucun pair n'affiche de poignée de main, cela signifie que les paquets n'atteignent pas Taipan Transit ; il convient donc de vérifier le point de terminaison, les clés publiques des deux côtés et le port UDP avant de chercher ailleurs. Dès que la poignée de main s'affiche, ip route get 1.1.1.1 from 203.0.113.17 devrait répondre par dev wg0, ce qui confirme que les réponses sortent par le tunnel.
Faites remonter le tunnel à chaque démarrage
Un tunnel lancé manuellement disparaît au redémarrage suivant, et TrueNAS dispose d'un emplacement dédié aux commandes devant s'exécuter au démarrage : « Init/Shutdown Scripts ». Ouvrez « Système », puis « Paramètres avancés », et sélectionnez « Ajouter » dans l'onglet « Scripts de démarrage/arrêt ». TrueNAS affiche d'abord un avertissement indiquant que la modification des paramètres avancés peut être dangereuse, ce qui est tout à fait justifié, car une commande erronée saisie ici s'exécutera en tant que root à chaque démarrage.
Sélectionnez « Commande » dans le menu « Type », puis collez wg-quick up /mnt/tank/wireguard/wg0.conf, et définissez le paramètre « When to Post Init » afin que la commande s'exécute une fois que le pool est disponible. Le délai d'attente par défaut de 10 secondes est largement suffisant.
Pourquoi un script de démarrage et non une ligne dans un fichier de réseau du système ?
En effet, TrueNAS gère ses propres fichiers système et les réécrit. La liste des scripts fait partie de la configuration enregistrée de TrueNAS ; elle est donc restaurée après une mise à jour et est incluse dans l'exportation de la configuration.
Publier une application avec HTTPS
Le tunnel est en place et le NAS répond sur son adresse publique. Une application web a besoin d'un certificat pour que les navigateurs lui accordent leur confiance, et un certificat a besoin d'un nom ; la première chose à faire est donc d'obtenir un nom de domaine qui pointe vers l'adresse routée.
Obtenir un certificat
Créez un enregistrement DNS chez votre fournisseur de nom de domaine afin qu'il pointe vers un nom tel que nas.example.com à l'adresse configurée. Demandez ensuite un certificat Let's Encrypt via TrueNAS en trois étapes, toutes accessibles sous « Identifiants », puis « Certificats » :
- Ajoutez un authentificateur DNS ACME pour votre fournisseur DNS. La documentation mentionne Cloudflare, DigitalOcean, Route53 et OVHcloud ; les identifiants API du fournisseur doivent être renseignés sous cette forme.
- Ajoutez une demande de signature de certificat en indiquant votre nom de domaine comme « nom commun ».
- Utilisez l'icône située à côté de cette demande pour créer le certificat ACME, puis sélectionnez l'authentificateur correspondant au domaine.
Let's Encrypt vérifie la propriété en demandant un enregistrement DNS temporaire ; ainsi, l'interface web n'a pas besoin d'être accessible pour que le certificat soit délivré. Le Documentation TrueNAS relative aux certificats Let's Encrypt passe en revue chaque formulaire.
Installez l'application à l'adresse indiquée
Ouvrez « Apps », puis « Discover », et recherchez Nextcloud. La première fois que vous utilisez « Apps », TrueNAS vous demande de choisir un pool pour ces applications et affiche un avertissement indiquant que les applications tierces peuvent présenter des risques tels que la perte de données ou des perturbations du système. Lisez-le et acceptez. Sélectionnez ensuite « Installer » et remplissez la section « Configuration de Nextcloud » : un utilisateur administrateur, un mot de passe administrateur long, ainsi que le champ « Hôte » avec votre nom DNS et votre port, par exemple nas.example.com:30027. L'application ajoute cette valeur à sa liste de domaines de confiance.
Dans « Configuration réseau », laissez le « Mode de liaison du port » réglé sur « Publier le port sur l'hôte pour l'accès externe », conservez le port par défaut 30027 et sélectionnez votre nouveau certificat dans le champ « ID du certificat ». Une fois le certificat sélectionné, l'application prend en charge le protocole HTTPS sur ce port ; les visiteurs utilisent donc une adresse du type https://nas.example.com:30027. Le paramètre « Host IPs » détermine les adresses hôtes sur lesquelles le port est à l'écoute ; une liste vide signifie « toutes », qu'il s'agisse de l'adresse locale ou d'adresses routées.
Chaque application que vous installez par la suite écoute sur toutes les adresses, sauf si vous lui imposez des restrictions. Pour les applications qui doivent rester privées, ajoutez l'adresse locale du NAS à la liste des « IP hôtes » : l'application cessera alors de répondre sur l'adresse routée. La documentation des applications TrueNAS décrit ce domaine.
Tester la connexion depuis l'extérieur
Effectuer des tests depuis chez vous n'est pas très révélateur, car c'est votre propre routeur qui répond à la plupart des requêtes au niveau local. Passez votre téléphone du Wi-Fi aux données mobiles, ce qui le connectera à un autre réseau, puis effectuez trois tests.
- Ouvrir
https://nas.example.com:30027. Le navigateur devrait afficher un cadenas et la page de connexion à Nextcloud. S'il affiche un message d'avertissement concernant le certificat, vérifiez à nouveau le champ « ID du certificat » et l'enregistrement DNS. - Ouvrir
https://203.0.113.17, l'adresse redirigée sans rien d'autre sur le port HTTPS standard. Rien ne devrait répondre, car l'interface Web n'écoute que sur l'adresse principale. - Essayez
smb://203.0.113.17/familyà partir de l'application « Fichiers » du téléphone. La connexion devrait échouer, ce qui correspond au résultat souhaité.
Si la première vérification échoue et que la négociation du tunnel est récente, exécutez ip rule sur le NAS et vérifiez que la règle correspondant à l'adresse routée est bien présente. L'absence d'une règle signifie que PostUp ne s'est pas exécuté, et le lancement manuel du tunnel fait apparaître l'erreur.
En résumé
- Une adresse IPv4 acheminée via un tunnel WireGuard attribue au NAS sa propre adresse publique.
- L'interface Web et le protocole SMB sont associés à l'adresse du domicile avant la mise en place du tunnel.
- La configuration et les clés sont stockées sur le pool, et un script « Post Init » lance le tunnel.
- La seule chose publiée sur Internet est une application dotée d'un identifiant et d'un certificat.
Dans la section suivante, vous allez planifier des instantanés et des sauvegardes pour le pool, puis configurer des alertes afin que le NAS vous prévienne en cas de panne.