Backup 4G pour accéder à son LAN en cas de coupure Internet

Aujourd’hui de plus en plus de foyers sont raccordés à la fibre plus rapide et plus fiable que l’ADSL. Mais paradoxalement les coupures d’accès à Internet n’ont pas disparu pour autant (merci les plats de spaghettis dans les boitiers fibre).
Avec une surveillance extérieure (soit clé en main comme DownNotifier.com, soit une solution DIY avec par exemple uptime-kuma) il est possible de détecter une perte des services hébergés « à la maison ». Mais difficile alors de savoir s’il s’agit d’une perte d’accès Internet ou d’une coupure électrique.
Parfois il est possible de cumuler une seconde connexion (ligne ADSL voire connexion câble) mais cela à un coût significatif pour un besoin parfois limité.
Il existe toutefois une possibilité simple de maintenir un lien avec son LAN en passant par un backup 4G. Et ce pour quelques euros par mois (selon les promos sur les forfaits) : équiper un SBC (ici un raspberry) d’une clé 4G.

Le système final en action, un poil lumineux mais bien pratique

Mise en place de la clé 4G pour le lien backup

Choix d’une clé 4G

Pour ma part je suis parti sur un modèle noname trouvé sur Aliexpress.

Elle fait modem 4G et hotspot Wifi. Elle semble basée sur Android (bien que non visible) et peut-être utilisée directement en USB.

Selon vos besoin (couverture, opérateur retenu, …) il faut bien vérifier la compatibilité avec les bandes 4G européennes (7 pour le 2600, 1 pour le 1800, 26 pour le 800 voire également la 28 pour le 700 si vous retenez Free mobile). Pour du SSH n’importe quel clé 4G devrait avoir assez de débit (chez moi j’obtiens du 5Mb/s environ)

Choix du forfait

Bien sûr il faut un forfait avec de la data mais à priori un forfait avec 2-3 Go est suffisant pour faire du SSH (l’idée ici c’est de garder un lien depuis l’extérieur, pas de fournir une véritable connexion de secours au LAN, bien que théoriquement c’est également possible).

J’ai pour ma part profité d’une promo 3Go à 2€ chez Cdiscount mobile (qui en fait revend du NRJ Mobile, nom qui apparait sur les factures notamment) sur le réseau Bouygues. Les forfaits 5Go à 5€ me semblent être le maximum à ne pas dépasser pour cet usage.

Installation de la clé

Pour la configuration initiale le plus simple est de connecter la clé en USB sur un PC avec un environnement de bureau.
Après un certain pour démarrer, elle fonctionne directement sans pilote aussi bien sur Windows que Linux car elle est vue comme un périphérique RNDIS.

Direction l’IHM Web à l’adresse indiquée sur la clé

On y retrouve plusieurs écrans dont un qu’il faut absolument aller voir : les réglages APN.

Bien sûr ceux-ci sont à adapter à l’opérateur retenu (ici NRJ mobile).

On peut alors la brancher sur notre SBC et après quelques instants une interface réseau usb0 doit apparaître (ip a pour vérifier que c’est le cas).

On peut vérifier que l’on a bien une connectivité par exemple avec curl

curl --interface usb0 http://ipv4.lafibre.info/ip.php

qui doit vous renvoyer l’IP publique de votre opérateur mobile et non celle de votre connexion LAN.

Configuration du client tailscale

Tailscale est un VPN « mesh » c’est à dire que chaque client peut se connecter à n’importe quel autre client directement ou indirectement. Si la connexion n’est pas possible à cause de NAT ou autre, tailscale fournit des passerelles pour pouvoir quand même se connecter au prix d’un débit réduit.

Le gros avantage est qu’une fois installé on pourra se connecter via tailscale à notre raspberry que celle-ci ait accès à Internet via le LAN ou directement via la 4G (et pas besoin d’IP publique vu que Tailscale se débrouille sans).

Le plus simple est de suivre la méthode proposé par Tailscale (https://tailscale.com/download/linux) à savoir ajouter leur dépôt apt (on fait ici l’hypothèse que l’on a déjà un compte Tailscale et qu’on utilise bullseye comme version de Raspberry Pi OS)

sudo apt-get install apt-transport-https
curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bullseye.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg > /dev/null
curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bullseye.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update
sudo apt-get install tailscale

Voila c’est installé, on n’a plus qu’à se connecter

sudo tailscale up

L’appli nous affiche un lien pour se connecter via son navigateur puis c’est bon notre raspberry est accessible depuis n’importe quelle autre machine connectée à notre réseau Tailscale.

Il peut être intéressant de désactiver l’expiration des clés pour cette machine dans la console admin de Tailscale pour éviter de perdre la connexion de celle-ci au réseau tailscale. Par défaut il faut se reloguer périodiquement ce qui peut être bloquant le jour où l’on en a besoin depuis l’extérieur…

Mise à jour auto de tailscale (optionnel)

Si vous utilisez unattended-upgrade pour mettre à jour votre OS il faut ajouter un peu de conf pour que cela mette aussi à jour Tailscale.
Direction le fichier /etc/apt/apt.conf.d/50unattended-upgrades auquel on ajoute

Unattended-Upgrade::Origins-Pattern {
     "origin=Tailscale";
};

Tests

Depuis un autre appareil connecté au même réseau tailscale on peut vérifier que l’on accède bien à notre SBC « backup »

Pour le vérifier il suffit de lancer une commande ping vers l’IP « tailscale » puis déconnecter le port ethernet.

Les pings ne doivent plus aboutir puis après plusieurs dizaines de secondes ils doivent reprendre avec une latence augmentée (signe qu’on passe bien par la 4G).
On peut alors essayer de se connecter en SSH et cela doit fonctionner.

On rebranche le cable Ethernet et on attend que la latence revienne à la normale : c’est bon notre SBC fait bien la bascule entre les deux connexions Internet.

Bonus : détecter les coupures électriques

L’avantage d’une connexion 4G c’est qu’elle peut marcher même en cas de coupure électrique (sans box Internet, sans LAN, …) pour peu que la raspberry soit encore alimentée.

Pour ma part ne parvenant pas à trouver une powerbank qui gère bien les coupures d’alimentation je suis parti sur une solution basée sur l’UPS Plus. Celui-ic est parfaitement adapté aux raspberry 2, 3 et 4 (au format B standard). De plus ils fournissent également des scripts python pour gérer proprement l’extinction en cas de batterie faible.

Et voilà avec tout ça, et tant que votre backup 4G ne tombe pas en même temps que votre connexion principale (privilégiez donc un autre opérateur mobile différent du fixe), vous gardez accès à votre raspberry qui vous servira de point d’accès à tout votre LAN même quand votre fibre se fait la malle…

Lorsque que vous recevez une notification de perte de connexion de votre outil de monitoring vous pouvez maintenant rapidement vérifier s’il s’agit d’une coupure fibre (passage par la 4G mais LAN dispo) ou d’une coupure de courant (le LAN n’est plus connecté).