Configurer l’accès distant à Jeedom avec une Box 4G

14 minutes de lecture

 

Vivre à la campagne a de nombreux avantages : l’air pur, le calme, le chant des oiseaux, l’espace… Il arrive parfois en revanche que ça devienne un véritable casse-tête quand il s’agit d’avoir un accès Haut Débit (je n’ose même pas écrire Très Haut Débit). C’est malheureusement mon cas, mais Bou*gues m’a fournit une alternative : La 4G Box !
En revanche, un accès 4G pour de nombreuses raison n’ouvrent pas les mêmes possibilités qu’un accès ADSL/VDSL ou fibre. Notamment en matière d’adresse IP Publique et de NAT. Avoir un accès distant à son Jeedom avec une box 4G (où tout autre service que vous souhaitez héberger localement) se retrouve être un véritable parcours du combattant. Mais si vous suivez ce guide, ce sera bientôt de l’histoire ancienne !

 

Pourquoi l’accès depuis « l’extérieur » de mon réseau ne fonctionne pas simplement ?

Très bonne question ! Cette problématique est liée au fonctionnement même de la technologie 4G(LTE), 5G, 3G… Mais d’abord, et afin de comprendre complètement la problématique, je dois vous présenter quelques notions sur les réseaux IP. Si vous maitrisez le sujet, vous pouvez passer directement au chapitre suivant !

Une histoire d’économie !

L’IPv4 est l’un des premier protocole IP à avoir été largement déployé. Il s’agit d’une suite de 4 nombres entiers (entre 0 et 255) séparés par des points, comme par exemple : 192.168.1.1 (l’adresse préféré des Box Internet). Ce protocole permet donc de fournir théoriquement un maximum de 4 294 967 296 adresses (mais certaines ne sont pas attribuables) et depuis le 3 février 2011 l’ensemble de ces IP publiques sont saturés.

Il faut donc faire des économies ! Mais comment ?

Deux points nous concernent ici :

  • Les plans d’adressages privés
  • Le NAT / PAT
  • Le CGNAT de votre opérateur 4G/5G

Les plans d’adressage privés

Afin de résoudre ce problème d’usage d’adresses IP, une norme a été créée : la RFC1918. Pour faire simple, cette norme permet de définir trois plan d’adressage qui ne pourront plus être routés sur Internet et donc utilisable sur tous les réseaux locaux du monde sans jamais être vu en double ! Ces plans d’adressage sont :

  • 10.0.0.0 à 10.255.255.255 (soit 10.0.0.0/8)
  • 172.16.0.0 à 172.31.255.255 (soit 172.16.0.0/12)
  • 192.168.0.0 à 192.168.255.255 (soit 192.168.0.0/16)

Du coup, vous allez me dire : Mais si ces adresses ne sont pas routés vers Internet, comment un PC avec cette adresse IP fait-il pour aller sur Internet ?

Le NAT/PAT

Le NAT/PAT (Network Address Translation / Port Address Translation) est un protocole qui permet d’avoir de nombreux équipements sur votre réseau local avec chacun une IP dans le plan d’adressage privé, mais d’avoir une seule et unique adresse IP Publique quand vous sortez sur Internet ! Ce schéma présente assez bien le principe de sortie des vos équipements locaux vers Internet :

  • Save

Le protocole NAT/PAT vous offre aussi la possibilité de faire le chemin inverse, et c’est ce qui nous intéresse ! Nous souhaitons accéder à une machine situé dans notre réseau local, mais comment faire vu que les IP locales ne sont pas routés sur Internet ?

Nous devons créer une « translation d’adresse » afin de spécifié à notre routeur que lorsque l’on souhaite joindre notre IP publique sur le port 80 (HTTP) on est redirigé vers le port 80 de notre machine qui héberge Jeedom par exemple.

Si vous souhaitez approfondir vos compétences sur le NAT/PAT je vous recommande de regarder cette vidéo explicative très complète :

Le CGNAT de votre opérateur 4G/5G

Quézako ? Le CGNAT (Carrier Grade Network Address Translation) est une technologie utilisé par les opérateurs pour faire des économies d’adresse IP publique, étant donné le grand nombre d’équipement mobiles sortants sur Internet.

Pour faire simple, vos équipements n’ont pas directement une IP publique. Une multitude de terminaux mobiles possèdent des IPs dans un plan d’adressage opérateur (généralement une IP dans la RFC6598) et c’est l’opérateur qui fait le NAT pour vous. Ceci permet à l’opérateur d’avoir des centaines d’équipements qui ne consomment qu’une seule IP.

Et voilà la raison de notre problématique : nous n’avons pas la main sur la configuration NAT / PAT de l’opérateur et nous ne pouvons donc pas redirigé les connexion HTTP sur notre IP publique vers notre serveur Jeedom. Impossible pour nous d’accéder à notre serveur a distance…

Comment contourner le problème pour accéder à notre Jeedom avec une Box 4G ?

Si vous n’utiliser que Jeedom avec une Box 4G, et que vous n’êtes pas super technique, les équipes de Jeedom ont mis en place une offre d’accès à distance simplifié. Pour quelques euros, vous avez un accès rapide, avec peu de complexité de mise en place et vous soutenez le projet. Cette offre est disponible ici pour les utilisateurs connectés.

Pour ceux qui aiment mettre les mains dans le cambouis et/ou si vous avez d’autres services que vous souhaitez mettre en ligne, voici ce dont nous avons besoin :

  • Un serveur VPS : Vous en trouverez facilement pour quelques euros par mois. Je vous recommande de l’installer avec une distri Ubuntu ou Debian
  • Un nom de domaine : C’est optionnel, mais c’est quand même plus la classe qu’une IP publique
  • De quelques notions d’utilisation de la CLI Linux.

Commençons par monter une session VPN entre notre Jeedom et notre VPS

La première étape consiste a monter une session VPN entre votre serveur Jeedom et votre VPS. Cette session va simuler un réseau local entre votre serveur local et votre VPS comme si ils étaient au même endroit. Je vous recommande d’utiliser le logiciel VpnCloud, il est très simple a mettre en place et permet des montages de session unidirectionnel, je m’explique : seul le VPS a une IP Publique Fixe, donc c’est toujours le serveur Jeedom qui initiera la session VPN jamais l’inverse.

Installation de VPNCloud

Cette étape est a effectué de la même manière sur votre serveur Jeedom et sur votre VPS, n’oubliez pas d’utiliser un utilisateur avec des droits sudo :

echo "deb https://repo.ddswd.de/deb stable main" | sudo tee /etc/apt/sources.list.d/vpncloud.list
wget https://repo.ddswd.de/deb/public.key -qO - | sudo apt-key add
sudo apt update
sudo apt install vpncloud

Configuration de VPNCloud sur notre serveur Jeedom

Maintenant que le service est installé, nous allons pouvoir se lancer dans la configuration. Pour ça on lance la commande suivante :

Un menu textuel apparait alors, sélectionnez « New Network » :

  • Save

On vous demande ici de renseigner un nom de réseau, dans mon exemple j’ai mis « domotique », appuyez sur « Entrée »

  • Save

Plusieurs modes de configuration vous sont proposés, je vous conseil de sélectionner « simple » puis « Entrée »

  • Save

On vous demande ici de renseigner l’adresse du peer. C’est ici que vous devez renseigner l’IP publique de votre serveur VPS

  • Save

Il faut renseigner ensuite un mot de passe, c’est le mot de passe qui va être échangé entre votre serveur Jeedom et votre VPS. Comme tout mot de passe, je vous conseil d’en généré un unique et complexe. Une demande de confirmation du mot de passe vous sera demandé.

  • Save

Il vous est demandé ensuite de renseigner une adresse IP virtuelle, je met la même que celle proposé. Il n’y aura pas de « superposition » de réseaux, car chez moi le serveur Jeedom est adressé en 192.168.1.X.

  • Save

On confirme ensuite la bonne configuration en appuyant sur la touche « Entrée »

  • Save

Pareil, on valide la sauvegarde de configuration :

  • Save

L’assistant se termine et vous affiche une liste de commande qui vont bien :

  • Save

Plus que deux commandes à rentrer sur votre serveur. On lance le VPN :

sudo service vpncloud@domotique start

Et on l’ajoute en temps que service pour qu’il se relance tout seul en cas de coupure ou de redémarrage.

sudo sysctl enable vpncloud@domotique

Si la commande précédente ne fonctionne pas, essayez celle-là :

sudo systemctl enable vpncloud@domotique

Configuration de VPNCloud sur notre VPS

Le configuration est la même que pour le serveur Jeedom, mais quelques paramètres vont différés :

  • Le champ : Peer addresses (comma separated) doit rester vide
  • Le champ : Virtual IP address (e.g. 10.0.0.1, leave empty for none) doit prendre la seconde adresse du réseau virtuel : 10.0.0.2

Et on lance ensuite les commandes ci-dessus pour démarrer le VPN et de l’ajouter au démarrage.

Quelques vérifications …

Sur vos deux serveurs vous pouvez vérifier le statut de vos VPN avec la commande suivante :

sudo service vpncloud@domotique status

Normalement vous devriez avoir un résultat similaire :

  • Save

Je vous recommande de tenter aussi quelques pings. Depuis votre VPS :

Et depuis votre serveur Jeedom :

Testez éventuellement une connexion SSH depuis votre VPS vers votre serveur Jeedom avec une Box 4G :

Si toutefois vous rencontrez des difficultés, je vous invite à lire cette page (documentation officielle) qui vous donnent quelques « tips » pour tenter de debugguer.

Mise en place du reverse proxy avec votre nom de domaine

Personnellement je préfère retenir un nom de domaine plutôt qu’une IP, et c’est cette solution que je vais présenter ici. J’ai acheté un domaine « .ovh » chez OVH, ça permet d’avoir un domaine pas cher (3€ par an) et suffisant pour nos besoins !

Redirection du nom de domaine vers mon serveur VPS

Dans cette première étape, il faut redirigé notre nom de domaine – ou un sous-domaine- vers notre serveur VPS. Les actions que je vais vous montrer ci-après, sont réalisée sur l’espace client d’OVH. Si vous utilisez un autre hébergeur pour vos NDD la manipulation est sensiblement la même.

Tout d’abord il faut se rendre sur la page de configuration de votre domaine :

  • Save

 

Puis se rendre dans l’onglet « Zone DNS ». Deux solutions se présentent à vous :

Si vous utilisez votre Nom de Domaine au complet

Vous devez modifier le champ « A » associé à votre domaine pour l’associer à l’IP de votre VPS

  • Save

Renseignez l’IP de votre VPS dans la partie « Cible » puis cliquez sur Suivant

  • Save

Confirmez le changement en cliquant sur « Valider »

  • Save

Si vous utilisez un sous-domaine

Sur la page Zone DNS de votre domaine, cliquez sur « Ajouter une entrée »

  • Save

Cliquez sur le « A » dans la partie « Champ de pointage »

  • Save

Renseignez dans le champs « Sous-domaine » le sous-domaine de votre choix, ici, j’ai mis « domotique » et dans « Cible » renseignez l’adresse IP de votre serveur VPS. Puis cliquez sur « Suivant »

  • Save

Enfin, confirmez vos actions en cliquant sur « Valider »

  • Save

Installation et configuration de Nginx pour le reverse proxy

Installation de Nginx

L’installation de Nginx est assez simple, il suffit de passer les commandes suivantes :

sudo apt-get update
sudo apt-get install nginx

Lancez le service grâce à la commande suivante :

Je vous recommande aussi de passez la commande suivante pour lancer le service Nginx au démarrage :

Configuration de Nginx pour l’accès au serveur Jeedom avec une Box 4G

Il faut éditer le fichier de configuration avec nano à l’aide de la commande suivante :

sudo nano /etc/nginx/conf.d/default.conf

Et copier la configuration suivante dedans : (il faudra adapté les valeurs entre étoiles *** par vos paramètres)

server {
        server_name ***domotique.mondomaine.ovh***;
        location / {
                proxy_pass http://***10.0.0.1:80***;
        }
}

Vous sauvegardez vos modifications, vous testez votre syntaxe avec la commande suivante :

Vous redémarrez le service Nginx :

Et le tour est joué !

Et si on passait en HTTPS ?

Si vous comptez pouvoir utiliser le plugin Telegram un jour, je vous conseille de bien appliquer cette étape ! On va le faire très simplement et gratuitement grâce au projet Let’s Encrypt et au Certbot ! Commençons par l’installation :

apt-get update
sudo apt-get install certbot
apt-get install python3-certbot-nginx

Il n’y a plus qu’à passez la commande suivante, et tout se fait automatiquement :

Comment configure t-on Jeedom avec une Box 4G?

Toutes nos configurations réseaux sont maintenant terminée, Il reste cependant un dernier point : la configuration de Jeedom. Elle va être assez simple mais elle est cependant nécessaire !

Rendez-vous dans le menu Réglages -> Système -> Configuration

  • Save

Dans le sous menu, cliquez sur Réseaux

  • Save

Dans la section « Accès externe » on sélectionne HTTPS et on renseigne notre nom de domaine (ou sous-domaine). On remarquera que notre interface VPNCloud configuré précédemment apparait bien dans la liste des interfaces IP : vpncloud0.

  • Save

Pensez bien à sauvegarder !

  • Save

Et la configuration est maintenant terminée !

Pour conclure…

Vous avez pu remarquer que cette configuration est plutôt complexe et nécessite d’avoir quelques notions d’informatique. C’est pourquoi, encore une fois, je vous recommande chaudement d’utiliser l’offre payante Jeedom DNS qui permettra simplement et rapidement de mettre en place le même service.

Vous avez aussi pu constater que le 2FA (la double authentification) ne fonctionne pas. Ce problème est lié a deux paramètres :

  • Même lorsque l’on se connecte a distance, on arrive sur notre serveur Jeedom via une IP locale 10.0.0.X (vpncloud0).
  • Jeedom ne propose pas le service 2FA aux connexions locales.

Pour finir, n’hésitez pas à partager cet article autour de vous, d’utilisez les boutons de partage sociaux, et de commander vos articles en utilisant mes liens sponsorisés : ça ne vous coute rien de plus mais ça permet de gagner quelques euros pour faire vivre le site. Merci à tous !

1 commentaire

Super intéressant. Tuto très bien fait enfin une solution pour moi qui habite la montagne et la seule solution c’est une connexion 4G. Vu que je consomme beaucoup d’internet j’ai un routeur RUTX12 Teltonika double SIM avec deux cartes de 200Go. Malgré un tuto super bien fait je pense que je vais suivre le conseil et prendre le solution JEEDOM. Encore merci pour le tuto !

Laisser un commentaire