Salut !
Pour exposer un port de ton équipement en étant sur une connexion 4G, une solution simple et souvent sous-estimée est la mise en place d'un tunnel SSH inversé (reverse SSH). Cette technique est particulièrement efficace si tu as seulement quelques ports à exposer. Le principe est de créer un tunnel entre ton équipement et un serveur VPS (Virtual Private Server), ce qui te permet d'accéder à ton équipement depuis l'extérieur sans avoir à configurer le NAT ou ouvrir des ports sur un routeur, ce qui est souvent impossible ou très compliqué avec une connexion 4G.
Tu peux trouver des offres de VPS à environ 20€ par an, offrant à la fois des adresses IPv4 et IPv6, ce qui est largement suffisant pour ce type d'usage. L'avantage de cette méthode est qu'elle ne nécessite pas de configuration complexe du réseau et offre une bonne sécurité, car tu peux limiter les accès via SSH et utiliser des clés pour une authentification sécurisée.
En résumé, en établissant un tunnel reverse SSH à partir de ton équipement vers un VPS, tu pourras accéder à tes services depuis l'extérieur en utilisant l'adresse IP du VPS. C'est une solution élégante, sécurisée, et peu coûteuse pour contourner les limitations d'une connexion 4G.
Je vais te donner un exemple de configuration pour exposer le port 80 de ton équipement local (le "client") sur Internet via un serveur VPS (le "serveur"), en utilisant autossh pour maintenir le tunnel SSH inversé. L'utilisation de autossh permet de garder le tunnel actif de manière fiable, même en cas de déconnexion ou de redémarrage.
Côté Serveur VPS :- Installation d'autossh (si ce n'est pas déjà fait) sur ton équipement local. Sur un serveur, autossh n'est pas nécessaire puisque tu vas configurer le tunnel depuis le client.
- Configuration de SSH : Assure-toi que le SSH est installé et que le service est actif. Sur la plupart des systèmes basés sur Debian, tu peux vérifier cela avec sudo systemctl status ssh.
- Création d'un utilisateur SSH spécifique (optionnel) : Pour des raisons de sécurité, il peut être judicieux de créer un utilisateur spécifique pour le tunnel SSH.
- Configuration de redirection de port : Aucune configuration spécifique n'est nécessaire sur le serveur pour la redirection de port si tu utilises un tunnel SSH. Le client s'en chargera.
Côté Client (Ton équipement local)Installation d'autossh :
Sur Ubuntu/Debian :
sudo apt-get install autossh
Sur CentOS :
sudo yum install autossh
Génération d'une paire de clés SSH (si tu n'en as pas déjà) pour permettre une connexion sans mot de passe :
ssh-keygen -t rsa -b 2048
Appuie sur Entrée pour toutes les questions afin d'utiliser les options par défaut. Cela crée une paire de clés dans le répertoire ~/.ssh.
Copie de la clé publique sur le serveur :
ssh-copy-id ssh_tunnel_user@<IP_DU_SERVEUR>
Remplace <IP_DU_SERVEUR> par l'adresse IP de ton serveur VPS.
Création du tunnel SSH inversé avec autossh :
Utilise la commande suivante pour créer un tunnel. Cette commande redirige le port 80 de ton serveur vers le port 80 de ton équipement local.
autossh -M 0 -f -N -T -R 80:localhost:80 ssh_tunnel_user@<IP_DU_SERVEUR> -o ServerAliveInterval=30 -o ServerAliveCountMax=3
-M 0 : désactive le monitoring d'autossh par un port spécifique et utilise à la place les options ServerAliveInterval et ServerAliveCountMax de SSH pour garder la connexion active.
-f : demande à autossh de se mettre en arrière-plan juste avant l'exécution de la commande.
-N : indique à SSH de ne pas exécuter une commande distante.
-T : désactive l'allocation d'un pseudo-terminal.
-R 80:localhost:80 : crée une redirection de port qui écoute sur le port 80 du serveur, et redirige tout trafic vers le port 80 de ton équipement local.
ServerAliveInterval=30 et ServerAliveCountMax=3 : autossh vérifiera que la connexion est active toutes les 30 secondes et essaiera de reconstruire le tunnel 3 fois si nécessaire.
Voila Voila !