Accueil Divers
routeur4g.fr est financé par ses lecteurs. Quand vous achetez en passant par les liens du site, nous pouvons toucher une commission d’affiliation.

[TUTO] Accéder à son LAN derrière un routeur 4G, depuis l'extérieur, avec ngrok

oga83oga83 Membre Messages: 1121
Modifié (janvier 2020) dans Divers
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<br>unzip ngrok-stable-linux-arm.zip<br>rm ngrok-stable-linux-arm.zip<br>
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<br>
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 !
Message edité par pioc34 on
«13

Réponses

  • yyvon66yyvon66 Membre Messages: 929
    bonjour,
    intéressant, mais pour résumer : pour une url fixe, il faut un plan payant, 5$ mensuel, ça remplace un routeur adsl,  mais, et c'est le hic, "l'accès extérieur ne fonctionne que quand le client ngrok est lancé"
    donc PC éteinds, on a rien , c''est bien cela ?
    dommage, ça aurait pu m'intéresser,
    bonne journée
    a+

  • oga83oga83 Membre Messages: 1121
    yyvon66 a dit :
    "l'accès extérieur ne fonctionne que quand le client ngrok est lancé"
    donc PC éteinds, on a rien , c''est bien cela ?
    C'est bien cela.
    Que ce soit avec un VPN, reverse-ssh, ngrok ou autre, il faut qu'un équipement du LAN ouvre un tunnel vers l'extérieur. C'est ce tunnel qui permettra de faire des connexions entrantes.
    Un simple Raspberry Pi (à ~32€ et qui ne consomme rien) fait l'affaire pour ça :smile: 

    Le plan payant ngrok à 5€ peut être remplacé par un serveur dédié Scaleway à 3,6€ qui permet également d'avoir un VPN (pas d'anonymisation, juste pour éviter les bridages opérateurs 4G). C'est juste un peu plus compliqué à mettre en place.

    J'essaierai de faire un tuto reverse-ssh/Scaleway prochainement.
  • laurentmlaurentm Membre Messages: 3
    La solution que j'utilise est TRES différente :

    Sur un site qui a une connexion quelconque avec ip fixe (Orange adsl pro ou fibre par exemple), j'ai un routeur Bintec (cette marque est la seule, à ma connaissance) qui accepte d'établir un tunnel vpn ipsec en n'ayant pas d'ip fixe des deux côtés), sur l'autre site (qui a le routeur 4G Huawei), je forwarde les ports ipsec vers un routeur (qui peut être un deuxième Bintec ou un PF-Sense, ou autre modèle qui fait du vpn ipsec).
    Le tunnel est initié donc depuis l'ip dynamique de la 4G, l'autre routeur (avec ip fixe) est en attente de connexion ipsec entrante, pas besoin de choses comme DYNDNS qui est devenu payant et bien trop cher.
    Pour me connecter depuis un endroit quelconque, je peux établir une connexion VPN PPTP vers le Bintec qui a l'ip fixe et ensuite j'ai accès au réseau qui est derrière l'autre routeur 4G (en traversant par le tunnel ipsec).
    Le seul défaut est que Bintec ne supporte pas OpenVPN (alors que PFSense le fait) et que PPTP est maintenant déprécié pour raison de sécurité insuffisante (mais je n'ai jamais vu personne avoir de ransomware dû à une faille PPTP).

    Mon système fonctionne bien avec des postes voip SIP déportés de l'IPBX FreePBX. Il faut juste parfois éteindre et rallumer le Huawei 4G et le routeur qui est derrière lui avant de commencer la journée de travail.

    C'est très agréable avec les postes voip SIP SNOM d'avoir les touches programmables qui s'allument quand les autres utilisateurs sont en ligne sur des sites différents (n'importe où dans le monde entier, du moment qu'ils ont de l'internet haut-débit).
  • yanboyanbo Membre Messages: 504
    Modifié (septembre 2019)
    Bonsoir,
    @Laurentm ,
    la solution que tu décris est un vpn lan to lan. Mais les sites ne sont pas accessible depuis internet. (Sauf en rentrant dans le vpn )
  • oga83oga83 Membre Messages: 1121
    @laurentm
    Je dirais plutôt qu'elle est identique dans le principe : un tunnel sortant est établi vers une machine "amie".
    Ce principe est également utilisé avec le reverse ssh : https://routeur4g.fr/discussions/discussion/1882/tuto-acceder-a-son-lan-derriere-un-routeur-4g-depuis-lexterieur-avec-ssh#latest
  • BoxterBoxter Membre Messages: 59
    bonjour a tous 
    Etant en approche pour l’acquisition du routeur B715 je voulais faire un essaie pour voir comment je dois faire si j'ai des soucis pour la redirection de ports ,j'ai partager la co de mon tel  pour réaliser se test je sais pas si c’était l'idée du siècle vous me direz sa ...je précise je suis sur windows 10 , j'ai suivis le tuto qui est conseiller par @oga83 mais le soucis quand j'essaie de me connecter a l'url pour acceder la machine elle me met ceci .je fait surement un truc qui vas pas mais je sais pas quoi.....

    bonne soirée a tous 

  • oga83oga83 Membre Messages: 1121
    Modifié (octobre 2019)
    Boxter a dit :
    mais le soucis quand j'essaie de me connecter a l'url pour acceder la machine elle me met ceci
    Ici, on devine que la redirection se fait sur le port 80 :
    Le serveur web est bien lancé sur la machine locale ?
    Cette URL est accessible dans un navigateur sur téléphone  ?

  • BoxterBoxter Membre Messages: 59
    Bonsoir @oga83

    Oui cest sa j'ai test le 80 

    J'ai test sur tel et sur le pc et même résultat, quand tu dit le serveur web tu veux dire le client ngrok ? 
  • oga83oga83 Membre Messages: 1121
    Modifié (octobre 2019)
    @Boxter Il faut que tu détermines précisément ce que tu veux faire et pourquoi tu veux ouvrir un ou des ports.
    Là, tu donnes accès de l'extérieur au port 80 (http) d'une machine sur ton LAN.
    Pour que cela fonctionne, il faut que cette machine réponde sur ce port.
    Dans ce cas précis, il faut qu'un serveur web tourne sur cette machine. Si ce n'est pas le cas, l'url ne fonctionnera ni de ton téléphone, ni d'un autre PC sur ton LAN et encore moins à partir de l'extérieur.
    Le client ngrok permet juste de faire le routage entre l'extérieur et une machine/port sur ton LAN. C'est exactement comme si tu ouvrais un port sur une box ADSL : il faut que le port de la machine LAN soit opérationnel.
  • BoxterBoxter Membre Messages: 59
    @oga83 haa oui je comprend mnt la faute que j'ai fait,faut que le port qu'on ouvre soit utilisé par ma machine autrement sa ne marche pas c'est bien sa ? 
    Parce que en fait j'ai fait sa juste pour test 
  • oga83oga83 Membre Messages: 1121
    @Boxter Oui
  • BoxterBoxter Membre Messages: 59
    @oga83 un grand merci de ton aide 👍 
  • BoxterBoxter Membre Messages: 59
    Bonjour @oga83,

    Petit question elle est peut être bête mais je me lance quand on ouvre le port est ce que le port fait a la fois tcp et udp ? 
  • oga83oga83 Membre Messages: 1121
    Côté WAN, il me semble que ngrok ne fonctionne qu'en TCP mais je n'en suis pas sûr à 100% (quand j'avais regardé, UDP était en projet).
    Côté machine LAN, le port peut être ouvert en UDP, TCP ou les 2 : ça dépend uniquement de l'application qui ouvre le port.
  • BoxterBoxter Membre Messages: 59
    @oga83 un grand merci de ta réponse 😉 

  • Wolfen38Wolfen38 Membre Messages: 36
    Salut à tous, 

    J'ai du raté quelques choses....

    Ma config, une freebox avec redirection de port vers un routeur, qui lui même à une redirection vers mon raspberry.

    J'ai suivi le tuto pour installer ngrok sur mon rasp, mais quand je tape l'url, j'ai ca : 3029ffb2.ngrok.io a mis trop de temps à répondre

    et pas d'accès.

    J'ai raté quoi ?
  • oga83oga83 Membre Messages: 1121
    @Wolfen38 ça manque un peu de détails pour pouvoir t'aider
    Quelle est la commande ngrok ? quelle redirection souhaites-tu faire ?
    Le fait qu'il y ait une redirection de ports sur la Freebox et un routeur n'a rien à voir : ngrok ne fait qu'une connexion sortante chez toi. La connexion entrante de ngrok se fait sur leur serveur.
  • Wolfen38Wolfen38 Membre Messages: 36
    Modifié (octobre 2019)
    Mon but final est d'utiliser une box 4G free avec un routeur xiaomi derrière. et comme les box 4G n'autorise pas l'accès distant, c'était pour ca que je regardais ngrok qui semblait correspondre à mon besoin.

    Pour le moment, j'ai encore mon routeur branché sur une freebox, et j'ai suivi le tuto pour installer ngrok sur mon raspberry qui est branché en ethernet derrière mon routeur.

    Et quand je rentre l'url donné au lancement de ngrok, ca me dit "Tunnel xxxxxxx.ngrok.io not found"

    en fait j'avais oublié le port 80, maintenant ca me dit :
    "La connexion à http://af36a142.ngrok.io/">xxxxx.ngrok.io a été tunnelée avec succès vers votre client ngrok, mais le client n'a pas réussi à établir une connexion à l'adresse locale xxx.xxx.xxx.xxx:80 .

    Assurez-vous qu'un service Web est en cours d'exécution sur xxx.xxx.xxx.xxx:80 et qu'il s'agit d'une adresse valide.

    L'erreur rencontrée était la suivante: dial tcp xxx.xxx.xxx.xxx:80: connect: connexion refusée"


    En gros c'est le même soucis que la personne qui a répondu un peu plus haut, mais je n'ai pas compris la solution......

  • oga83oga83 Membre Messages: 1121
    Le message est assez clair : Tu as demandé une redirection du port 80. Il faut donc un serveur web qui répond sur le port 80 de la machine LAN.
    Si tu veux faire de l'accès distant (rdp, vnc, ...), il faut ouvrir le port correspondant (3389 pour rdp, 5900 pour vnc, ...).
  • Wolfen38Wolfen38 Membre Messages: 36
    Moi je veux juste accéder à mon raspberry ou est installé ngrok pour controler ma domotique et avoir accès a mes caméras ip
  • JeanMarieJeanMarie Membre Messages: 2782
    Modifié (octobre 2019)
    Teamviewer
    Je complète
    Soit tu as un serveur web sur ton raspi et dans ce cas tu peux utiliser ngrok, il faut juste savoir sur quel port il repond
    Soit tu as une application ou une commande que tu lances depuis l'ecran de ton raspi et dans ce cas il te faut un truc du style prise de controle a distance comme teamviewer
  • Wolfen38Wolfen38 Membre Messages: 36
    Bah moi j'ai juste suivi le tuto, mais j'ai pas du tout comprendre.

    En fait, je ne pense pas avoir de serveur web sur mon rasp, enfin j'imagine (vu que je sais meme pas ce que c'est).

    Pour le moment, avec la freebox, je pouvais accéder à ma domotique juste avec des redirections de port sur la freebox et le routeur, et comme pas possible avec la box 4G, j'avais essayé ce tuto mais j'ai pas vu ou ca expliquait l'histoire du serveur web

  • oga83oga83 Membre Messages: 1121
    Modifié (octobre 2019)
    Wolfen38 a dit :
    Pour le moment, avec la freebox, je pouvais accéder à ma domotique juste avec des redirections de port sur la freebox et le routeur, et comme pas possible avec la box 4G, j'avais essayé ce tuto mais j'ai pas vu ou ca expliquait l'histoire du serveur web
    Tu n'as toujours pas précisé quels ports tu voulais rediriger, comment tu accédais à ta domotique, ni la commande ngrok que tu utilisais. Le tuto montre comment accéder à un serveur web du LAN. C'est juste un exemple.
    Si tu veux accéder à un autre service (vnc, domotique, ...) avec une redirection de port différente, il faut ajuster la commande ngrok. Par exemple, pour accéder à un VNC sur le port 5900 de la machine 192.168.1.99, il faut utiliser la commande :
    192.168.1.99:5900
    ngrok -proto=tcp 

  • oga83oga83 Membre Messages: 1121
    Modifié (octobre 2019)
    JeanMarie a dit :
    Soit tu as un serveur web sur ton raspi et dans ce cas tu peux utiliser ngrok, il faut juste savoir sur quel port il repond
    ngrok permet d'accéder à n'importe quel port d'une machine sur le LAN. Le tuto explique l'accès à un serveur web mais c'est juste un exemple.
    Le résultat est le même qu'avec une redirection de port sur une box ADSL : on indique le port et l'IP de la machine sur le LAN et le client ngrok effectue le routage.
    Bien entendu, il faut qu'il y ait un service qui réponde sur la machine:port demandée...
  • BoxterBoxter Membre Messages: 59
    bonjour a tous 
    est ce possible de faire de la redirection de port pour la avec ngrok ?
  • oga83oga83 Membre Messages: 1121
    Boxter a dit :
    bonjour a tous 
    est ce possible de faire de la redirection de port pour la avec ngrok ?
    Pour la quoi ?
    Voir mes 2 derniers posts
  • BoxterBoxter Membre Messages: 59
    oups dsl j'ai oublier de mettre le plus important pour la ps4 ?
  • oga83oga83 Membre Messages: 1121
    Modifié (octobre 2019)
    Si la PS4 peut fonctionner en TCP, la réponse est oui.
    Si une redirection UDP est indispensable, je n'en suis pas sûr, la réponse est non.
  • BoxterBoxter Membre Messages: 59
    il y a bien des port en tcp comment devrais je faire ?
  • oga83oga83 Membre Messages: 1121
    Modifié (octobre 2019)
    Déjà expliqué ici :
    ngrok tcp IP:Port
    Utiliser l'IP de la PS4 et le n° de port à rediriger
    S'il y a plusieurs ports à rediriger, il faut utiliser un fichier de configuration. Exemple ici.
    La documentation détaillée de ngrok pour les tunnels multiples est ici.
Connectez-vous ou Inscrivez-vous pour répondre.