La question "Comment accéder à mon LAN de l'extérieur ?" est souvent posée...
En 4G, et contrairement à l'ADSL, on est généralement pas connecté directement à internet.
Saufs exceptions (airmob, ...), on est connecté au réseau privé de l'opérateur et c'est lui qui route vers internet.
Pour cette raison, il n'est pas possible d'ouvrir un port vers l'extérieur pour établir une connexion entrante.
Par ailleurs, l'adresse publique qu'on a (et qui est vue par les sites sur lesquels on se connecte) est partagée par d'autres clients de l'opérateur. Ainsi, le routeur 4G n'a pas d'adresse publique internet : l'opérateur lui attribue une adresse WAN qui est généralement une adresse IP privée de classe A (10.x.x.x).
Si on veut accéder à certains équipement de son LAN, plusieurs techniques sont utilisables :
- établir un VPN (on un tunnel reverse-ssh) entre une machine de son LAN et une machine accessible depuis internet qu'on maitrise entièrement (pour ouvrir les ports). Cela exlut bien-sûr les VPN d'anonymisation style NordVpn, SaferVpn, ...
- utiliser ngrok qui utilise sensiblement le même principe que le VPN.
Dans ce tuto, je ne parlerai que de la solution ngrok qui est extrêmement simple à mettre en œuvre. Pour le VPN ou le reverse-ssh, ce sera un autre tuto.
Principe :
1- Une machine de son LAN utilise le client ngrok pour établir une connexion avec un server ngrok. On lui indique quel équipement doit être accessible de l'extérieur.
2- Pour accéder à la machine de son LAN, on se connecte au serveur ngrok avec une url spéciale. Le routage est alors effectuée entre le serveur et le client ngrok.
Pour mettre en œuvre cette solution, il faut :
1- Créer un compte sur ngrok
2- Installer le client ngrok sur une machine de son LAN. Cette machine peut être un PC, un Mac, un Raspberry Pi, ... Dans ce tuto, j'utiliserai un Raspberry Pi, mais les instructions sont facilement transposables à un autre PC/OS.
A- Créer un compte ngrok
C'est ici que ça se passe.
Une fois que c'est fait, on se retrouve sur son tableau de bord.
On y retrouve l'authtoken que nous allons utiliser plus loin ainsi-que les liens de téléchargement du client.

B- Installer le client
On commence par télécharger, et dézipper le client ngrok :
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip # Utiliser l'URL du tableau de bord
unzip ngrok-stable-linux-arm.zip
rm ngrok-stable-linux-arm.zip
Ensuite, on configure son authtoken pour que ngrok sache qui on est (remplacer les xxx par la valeur qui est affichée sur le tableau de bord) :
./ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On lance le client en indiquant quelle est la machine (et le port) à rendre accessible de l'extérieur :
Par exemple, si j'ai un serveur web qui tourne sur un PC dont l'adresse IP est 192.168.0.100, je tape :
./ngrok http 192.168.0.100:80
Le client affiche :

Sur cet écran, on trouve l'url à utiliser de l'extérieur pour accéder à la machine de son LAN :
http://63c403de.ngrok.io
Avec le plan gratuit de ngrok, cette url change à chaque lancement. Pour avoir une url fixe, il faut prendre un plan payant...
Accéder à son équipement de l'extérieur
Pour finir, il suffit d'entrer cette url dans son navigateur :D
C'est peut être inutile de le préciser, mais l'accès extérieur ne fonctionne que quand le client ngrok est lancé ;)
Si ce genre de post vous plait, n'oubliez pas de le promotionner pour que j'en fasse d'autres !